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;
}
- 基于STC89C52的智能印章机的设计方案(01-13)
- 从易到难学习单片机(单片机DIY制作、毕业设计、课程实例)(06-04)
- 初始的STC89C52RC单片机小实验(12-03)
- STC89C52单片机定时器2的使用(12-02)
- STC89C52-秒表(精确10ms)同时LED二进制计数(12-01)
- STC89C52单片机驱动CC1101无线模块的接收C语言程序(11-30)