当前位置:首页 > 单片机 > 单片机
[导读]//-------------------------------------------------------------------------------------------------------------------//程序名称:串口通信程序//功能:实现单片机与PC之间的串口通信,PC向单片机发送,单片机

//-------------------------------------------------------------------------------------------------------------------

//程序名称:串口通信程序

//功能:实现单片机与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等等 ,读懂了他们的作用自热而然的就知道怎么用了。查资料很重要


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭