本源码是用来进行简单测试C51利用串口收发数据的小程序。在protues7.5 下通过测试。
-------------------------------------------------------------------------------------------
#include<reg51.h>
unsigned char read_data; //数据存储变量
unsigned char flag=0; //收发数据标志
void init() //串口初始化
{
TMOD=0x20; //T1工作在方式2
SCON=0x50; //串口工作在方式1,并允许接收数据
TH1=0xfd; //定时器装初值
TL1=0xfd;
TR1=1; //启动定时器
EA=1; //中断允许打开
ES=1; //允许串口中断
}
void main()
{
init();
while(1)
{
if(flag==1) //flag=1表示收到数据
{
ES=0; //防止造成串口中断进入死循环
SBUF=read_data; //发送数据
while(!TI); //判断是否发送完毕
TI=0; //软件清发送中断标志
flag=0;
ES=1;
}
}
}
void s_int() interrupt 4 //串口中断处理
{
RI=0;
read_data=SBUF; //转存接收到的数据
flag=1;
}
--------------------------------------------------------------------------------------------
说明:测试使用了,虚拟串口软件,和串口助手。虚拟串口软件虚拟了两串口:COM3,COM4。串口助手使用的是COM4,protues里的串口使用的是COM3,波特率全为9600bps.