89C52單片機(jī)串行通信編程兩則
1.當(dāng)89C52串行口按工作方式1進(jìn)行串行數(shù)據(jù)通信時(shí),假定波特率為1 200b/s,以中斷方式傳送數(shù)據(jù),請(qǐng)編寫全雙工通信程序。
#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.當(dāng)89C52串行口按工作方式3進(jìn)行串行數(shù)據(jù)通信時(shí),假定波特率為1 200b/s,第9位數(shù)據(jù)作奇偶校驗(yàn)位,以中斷方式傳送數(shù)據(jù),請(qǐng)編寫通信程序。
#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;
}
編輯:admin 最后修改時(shí)間:2018-05-18