程序如下:
#include<reg51.h> uint num; void main() { SCON=0x50; //模式1,8位数据位,使能接收,由定时器1溢出率决定波特率,9600 TMOD=0x20; //定时器工作模式2 TH1=0xFD; //定时器初始值,决定波特率,自动重装,晶振11.0592MHz TL1=0xFD; TR1=1; //定时器1启动 EA=1; //开总中断 ES=1; //开串口中断 while(1); } void UART_SER() interrupt 4 { unsigned char Temp; if(RI) { RI=0; Temp=SBUF; //接收数据 P1=Temp; // 接口P1,显示接收的数据 SBUF=Temp; //接收的数据返回给发送者 } if(TI) { TI=0; //发送中断置0 } } |
使用虚拟串口
Proteus原理图
原理图中的串口内部包含了TLL到RS232的转换,设置如下:
调试结果