C语言进阶单片机编程经验
- 文件大小:20.39KB
- 浏览次数:
- 发布时间:2017-03-10
本资料包含doc文件1个,下载需要5积分
C语言进阶单片机编程经验当CPU受到外界干扰,有时PC指针会飞到另-段程序中,或跳到空白段去。其实,如果PC指针飞到空白段去,倒也好处理。只要在空白段设立软件陷阱(拦截指令),将程序拦截到初始化段或程序错误处理段。但是,如果PC指针飞到另-段程序中去了,系统如何办谐在这里推荐-种方法--程序口令,思路如下: 1、首先,程序必须拈化。每个拈(子程序)执行-个功能。每个拈只有-个出口(RET)。 2、设立-个拈(子程序)ID寄存器。 3、为每个子程序配置-个唯-的ID号码。 4、每当子程序执行完毕,要返回(RET)之前,
先将本子程序的ID号送入 ID寄存器。 5、返回到上级程序后,先判断ID寄存器中的ID号。 如果正确,则继续执行;如果不正确,则表示PC指针有可能已经跳错了,子程序没有按预计的出口返回,这时将程序拦截到初始化段或程序错误处理段。 这种方法,如同在程序中设立了若干个岗哨,每次调用子程序返回后,都要对口令(ID号),验明正身后再放行。再配合软件陷阱,基本上可以将大多数PC指针弹飞的现象检测到。到了程序错误处理段,要杀要剐(冷启动还是热启动)就由您了。 仅以-条代码来揭示程序飞跑的本质!750102H ;MOV 01H,#02H ,如当前PC不是指向75H,而是指向01H或02H,那么51内的指令译码器将把她们忠实地翻译成AJMP X01H 或 LJMP XXXXH 而XX01H XXXXH又是什么呢天知道!这样恶性飞跑下去那还不死定!改革-下:CLR A ;0C4HINC A ;04HMOV R1,A ;0F9HINC A ;04H MOV ###R1,A ;86H 每-字节代码都不能在生成跳转和循环,且都是单字节指令!往那跑去跑出去了都要自己回来0在家”千日好0跳出”事事难嘛!这样只要平时习惯了用累加器和寄存器把数倒-倒,把那些危险代码都给倒掉,这样虽说给PC的足”上多加了两字节的包”可它不好跑”啊0足包”跑!有朋友会问:要是PC抓做02H--LJMP 又有抓做了老鼻子远的XXH,再抓做隔壁的YYH不就没用了吗提这样的问题只有ZENYIN这种钻徘得才会提!PC那-位最活跃啊PC0啊!要扯拐”显然发生在她身上,至于那PC15同志啊,睡得更死猪-样,雷爆(强干扰)来了都打不醒此外如果干扰都强到了PC高位都出错的地步!关电!关电!不干了0不是我们不行而是敌人太强大”!反过来要是敌人在你的专政下,只是偶尔出来捣捣乱,但-出来就冲到屁西(PC)高层,就要问问是不是你的王国根基(硬件)有问题了而非出在意识形态(软件)上!硬件为本!软件为标!标本兼治铸就坚强体魄,方能百毒不侵! 经验之二、不要轻信软件狗 关于软件狗的讨论,论坛上多矣〕人也曾经查阅过许多关于软件狗的文章。有些大师确实提出了-些比较有技巧性的方法。但是,匠人的忠告是:不要轻信软件狗!其实,软件狗相当于软件的-种自律行为。-般的思路都是通过设立-个计数器,在计时中断中对其1,在主程序的适当地方对其清零。如果程序失控了,清零指令未被执行,但中断造常发生,则计数器溢出(狗狗叫了)。但是这里有个问题:万-干扰导致中断被屏蔽了,那软件狗就永远不会叫了*-针对这种可能,有人提出在主程序中反复刷新中断使能标志,保证不让中断被屏蔽。--但万-程序飞到某个死循环中去了,不再执行刷新中断使能标志”这-功能了,还是有可能把狗狗活活饿死。
所以,匠人的观点是:看门狗必须拥有独立的计数器。(即硬件看门狗)好在现在好多芯片都提供了内部WDT。这种狗都是自带计数器的。即使干扰导致程序失控,WDT还是会造常计数直到溢出。当然,匠人也没有要将软件狗-棍子全部打死的意思。毕竟
- 1FZ/T 63042-2018 热转印机织丝带
- 2北京某大厦基坑支护全套施工方案
- 3PYB-Φ1200圆锥破碎机
- 4BS 7670-2-1997 (Steel nuts and bolts for resistance projection welding - Specification for welding o
- 5DB13/T 2802-2018 水利工程铸铁闸门技术规程
- 6宿迁火车站站前配套一期道路工程安全施工组织设计
- 7DBJ/T 61-36-2005 建筑地面工程施工工艺标准
- 8247.深基坑位移监测的方法(摘录自《广东建材》06年4期第88-90页)
- 9四辊冷轧机压下系统设计
- 10GB/T 50602-2010 球形储罐γ射线全景曝光现场检测标准
- 11利勃海尔港口移动起重机
- 12YY/T 0186-1994 医用中心吸引系统通用技术条件
- 132015年二级建造师《公路工程管理与实务》模拟试题(三)
- 14SN/T 1393-2004 西松大小蠹检疫鉴定方法
- 15HJ/T 426-2008 清洁生产标准 钢铁行业(烧结)