這是一個簡單的用查詢發(fā)的串口通信程序,能吧串口收到的數(shù)據(jù)馬上回發(fā)過去。希望讀初學(xué)者有用.
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void init()
{
TMOD=0x20;//定時器1方式2作為波特率發(fā)生器
TH1=0XF3; //裝初值 波特率為4800bps的初值
TL1=0XF3;
TR1=1; //啟動定時器1
SCON=0X50; //設(shè)置串口工作方式為方式1
PCON=0X80; //加倍波特率后為4800
TI=0;//清發(fā)送中斷標志位
RI=0;//清接收中斷標志位
}
void main()
{
uchar temp;
init();
while(1)
{
for(;RI==0;); //或者while(!RI);RI為0數(shù)據(jù)沒接收完,一直循環(huán)等待
RI=0;
temp=SBUF;//CPU讀入數(shù)據(jù),并非SUBF接收數(shù)據(jù),接收數(shù)據(jù)由接收SBUF接收緩存器自動執(zhí)行
P0=temp;
SBUF=temp;//CPU發(fā)送數(shù)據(jù)給發(fā)送SBUF,發(fā)送緩存器SBUF處理并負則向外發(fā)送
while(TI==0); // 或者while(!TI) TI為0數(shù)據(jù)沒發(fā)送完,一直循環(huán)等待
TI=0;
}
}
