“程序跑飞”。顾名思义,如果程序还在程序员设计的预定轨道上运行,它算不算“异常”?(尽管它已经由于PC值受干扰,在正常轨道上向前/向后跳跃了几下。) 一位机的超级循环程序,PC值好像不能修改!它就是一个永远向前的计数器,更没有堆栈,中断,... 等等,所以无论程序跳到哪里开始运行,它最终会回到循环初始点(0000H)从头开始新一轮循环。以前的“事件”已经忘掉了。从头来了。 wxj1952 对“跑飞”的定义,就是只要指令系统是“单字节指令”的MCU程序都不会跑飞。
“我所认为的程序跑飞就是PC指针没有按照预定的程序变更,可能PC指针指向一个不确定的或者根本就没有存放用户代码的程序存贮空间里运行。”
没错:可是一位机中,那些“根本就没有存放用户代码的程序存贮空间里”存放的都是空操作码。就像8051在那些没有存放用户代码的程序存贮空间里预先固化了020202H/020000H一样。是一种抗干扰基本措施——陷阱设置。也可算是预定轨道。
|