联系方式
地 址:深圳市龙岗区南湾街道平吉大道1号建昇大厦B栋1605号(李朗软件园对面)
联系人:周工
电 话:0755-88820678
传 真:
信 箱:498187676@qq.com


欢迎新老朋友来电洽谈业务!

PCB抄板 >> 行业新闻 >> 当前位置
89C52单片机串行通信编程两则
1.当89C52串行口按工作方式1进行串行数据通信时,假定波特率为1 200b/s,以中断方式传送数据,请编写全双工通信程序。


#include <at89x52.h>
unsigned char data txbuf;
unsigned char data rebuf;
 
void main()
{
unsigned char temp;
SCON=0x50;
TMOD=0x20;
TH1=0xE8;
TL1=0xE8;
TR1=1;
ES=1;
EA=1;
}
 


void comre()
{
    rebuf=SBUF;
}   
 


void comtx()
{
    SBUF=txbuf;
}    
 


void serial_server() interrupt 4               
{
       if(TI)                     
           TI=0;
       else                       
       {
           RI=0;
           comre();                       
       }
}
 


2.当89C52串行口按工作方式3进行串行数据通信时,假定波特率为1 200b/s,第9位数据作奇偶校验位,以中断方式传送数据,请编写通信程序。
#include <at89x52.h>
unsigned char data txbuf;
unsigned char data rebuf;
 


void main()
{
unsigned char temp;
SCON=0xd0;
TMOD=0x20;
TH1=0xE8;
TL1=0xE8;
TR1=1;
ES=1;
EA=1;
}
 


void comre()
{
    ACC=SBUF;
    if(RB8==P)
        rebuf=ACC;
    else
        error();
}   
 


void comtx()
{
    ACC=txbuf;
SBUF=ACC;
    TB8=P;
}    
 


void serial_server() interrupt 4               
{
       if(TI)                     
           TI=0;
       else                       
       {
           RI=0;
           comre();                       
       }
}
 


void error()
{
    F0=1;
}
返回顶部