历史上的今天
返回首页

历史上的今天

今天是:2025年02月09日(星期日)

正在发生

2020年02月09日 | 51单片机是如何产生串口中断的

2020-02-09 来源:eefocus

首先,你要用软件允许中断,


即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;

}


推荐阅读

史海拾趣

Electro Technik Industries公司的发展小趣事

作为一家具有社会责任感的企业,ETI始终关注环保问题。公司积极推广绿色生产理念,采用环保材料和工艺进行生产。同时,ETI还投入大量资金用于环保设施的建设和运营,减少了对环境的污染。此外,ETI还积极参与社会公益活动,为环保事业贡献自己的力量。这些举措使ETI在业界树立了良好的形象,赢得了社会各界的广泛赞誉。

Exar [Exar Corporation]公司的发展小趣事

Exar公司一直注重全球布局和客户支持。公司在全球设立了多个研发基地和客户服务中心,以确保能够为客户提供及时、高效的技术支持和服务。此外,Exar还积极与全球各地的合作伙伴建立合作关系,共同推动电子行业的发展和进步。这种全球化的战略布局不仅为Exar赢得了更多的市场份额和客户信任,也为其未来的发展奠定了坚实的基础。

以上五个故事简要概述了Exar在电子行业中的重要发展历程。通过这些故事,我们可以看到Exar如何通过不断的技术创新、市场拓展和全球化战略来保持其在行业中的领先地位。

Apex Tool Group公司的发展小趣事

2017年,Exar被MaxLinear公司收购,这是Exar发展历程中的一个重要里程碑。通过合并,Exar和MaxLinear的产品和技术得到了有效整合,两家公司在模拟和混合信号领域的优势得到了进一步加强。合并后的公司继续在通信、视频处理、存储、电源管理和时钟管理等多个领域发挥重要作用。

台湾凌通(Generalplus)公司的发展小趣事
可能是光线阈值设置不当,导致指示灯在光线变化时无法正确响应。可尝试调整光敏元件的灵敏度或重新设置光线阈值。
科通(COMTEK)公司的发展小趣事

随着公司业务的不断拓展,科通技术开始与国际知名品牌展开合作。通过与Xilinx、Intel、SanDisk等全球领先的芯片原厂建立紧密的合作关系,科通技术获得了这些品牌的产品线授权,并为其在中国市场的拓展提供了有力的支持。这些合作不仅提升了科通技术的品牌影响力,也为其带来了更多的市场机会。

BITECH公司的发展小趣事

为了进一步扩大市场份额,科通技术积极实施国际化战略。公司在全球范围内设立了多个办事处和分公司,加强了与国际市场的联系和合作。同时,科通技术还积极参加国际电子展会和论坛等活动,展示公司的最新产品和技术成果,提升了公司的国际知名度和影响力。

问答坊 | AI 解惑

读卡器的使用

图为IC卡及其读写器硬件电路图。其中读写器由单片机、键盘、显示、监控电路等部分组成。IC卡采用XICOR公司的X76F100Y。     2.1 IC卡及卡座     X76F100为128×8位的保密串行FLASH E2PROM,其中读密码和写密码分别为64位。 ...…

查看全部问答>

NEC芯片可以输出PWM信号,但接上直流电机就没了

本帖最后由 paulhyde 于 2014-9-15 09:36 编辑 NEC芯片输出PWM信号已经解决了,用SPI模式.不过有点搞不懂为什么正转时CHnDCDIR输出的是高电平,设置反转时却输出低电平,和数据手册相反的.而且接上直流电机就连PWM信号都没了. 请高手指点一下,谢谢了 ...…

查看全部问答>

LPC1114恩智浦Cortex开发板

审请LPC1114恩智浦Cortex开发板,用于成本敏感的低端金融设备控制系统开发 联系:tech1@fota.cn 办公电话:0571-87647777 转115 联系人:金工 [ 本帖最后由 haiqing05 于 2010-4-6 13:30 编辑 ]…

查看全部问答>

wince6.0 支持TransparentBlt吗?

wince6.0 支持TransparentBlt吗?我在调试的时候该函数返回一直是0,不知道是为什么?各位大虾指导下!…

查看全部问答>

PB 下如何实现USB键盘和鼠标

想问一下Core OS\\Core OS Services\\USB Host Support下的内容已经Add to OS Desgin,但USB的键盘和鼠标还是没有用,并且开机时蜂鸣器长响,是什么原因? 另外,Device Drivers\\USB Function 和USB Host 之间的区别?…

查看全部问答>

[100分!急!]在WinCE里用VC++.NET操作远程SQL Server2000问题

本人想在VS2005上用VC++.NET开发一个基于WinCE 5.0的操作远端的SQL Server2000的程序,怎么写啊. 1. 源代码和具体步骤? 2. 如何使用SQL CE 2,如何在WinCE 上装SQL CE 2? 3. WinCE 上操作远程SQLServer2000数据库非得装SQL CE吗? 4. 如何用V ...…

查看全部问答>

创意手工LED发光怀表

LED怀表”这是一个DIY作品,作者觉得这可能是第一个LED怀表,来自Paul,其对祖父留下来的一个旧怀表进行改造,当然能用的也只有怀表的外壳。   怀表里面一共安装了133个LED,每一个都是手工焊接而成,LED可显示60秒、60分钟和12小时,另外还有一 ...…

查看全部问答>

怎样破解iarewarm5.30?

我下的iar ewarm5.30照别个说的方法怎么补能破解呢? 未命名.JPG (53.53 KB) 下载次数:7 2010-6-15 20:52 …

查看全部问答>

请问IARSTM8的中断程序怎么搞?最好能提供个范本,谢谢!

                                 请问IAR STM8的中断程序怎么搞?最好能提供个范本,谢谢!…

查看全部问答>

帮忙看看2407的程序吧

帮忙看看2407点灯的程序吧,为什么lacc    #8语句中输入>8的数时,在单步调试运行时,延时程序就跳不出来了,好像死机了似的。可是lacc    #8语句中输入<=8的数就什么问题都没有。快帮忙看看吧,我都在这个问题上停留好长 ...…

查看全部问答>