1. MCS-51型单片机常用的复位方法有几种应注意哪些事项
51单片机有五种常用的复位方法:
1.上电制动复位,注意:只要电源的的上升时间不超过1ms,就可以实现自动上电复位。
2.软件复位,注意:复位信号保持时间是编程人员预定的时间。
3.按键电平复位,注意:复位信号保持时间大于2个时钟周期。
4.外部脉冲复位,注意:复位信号保持时间大于2个时钟周期。
5.看门狗溢出复位,注意:复位信号保持时间也是编程人员预定的时间。
2. 51系列单片机是如何进行复位的
在单片机系统的应用中,我们经常需要用到复位技术来实现抗干扰。有的单片机(如8098)有专门的复位指令,某些增强型MCS-51系列单片机虽然没有复位指令,但片内集成了WATCHDOG电路,可以很容易实现复位。而普及型MCS-51系列单片机(如8031和8032)既无复位指令,又不带硬件WATCHDOS,如果不外接硬件WATCHDOG,就必须采用软件复位技术。所谓软件复位就是用一系列指令来模仿复位操作。在MCS-51系列单片机中,只要用指令使程序从起始地址(0x0000)开始执行,就可以复位单片机。
3. 单片机运行 复位是什么情况
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
单片机运行时复位,常见的原因有:
1,掉电或电压过低(我用STC单片机的时候遇到过因为电源电压过低而导致自动复位的情况)。
2,程序跑飞或者死机后,由看门狗引发的复位。
3,复位引脚接收到复位信号(人工产生或者外部看门狗等电路产生)。
4,STC89C52RC单片机在使用汇编语言编程时,出现类似C语言中函数递归的语句时,可以自动复位。这个我在实验时看到过这个现象,但具体原因不明,我没有使用看门狗。
5,有些单片机可以在程序控制下自动复位。
4. 如何使用单片机C语言实现复位
可以使用下面的程序跳到0000H实现软复位,下面的程序实际上是一个函数指针,指针指向了0000H地址。
((void
(code
*)
(void))
0x0000)
();
下面的例子将实现软件自复位void
reset
(void)
{
((void
(code
*)
(void))
0x0000)
();
}
void
main
(void)
{
reset
();
}
你可能注意到以上的软复位程序并不能清除8051的中断系统和某些8051的外围设备,当您在中断程序中调用上面的软件复位程序后,中断将再不能触发。因此,以上的软复位程序不能在中断子程序中调用。
下面的小段汇编函数可以在中断程序或主程序中调用,该函数将0x0000压栈,然后通过“RETI”出栈,这将清除中断环境并让程序从0000H重新开始运行。
?PR?RESET
SEGMENT
CODE
RSEG
?PR?RESET
;
C
prototype:
void
reset
(void);
PUBLIC
reset
reset:
POP
ACC
;
pop
return
address
POP
ACC
CLR
A
;
push
0
as
new
PUSH
ACC
;
return
address
to
stack
PUSH
ACC
RETI
;
execute
return
of
interrupt
END
以上程序在选择bank
0寄存器组时工作良好,假如选择的不是bank0寄存器组,那么可能无法获得预料的结果。你应该在以上的程序或启动代码中加上“MOV
PSW,
#0”来选择bank
0寄存器组。
以上文章由龙啸九天翻译自KEIL
FAQ,可能有疏漏,欢迎提出。