微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机什么情况下会产生串口中断

51单片机什么情况下会产生串口中断

时间:10-02 整理:3721RD 点击:
首先,你要用软件允许中断,
即C语言中EA = 1; 允许总中断ES = 1;
//允许串口中断汇编中可用 SETB EA ;允许总中断SETB ES ;
允许串口中断当单片机接收到一帧数据后,RI会置1,向CPU申请中断,若之前有中断允许,则产生了中断,进入中断服务程序。
当然,单片机发送完一帧数据,TI也会置1,同样会产生中断!
一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据;
接收数据时要开中断,以便你在中断服务程序中将接收到的数据进行存储并处理。


补充:其实,不管你有没有允许中断,上位机(此时即给单片机发送信息的机器)只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓冲器SBUF中,如果你之前有允许串行口中断,RI就会置1,向单片机CPU申请中断,并进入中断服务程序,做完中断函数后就会自动返回断点。如果你没有允许中断,便不会产生串行中断。其实,别的中断都是某个I/O口电平变化产生。这只是外部中断产生条件,不过,你之前也需要用软件允许外部中断。
另外,常见的51系列单片机有5个中断源三种中断5:
1、外部中断0和1;
2、定时器/计数器溢出中断0和1;
3、串行口中断。
另外,STC51系列还有定时器/计数器T2中断,A/D转换中断,PWM中断,串行中断2等等。你还有什么不懂的可以自己多翻一翻书,学到后面去了你就明白了。
中断服务程序中,那条 RI=0;是不可少的,这是用软件清零RI,准备再次接受一帧数据产生中断,如果你没有这条语句,就会进入死循环,出不来了。
void serial()  interrupt 4
{  P1=SBUF;
   RI=0;
}


学习

了解一下,学习学习谢谢

了解

学习

顶起

好文章   

学习一下

有用

嗯,很对,深有体会,我建议串行中断发和收都采用中断方式!
http://home.elecfans.com/space-312711-do-blog-id-32303.html

来看看,顺便学习下

单片机串口,中断,管脚好多啊,学不过来了

单片机串口,中断,管脚好多啊,学不过来了

分析的很好 ,很有用

好东西,,讲得很清楚,,受用了

讲的很好,正好在学习这个东西

通俗易懂                           

谢谢大神

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top