c51串口通信程序
扫描二维码
随时随地手机看文章
//-------------------------------------------------------------------------------------------------------------------
//程序名称:串口通信程序
//功能:实现单片机与PC之间的串口通信,PC向单片机发送,单片机返回PC所发的内容
//硬件连接:单片机的P3.0 P3.1经max232电平转化后与PC串口相连
//测试情况:本程序已经由我亲自上机测试,确保无误
//-------------------------------------------------------------------------------------------------------------------
#include
#define uint unsigned int
#define uchar unsigned char
uchar num,flag;
void main()
{
TMOD=0X20;//设置定时1为工作方式2
TH1=0XFD;//设置定时器初始值
TL1=0XFD;
TR1=1; //启动定时器
SCON=0X50;
EA=1;//开总中断
ES=1;//开串口中断
while(1)
{
if(flag==1) //flag为标志位,当flag==1时,说明此时已经发生串口中断,也就是说此时PC已经向单片机发送了数据
{
EA=0; //为防止受影响,关闭所有中断
flag=0;//清标志位
SBUF=num;//将串口收到的值num存放在串口发送寄存器中
while(!TI); //TI是串口发送标志位,当发送完毕后,硬件自动置1,所以一般此句话的意思叫等待发送完毕
TI=0;//清发送标志位,以便下次中断后能再次发送
EA=1; //开总中断
}
}
}
void ser() interrupt 4 //中断服务子程序
{
RI=0; //RI接受标志位,为0时允许接收,接收完毕后置1
num=SBUF; //串口接收寄存器接收到的值赋给变量num
flag=1; //中断标志位置1
}
注:有时候对于新手来说,有些特殊功能寄存器或者一些 位 的操作不理解,其实只要翻开课本查一下这个是什么作用,对于程序就明白怎么写了,比如本文的 RI TI SCON SBUF等等 ,读懂了他们的作用自热而然的就知道怎么用了。查资料很重要