标题: 51单片机485通信实验C语言源代码实现 [打印本页]

作者: wanghuixiang    时间: 2020-5-15 09:38
标题: 51单片机485通信实验C语言源代码实现
#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;
   
}
}

作者: 饮酒作乐    时间: 2020-6-9 17:56
波特率这么设置的值是多少




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1