飞思卡尔 单片机用什么软件编写程序
展开全部 这要看是什么型号的单片机,AT89S51和STC单片机,都有一个上电标志位POF,在PCON寄存器中,冷启动标志位为POF=1。
而看门狗复位对POF没有影响。
利用POF就可以判断了,开机先读PCON寄存器,当POF=1,就是冷启动,然后置0,POF=0。
如果读PCON,当POF=0,就说明是软件复位,即看门狗复位。
...
飞思卡尔车到转弯时,会有一个很大的瞬间电流导致单片机供电不足,...
嘿嘿 还是俺来帮你解答吧1 单片机的硬件复位和门狗复位都是对单片机的复位引脚 加一个复位电平产生的 此时单片机将进行复位操作 pc=0000h p0=p1=p2=p3=0ffh sp=07h 其它特殊寄存器将被清零。
复位结束后 单片机重新开始运行。
2 软件复位;一般为了防止程序跑飞 可以在程序存储器中没有指令的地方 全部写入 LJMP 0000H指令一旦单片机运行跑飞 进入LJMP 0000H指令区 将还返回单片机的第一条指令 重新运行单片机的正常程序.软件复位时,P0 P1 P2 P3 和特殊寄存器的内容都不会再改变.这点与硬件复位不同. 呵呵 满意就给加分吧
单片机嵌入式系统软件的几种复位方式
飞思系列的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}
请问pic单片机怎么软件强行复位。
请教?
(1)两边都是输入的话,那就是没人去置高低电平,呈现三态里的高阻态。
(2)如果左侧单片机I/O是高或低电平,那右侧是就相应的电平;如果左侧单片机I/O是输入或空接,那高阻态电平不确定你不就是用光耦嘛,使用上拉或下拉的方法使光耦输入有一个确定电平就行了。
即如你图所示,光耦二极管输入上方接上拉限流电阻到高电平,光耦二极管输入下方接地,你的单片机I/O接到光耦的二极管输入端(上拉电阻下方)即可。
单片机软件复位
展开全部 嘿嘿 还是俺来帮你解答吧1 单片机的硬件复位和门狗复位都是对单片机的复位引脚 加一个复位电平产生的 此时单片机将进行复位操作 pc=0000h p0=p1=p2=p3=0ffh sp=07h 其它特殊寄存器将被清零。
复位结束后 单片机重新开始运行。
2 软件复位; 一般为了防止程序跑飞 可以在程序存储器中没有指令的地方 全部写入 LJMP 0000H指令 一旦单片机运行跑飞 进入LJMP 0000H指令区 将还返回单片机的第一条指令 重新运行单片机的正常程序.软件复位时,P0 P1 P2 P3 和特殊寄存器的内容都不会再改变.这点与硬件复位不同. 呵呵 满意就给加分吧...
转载请注明出处51数据库 » 飞思卡尔单片机软件复位