51单片机串口收发例程
本次例程将要达到的效果:从电脑上通过串口发送一个数据到单片机,单片机再原封不动的发回电脑。
硬件电路:
在Proteus中搭建出这样的电路图:
使用虚拟串口软件添加一对串口。
将COMPIM组件的波特率设置为9600,并设置好端口。
同样的,将虚拟终端的波特率设置为9600,单片机晶振频率为11.0592MHz。
软件代码:
#include <reg51.h> unsigned char a,flag; void main(void) { SCON = 0x50;//设置串行口工作方式1,接收控制打开 TMOD |= 0x20;//定时器1设置工作方式2 TH1 = 0xFD;//设置波特率为9600,数据位8,停止位1,无校验位,晶振频率11.0592M TL1 = 0xFD; TR1 = 1;//启动定时器1 EA = 1;//开总中断 ES = 1;//开串行中断 while(1) { if(flag==1) { ES = 0;//关闭串行中断 flag = 0; SBUF = a;//再把数据原样发回 while(!TI);//等数据发完 TI = 0; ES = 1;//开串行中断 } } } void receive() interrupt 4 { a = SBUF;//把收到的数据给a flag = 1; RI = 0;//接收标志清零 }
仿真效果
在Proteus软件里运行仿真。
在串口助手这类软件里发送“hello”,注意设置串口号和波特率。
然后即可在Proteus的虚拟终端中看到单片机转发出来的文本。