当前位置:首页 > 单片机 > 单片机
[导读] 摘要 通过分析51单片机外中断I/O入口的内部结构,解释了外中断不能被正常响应的原因,并提出了解决该问题的方法。关键词:单片机,外中断,干扰在长期使用51单片机的过程中,我们发现单片机在工业生产现场等干扰较

 摘要 通过分析51单片机外中断I/O入口的内部结构,解释了外中断不能被正常响应的原因,并提出了解决该问题的方法。

关键词:单片机,外中断,干扰

在长期使用51单片机的过程中,我们发现单片机在工业生产现场等干扰较强的环境工作时,有时确已产生定义为下降沿触发方式的外中断,然而用仪器测量已经送入单片机的INTX引脚时,单片机却不能够正常响应中断。在排除了可能由程序导致的问题之后,再检查CPU的当前状态,发现中断级别、中断允许、中断触发方式也都表明应该响应中断。后经分析及测试,发现是单片机INTX引脚内部端口锁存器被置为零所致。当端口被封锁为零时,从该引脚引入的下降沿表示的中断申请将丢失,中断当然不被响应。由于程序中并未使用可将端口锁存器置为零的指令,且这种情况的产生具有一定的随机性,并非经常发生,所以认为这种现象可能是因电路干扰或噪声造成锁存器误动作导致的。同时我们还认为这种误动作和P3口的内部结构及操作方式有一定关系。

单片机外中断输入端的P3口是具有第二变异功能的准双向口,其每一位的内部结构如图1所示。当变异功能输出为高电平时,位口是普通I/O口。此时如对I/O口进行写操作,数据由内部总线写入锁存器,经与非门和MOS管两次反相后送出引脚;如对I/O口进行读操作,则必须先将锁存器置为1,使MOS管截止,引脚被片内负载MOS管(图中标为上拉电阻)上拉为高电平,然后可进行输入操作,当输入为低电平时它能被拉成低电平,引脚信息经两个缓冲器进入内总线;如果使用第二功能(变异功能),输入锁存器同样也必须先被置为1,这时引脚受变异功能输出控制,若需使用变异功能输入,则锁存器和变异输出必须同时置为1,使MOS管截止,变异功能输入随引脚的变化而变化。估计在第二功能时只能用于输入中断的P3.2和P3.3口,内部可能没有变异功能输出线,即使有,也只能上拉为固定的高电平。可见,单片机P3口不管是通用I/O口还是变异功能输入,其锁存器都必须先置为1。单片机复位后所有I/O口的状态都是1,一般在系统的初始化程序中定义过中断优先级,并在开中断之后单片机即可响应中断,此后若关掉相应中断允许位(置为0),则需从引脚进入单片机的中断有效信号(低电平或下降沿)虽然仍可进入并使IE0(或IE1)置为1,但不能引起中断,当然程序可查寻IE了解中断源是否产生了中断申请。

笔者注意到单片机I/O口有两类指令隐含着对I/O口锁存器的写入。

第一类是读I/O引脚指令,在执行了读I/O引脚指令后,I/O口锁存器状态将变得和引脚相同,如果在中断引脚为低电平期间正巧执行了这种指令,锁存器将变为0态,中断从此将不能进入。

第二类是读-修改-写锁存器指令,例如SETB PX.Y和JBC PX.Y,LABEL等,这些指令被执行时总是先读入I/O口全部8位数据,作一定修改或判断后再回写到锁存器中。

在笔者的程序中没有使用第一类指令,第二类指令倒是有,不过,不是对P3.2(或P3.3)进行操作,而是对P3.4和P3.5进行操作(因为系统中使用了P3.4和P3.5作为普通I/O位口)。但是,我们认为有可能在执行这一类指令修改P3.4和P3.5锁存器位时,由于受到较强的干扰而误将P3.2(或P3.3)写成了0,从而出现上述情况。为了验证这一点,我们去掉了程序中对P3.4和P3.5进行操作的指令,发现中断不能进入的现象基本消失,但在极个别情况下,中断仍不能进入,这种极个别的现象纯粹是随机干扰所致。

为彻底解决中断不能进入的问题,采用了如下两种措施:

(1)放弃P3口剩余的位口,不将其作为普通I/O位口用,而用单片机外部扩充的接口取而代之;

(2)在中断服务程序即将退出之前,往P3.2(或P3.3)口写1,以使P3.2(或P3.3)位的锁存器状态在下一次中断到来之前为1,从而保证不漏掉任何一次中断申请。

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭