位置:51电子网 » 技术资料 » 单 片 机

MCS51系列单片机软件复位的方法

发布时间:2008/9/1 0:00:00 访问次数:795

  摘要:文章指出了一种广泛流传的误解:在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: ljm

  摘要:文章指出了一种广泛流传的误解:在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: ljm

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!