新闻  |   论坛  |   博客  |   在线研讨会
程序调试(除错)过程中的一些雕虫小技(四、慢镜头的威力)
mayer | 2009-08-18 19:47:00    阅读:1539   发布文章

程序调试(除错)过程中的一些雕虫小技(四、慢镜头的威力)

 

程序调试(除错)过程中的一些雕虫小技(四、慢镜头的威力)

2009年春晚捧红了魔术师刘谦(这位老兄名“谦”,其实一点都不谦虚——长的帅不是错,出来拽就是罪过了!),也勾起了大家对魔术的浓厚兴趣,如何识破那些快速的眼花缭乱的魔术手法呢?很简单,用慢镜头回放即可。据说刘谦那个橡皮筋魔术的手法就是被人如此识破的。

回到我们单片机上来。我们知道,单片机的运行速度,一般都是在几M到几十M(当然,也有为了节能而采用几十K的低速)。不管怎么样,这个速度都远远超出了我们人眼能够分辨的速度。眼睛一眨,也许几M条指令已经执行过去了。

比如说数码管显示(假设有4位数码管)。平时我们看到数码管同时点亮着,但是实际上,这4个数码管是逐个扫描的。在任意一个时刻,只有一位数码管被点亮。在微观上,我们可以进一步把每位数码管的扫描动作细分为以下几个步骤:
1、关闭上一位数码管的位选信号;
2、输出当前位数码管的段选信号;
3、开启当前位数码管的位选信号;
4、启动1ms延时;
5、延时结束后,指针移动到下一位数码管,并重复上述4个步骤,如此周而复始。

你看,这样是不是就像用一个慢镜头在分解显示扫描的动作了?

那么如何实现这个慢镜头呢?方法很多:
1、单步运行(需要仿真器支持);
2、在每一步分动作之后设立断点(需要仿真器支持);
3、在每一步分动作之后插入足够的延时,让我们肉眼可以看清楚这些分动作(不需要仿真器,适合烧片测试);

通过慢镜头的反复回放,我们就可以发现,到底是哪一个分动作出现了问题。

这个技巧,不仅仅适用于调试显示程序,也适用于按键扫描或其它模块。只要一个功能可以被细分为若干的动作,那么这一招“慢镜头分解法”都是可以使用的。

(未完待续,喜欢就顶)

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客