找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1830|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机485通信实验C语言源代码实现

[复制链接]
跳转到指定楼层
楼主
ID:681267 发表于 2020-5-15 09:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <REG52.H>
#include <stdio.h>
sbit RS485=P3^7;   //定义485的使能脚
bit SendFlag;
unsigned int ReData,SenData;

/**************************************
        延时程序
**************************************/
void delay(unsigned char i)
{
    unsigned char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}


void main (void) {


        SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1                     
        TMOD|= 0x20;      //定时器工作方式2                    
        PCON|= 0x80;                                                         
        TH1  = 0xFd;     
        TL1 = 0xF3;      
        TR1  = 1;                                                            
        ES   = 1;        //开串口中断                  
        EA   = 1;        // 开总中断
   
       // IE = 0x0;
   
    while(1)
    {
   
      if (SendFlag==1)    // max485(半双工通信) RE/DE定义 RE=0为接受状态  DE=1为发送状态(参考MAX485芯片管脚)
         {   RS485=1;       //                              RS5485E=0为接收状态  RS5485E=1为发送状态
          SBUF=SenData;       //发送数据
          delay(50);
       }
     else
      {

          RS485=0;          //接收状态
      }

}

}

/****************************************************
               串口中断服务程序
******************************************************/
void ser_int (void) interrupt 4 using 1
{
if(TI == 1)
{
     TI = 0;
    SendFlag = 0;
}

if(RI == 1)        //RI接受中断标志
{
     RI = 0;            //清除RI接受中断标志
    ReData = SBUF;  //SUBF接受/发送缓冲器
    SenData=ReData;
     SendFlag = 1;
   
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:735148 发表于 2020-6-9 17:56 | 只看该作者
波特率这么设置的值是多少
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表