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;
}