这是一个简单的用查询发的串口通信程序,能吧串口收到的数据马上回发过去。希望读初学者有用.
#include<reg52.h> #define uint unsigned int #define uchar unsigned char void init() { TMOD=0x20;//定时器1方式2作为波特率发生器 TH1=0XF3; //装初值 波特率为4800bps的初值 TL1=0XF3; TR1=1; //启动定时器1 SCON=0X50; //设置串口工作方式为方式1 PCON=0X80; //加倍波特率后为4800 TI=0;//清发送中断标志位 RI=0;//清接收中断标志位 } void main() { uchar temp; init(); while(1) { for(;RI==0;); //或者while(!RI);RI为0数据没接收完,一直循环等待 RI=0; temp=SBUF;//CPU读入数据,并非SUBF接收数据,接收数据由接收SBUF接收缓存器自动执行 P0=temp; SBUF=temp;//CPU发送数据给发送SBUF,发送缓存器SBUF处理并负则向外发送 while(TI==0); // 或者while(!TI) TI为0数据没发送完,一直循环等待 TI=0; } }