微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 89C52单片机串行通信编程两则

89C52单片机串行通信编程两则

时间:04-07 来源:互联网 点击:

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;

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top