找回密码
 注册
关于网站域名变更的通知
查看: 1456|回复: 21
打印 上一主题 下一主题

单片机编程经验总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-8 12:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机编程经验总结
% v+ V) i( L  f1 m3 _* D& n$ r, e: I) X8 |+ }# ]: b  d+ z8 _) e
8 {: d. P# ?, @

经验之一:用“软件陷阱+程序口令”对付PC指针的弹飞

当CPU受到外界干扰,有时PC指针会飞到另一段程序中,或跳到空白段去。其实,如果PC指针飞到空白段去,倒也好处理。只要在空白段设立软件陷阱(拦截指令),将程序拦截到初始化段或程序错误处理段。但是,如果PC指针飞到另一段程序中去了,系统如何办?小匠在这里推荐一种方法——程序口令,思路如下:

1、首先,程序必须模块化。每个模块(子程序)执行一个功能。每个模块只有一个出口(RET)。

2、设立一个模块(子程序)ID寄存器。

3、为每个子程序配置一个唯一的ID号码。

4、每当子程序执行完毕,要返回(RET)之前,

先将本子程序的ID号送入 ID寄存器。

5、返回到上级程序后,先判断ID寄存器中的ID号。

如果正确,则继续执行;如果不正确,则表示PC指针有可能已经跳错了,子程序没有按预计的出口返回,这时将程序拦截到初始化段或程序错误处理段。

这种方法,如同在程序中设立了若干个岗哨,每次调用子程序返回后,都要对口令(ID号),验明正身后再放行。再配合软件陷阱,基本上可以将大多数PC指针弹飞的现象检测到。到了程序错误处理段,要杀要剐(冷启动还是热启动)就由您了。

游客,如果您要查看本帖隐藏内容请回复

4 T( [' i) f+ [. a  O
  • TA的每日心情
    开心
    2025-5-27 15:58
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    推荐
    发表于 2020-11-13 14:04 | 只看该作者
    啦啦啦啦绿绿绿绿绿绿绿绿绿绿绿绿绿; a6 E+ Y, j3 f% ~' J4 ?! C
  • TA的每日心情
    奋斗
    2019-11-28 15:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    推荐
    发表于 2019-10-12 16:36 | 只看该作者
    来看看大佬的经验总结1 ?! E$ S$ g- u( c

    该用户从未签到

    推荐
    发表于 2020-1-9 14:02 | 只看该作者
    讲的不错 谢谢分享

    该用户从未签到

    2#
    发表于 2019-3-8 23:04 | 只看该作者
    总结的好,赞

    该用户从未签到

    3#
    发表于 2019-10-3 23:16 | 只看该作者

    该用户从未签到

    6#
    发表于 2019-10-8 09:13 | 只看该作者
    总结的好,赞

    该用户从未签到

    7#
    发表于 2019-10-10 08:41 | 只看该作者
    谢谢分享,赞一个
  • TA的每日心情
    开心
    2019-11-29 15:00
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    8#
    发表于 2019-10-10 10:18 | 只看该作者
    感谢总结分享
    9 _: }' U( L, c6 s
  • TA的每日心情
    奋斗
    2022-5-12 15:53
  • 签到天数: 259 天

    [LV.8]以坛为家I

    13#
    发表于 2020-1-9 12:00 | 只看该作者
    赶紧看看好东西啊

    该用户从未签到

    15#
    发表于 2020-2-28 03:18 | 只看该作者
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-23 08:16 , Processed in 0.078125 second(s), 25 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表