#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; } }