http://blog.csdn.net/googlemi/article/details/38470565 2014 《一》先从昨天那个按键检测程序对比下KEIL和IAR在编译代码方面的严谨性,当然仅仅个人看法而已,可能我理解的不深入吧,权当做IAR学习笔记吧 程序如下
同时用KEIL和IAR编译后,然后到proteus运行,结果KEIL能正常运行,当按下相应按键后数码管能显示对应数值,然后IAR里面一直不能被点亮,换句话说key似乎一直是0,
后来经过调试和分析后发现IAR的结果是正确的,按程序说数码管显示数值由于时间极短人眼是看不到的,因为Main函数在一个while(1) 死循环里面,每当有按键被按下,keyscan就得到key返回主函数,接着数码管就能显示相应数值,但是此时他又立即进入下一次按键检测,由于按键没有被按下,此时得到的key应该是0,所以肉眼看着一直没有被点亮,但是KEIL编译过之后却能点亮,具体原因就不得而知了, 。。。分割线。。。。 下面记录下解决办法,由于机器执行代码太快导致按下开关时间过短人眼无法看见,所以可以用两种解决办法 ①每次读取按键程序后,延时一定时间,以便人眼能够看清楚 ②将key定义为全局变量或者静态局部变量,这样在下一次按键之前,无论while(1)多少次了,keyscan始终读取到上一次的key,显示就会正常
《二》软件调试时IAR如何设置端口寄存器的数值 如图所示
|
|