打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
从小程序说说KEIL和IAR的不同另外简单说说软件调试时IAR如何设置端口寄存器的数值

http://blog.csdn.net/googlemi/article/details/38470565

2014

《一》先从昨天那个按键检测程序对比下KEIL和IAR在编译代码方面的严谨性,当然仅仅个人看法而已,可能我理解的不深入吧,权当做IAR学习笔记吧

程序如下

  1. #include<reg52.h><span style="white-space:pre"> </span>//IAR里面此处修改为io8051.h  
  2.   
  3. int keyscan(void);  
  4.   
  5. int table[]={0xff,0xf9,0xa4,0xb0,0x99,//增加0xff以便不按键时灯熄灭  
  6.             0x92,0x82,0xf8,0x00,  
  7.             0x90,0x88,0x83,0xc6,  
  8.             0xa1,0x84,0x8e,0xc0};  //按s16显示0  
  9.   
  10. int main(void)  
  11. {  
  12.     while(1)  
  13.         P2=table[keyscan()];  
  14.       
  15. //  return 0;  
  16. }  
  17.   
  18. int keyscan(void)  
  19. {  
  20.     int row=0,col=0,key=0; //row行扫描,col列扫描    
  21.     for(row=0;row<4;row++)  
  22.     {  
  23.         P1&=~(1<<(row+4));//P1[4-7]依次至零  
  24.         if((P1&0xf)<0xf) //判断P1[0-3]是否有0,即是否按键按下  
  25.         {  
  26.             for(col=0;col<4;col++)  
  27.             {  
  28.                 if((P1&(1<<col))==0)//判断一行中那一列为0  
  29.                     key=row*4+col+1;//注意+1,以便按1能显示1  
  30.             }  
  31.         }  
  32.         while((P1&0xf)!=0xf);//等待按键被释放  
  33.         P1=0xff;  
  34.     }  
  35.     return  key;  
  36. }  

同时用KEIL和IAR编译后,然后到proteus运行,结果KEIL能正常运行,当按下相应按键后数码管能显示对应数值,然后IAR里面一直不能被点亮,换句话说key似乎一直是0,

后来经过调试和分析后发现IAR的结果是正确的,按程序说数码管显示数值由于时间极短人眼是看不到的,因为Main函数在一个while(1) 死循环里面,每当有按键被按下,keyscan就得到key返回主函数,接着数码管就能显示相应数值,但是此时他又立即进入下一次按键检测,由于按键没有被按下,此时得到的key应该是0,所以肉眼看着一直没有被点亮,但是KEIL编译过之后却能点亮,具体原因就不得而知了,

。。。分割线。。。。

下面记录下解决办法,由于机器执行代码太快导致按下开关时间过短人眼无法看见,所以可以用两种解决办法

①每次读取按键程序后,延时一定时间,以便人眼能够看清楚

②将key定义为全局变量或者静态局部变量,这样在下一次按键之前,无论while(1)多少次了,keyscan始终读取到上一次的key,显示就会正常


《二》软件调试时IAR如何设置端口寄存器的数值

如图所示






本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单片机4*4矩阵键盘-Changing's Blog
Proteus使用笔记之51单片机4x4矩阵按键
小结一下KeilC与IAR对函数参数及返回值的处理
单片机C语言编程环境有哪些
【经验分享】KE02在IAR和KEIL中以常量形式初始化EEPROM值
代码对齐技巧(tab,空格)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服