当前位置:首页 > 嵌入式 > 嵌入式硬件

摘要:文章指出了一种广泛流传的误解:在mcs-51系列单片机中,只要用指令使程序从起始地址开始执行,就可以复位单片机,摆脱干扰。通过一个简单的实验,揭示了软件复位的可靠方法。   有的单片机(如8098)有专门的复位指令,某些增强型mcs-51系统单片机虽然没有复位指令,但片内集成了watchdog电路,故抗干扰也不成问题。而普及型mcs-51系列单片机(如8031和8032)既然无复位指令,又不带硬件watchdos,如果没有外接硬件watchdog电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件watchdog等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用一系列指令来模仿复位操作,这就是mcs-51系列单片机所特有的软件复位技术。   现用一简单的实验说明,实验电路如附图所示。接于仿真插座p1.0的发光二极管led0用来表示主程序的工作情况,接于p1。1的发光二极管led1用于表示低级中断子程序的工作情况,接于p1。2的发光二极管led2用来表示高级中断子程序的工作情况,接于p3。2口的按钮用来设立干扰标志,程序检测到干扰标志后故意进入死循环或掉进陷井,模仿受干扰的情况,从而检验各种复位方法的实际效果。寮验初始化程序如下: org 0000h
stat: ljmp main 复位入口地址
ljmp px0 按钮中断向量(低级中断)
org 000bh
ljmp pt0 t0中断向量(低级中断)
org 001bh
ljmp pt1 t1中断向量(高级中断)
org 0030h
main:
clr ea
mov sp,#7
mov p1,#0ffh
mov p3,#0ffh
mov tmod,#11h
clr 00h 干扰标志初始化
setb et0
setb et1
setb ex0
setb pt1
setb tr0
setb tr1
setb ea
loop: cpl p1.0 主程序发光二极管led闪烁
mov r6,#80h
mov r7,#0
tt1:
djnz r7,tt1
djnz r6,tt1
sjmp loop
px0:
setb 00h 设立干扰标志,模拟发生干扰
pt0: cpl p1.1 低级中断程序发光二极管led1闪烁
reti
pt1: cpl p1.2 高级中断程序发光二极管led2闪烁
reti
end   实验步骤如下:   1. 按上述程序启动执行,三个发光二极管都应闪烁(否则应先排除故障),表示主程序和各中断子程序正常。因模拟干扰标志未加检测,故不受按钮影响。   2. 修改主程序如下,按下按钮后主程序即掉入死循环中。
loop: cpl p1.0
mov r6,#80h
mov r7,#0h
tt1: djnz r7,tt1
djnz r6,tt1
jnb 00h,loop 受干扰否?
stop: ljmp stop 掉入死循环。
  这时可以看到,主程序停止工作(led0停止闪烁),而两个中断子程序继续运行(led1和led2继续闪烁)。   3. 将定时器t1妆作软件watchdog,将30h单元用作软件watchdog计数器。主程序中加入一条复位软件watchdog的指令。 loop: cpl p1.0
mov 30h,#0 复位软件watchdog计数器
loop: cpl p1.0
mov r6,#80h
mov r7,#0h
tt1: djnz r7,tt1
djnz r6,tt1
jnb 00h,loop 受干扰否?
stop: ljmp stop 掉入死循环。   t1中断子程序修改如下:

pt1: cpl p1.2 高级中断程序发光二极管闪烁
inc 30h
mov a,30h
add a,#0fdh
jc err 达到3次否?
reti
err: ljmp stat 软件watchdog动作   当按下按钮前,程序正常运行(三个led全闪)。按下按钮后,主程序能迅速恢复工作,但两个中断子程序被封锁,不再工作。过程如下:主程序检测到干扰后进入死循环,不能执行复位30h单元的操作,t1中断使30h不断增值,计数到3时,软件watchdog执行动作,执行一条ljmp指令,使程序从头执行。main过程中清除了干扰标志(表示干扰已经过去),使主程序迅速恢复工作。按理说main过程中也重新设定了各个中断,并开放了它们,为什么中断不能恢复工作呢?这是因为中断激活标志的复位工作被遗忘了,因为它没有明确的位地址可供编程,直接转向0000h地址并不能完成真正的复位。软件复位是使用软件陷井和软件watchdog后必须进行的工作,这时程序出错完全有可能发生中断子程序中,中断激活标志已置位,它将阻止同级中断响应。由于软件watchdog是高级中断,它将阻止所有中断响应。由此可见,清除中断激活标志的得要性,很多文献的作者回为没有认识到这一点进入误区。   4. 在所有指令中,只有reti指令能清除中断激活标志。出错处理程序err主要是完成这一功能,其它的善后工作交由复位后的系统去完成。为此,我们重新设计t1中断子程序如下所示: pt1: cpl p1.2 高级中断程序发光二极管闪烁
inc 30h 软件watchdog计数器增值
mov a,30h
add a,#0fd
jc err 达到3次否?
reti
err: clr ea 关中断
clr a 准备复位地址(0000h)
push acc
push acc
r

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

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 隧道灯 驱动电源
关闭