怎样实现软件复位跟硬件复位一样的效果
1 单片机的硬件复位和门狗复位都是对单片机的复位引脚 加一个复位电平产生的 此时单片机将进行复位操作 pc=0000h p0=p1=p2=p3=0ffh sp=07h 其它特殊寄存器将被清零。
复位结束后 单片机重新开始运行。
2 软件复位;一般为了防止程序跑飞 可以在程序存储器中没有指令的地方 全部写入 LJMP 0000H指令一旦单片机运行跑飞 进入LJMP 0000H指令区 将还返回单片机的第一条指令 重新运行单片机的正常程序.软件复位时,P0 P1 P2 P3 和特殊寄存器的内容都不会再改变.这点与硬件复位不同.
在外部中断0程序中如何实现软件复位
飞思系列的8位单片机没有特定的控制寄存器可以实现软件复位,当程序运行过程中代码需要强行产生一个复位时必须通过一些软件技巧实现:本文引用地址:http://www.eepw.com.cn/article/148513.htm软复位,程序从头运行,硬件不复位。
复位脚无复位脉冲输出这可以通过直接获取复位向量的方式来实现:void ForceReset(void){uniON {void (*vector)(void);byte c[2];} softReset;softReset.c[0] = *(byte*)0xFFFE; //get the reset vectorsoftReset.c[1] = *(byte*)0xFFFF;softReset.vector(); //re-STart the code flow}硬复位,程序从头运行,内部所有硬件模块和寄存器同时复位,复位脚有复位脉冲输出这必须结合FSL 8位单片机内部的架构特点来实现:1)COP(看门狗)复位这是最简单的一种方式。
程序死循环然后等看门狗作用产生复位。
你必须事先启动看门狗功能,复位过程将有少许延时。
void ForceReset(void){DisableInterrupts; //disable all interruptfor(;;); //wait for watch-dog reset}2)非法寻址复位当指令对某一个不存在的内存空间进行寻址操作时单片机会产生硬件复位。
void ForceReset(void){asm JMP 0xD000; //jump to illegal address will result a RESET}注意不同芯片其有效内存空间配置不同,具体地址需参考芯片数据手册做适当调整。
3)非法指令复位当执行一条不存在的指令编码时单片机会产生硬件复位。
这里又可以分两种手段:a) 利用“合法”指令在特定配置模式下的“非法性”,例如STOP指令。
如果在芯片的配置寄存器SOPT中设定STOPE位为0禁止STOP指令,你若再执行STOP就会认为是非法指令从而立即产生复位。
void ForceReset(void){asm STOP; //illegal STOP will result a RESET, note SOPT_STOPE must be 0}如果你的应用中正常情况下不会用到STOP,就可以用这种方式。
如果你本来就要用STOP指令就不能用这种方式产生复位,因为SOPT寄存器在复位后只能被写一次。
b) 人为制造非法指令然后强行运行。
这是比较通用的一种方法,这个S08内核系列均可适用。
在单片机的指令表中确认一条不可能出现的指令编码,例如0x9E10,将其填入RAM中然后强制运行,即可立即产生复位。
void ForceReset(void){byte illegalCode[2];illegalCode[0] = 0x9e;illegalCode[1] = 0x10; //illegal instruction((void (*)(void))illegalCode)(); //execute illegal instruction will result a RESET}
复位电路的复位方式
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位方式有:手动按钮复位和上电复位。
1、手动按钮复位手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。
一般采用的办法是在RST端和正电源Vcc之间接一个按钮。
当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。
手动按钮复位的电路如所示。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
2、上电复位AT89C51的上电复位电路如图2所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。
对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1uF。
上电复位的工作过程是在加电时,复位电路通过电 容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。
为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。
上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。
在图2的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。
如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。
3、积分型上电复位常用的上电或开关复位电路如图3所示。
上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。
当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。
根据实际操作的经验,下面给出这种复位电路的电容、电阻参考值。
C=1uF,Rl=lk,R2=10k
AT89C51能不能软件复位
这就看你的要求是什么了,如果只是要求从头开始重新执行程序,就转到0000H处。
但是,不能实现硬件复位的那些功能,例如,内部寄存器不能清0。
从这个意义上说,并不算是软件复位,因为,它没有这个功能。
如果是 AT89S51倒是可以,启动看门狗,当需要软件复位时,进入死循环,由看门狗来实现软件复位。
最后问一句,你用AT89C51是仿真吗?如果是实物,那你可用不了。
这都什么年代了,还用这种老掉牙的东西,首先,烧录程序就烧不了,那需要专用的编程器,可是早就没有人卖了。
那你问这个问题就毫无意义了。
你能确定,真是AT89C51吗,确实没有看错?
STM32的窗口看门狗中断服务程序中如何实现复位
R4的软复位是A+B+X+Y+L+R,是退回到烧录卡的界面(当然是要打开软复位的)L+R+Select+Start是部分游戏自己的复位功能,也就是退回到该游戏开始的主菜单。
软复位:是通过软件给系统一个复位信号,如低电平或许是高电平(具体看系统设置)来实现复位操作。
硬件复位是复位启动以后需要重新加载加载FPGA、DSP等,也有可能在这个操作之前初始化化CPU,加载系统文件等操作,具体视需要而定,然后初始化一些配置芯片;软复位则不需要进行FPGA、DSP等的加载,只是一些配置芯片的初始化。
试列举出几种复位电路,说明他们是如何完成复位功能的
展开全部 1、手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。
一般采用的办法是在RST端和正电源Vcc之间接一个按钮。
当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。
手动按钮复位的电路如所示。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
2、上电复位 AT89C51的上电复位电路如图2所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。
对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1uF。
上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。
为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。
上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。
在图2的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。
如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。
...
单片机软复位几种方法
展开全部 如从机收到复位命令(软件命令),程序怎么使机器复位?虽然要使软件始终处于可控状态,最好不要用"复位",因为复位是纯硬件过程,软件是不可控的.但是我们还是要讨论方法,一般流传的方法如下:1、放狗;2、((void(code *)(void))0x0000)();3、用单片机一个引脚控制点一下RSTRST;4、用单片机一个引脚控制重新加电;5、用单片机自带的软件复位指令或内狗指令;6、goto大法;...
一-二-三-亖