打开APP
userphoto
未登录

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

开通VIP
keil 软件的不足
一、
   <<=  和 >>= 是C语言表准中的运算符,可是在keil中貌似就不是那么回事了。我用
   a = 0x23;
   low = a & 0x0f;              //取低四位
   a >>= 4;                        //高位移到低位
   high = a & 0x0f;            //去移到低位的高四位
结果 low 等于4,但high却莫名其妙地等于0,我很不解,<<= 和 >>= 可都是C语言的运算符啊!
为什么结果不是预料的呢?也许在头文件 intrins.h 中 _cror_( )  _irol_( ) 等会给我们答案,这些是循环左移或循环右移函数,既然keil c51的头文件有他们,就说明有他们的必要。我不知道为什么上面的方法不行,但我知道下面的方法可以
   a = 0x23;
   low = a & 0x0f;
   a = _cror_(a,4);
   high = a & 0x0f; 
我用这种方法得到了a的高四位和低四位,我对它的解释是keil 不支持第一种方法,因为这是keil ,它是给MCU编程的。
二、
   65 + 3   和 'A' +3 有区别吗?在keil里面貌似有,但要分情况,大多数是没有区别的。但当你把ASCII作为整型的一个子集参与算术运算时,结果莫名其妙,你就要考虑把'A'换成65了。
三、
   P2^0 = 1;  这语句有错误吗?我是想给单片机的P2.0口赋1,让它为高电平,但你知道Keil怎么说吗?它说systax error
 
当我用了C51的关键字sbit 后,顺利通过了编译,这时,我才知道为什么有关键字sbit了。
四、
   变量的定义,最好不要放在主函数里,我的建议是不要放在主函数里。程序小,编译不会报错;程序大了,编译就会报错。如果你写了一个比较大的程序,而在主函数里又进行了变量定义,这时,你应该考虑把变量定义放在主函数外。变量定义放在主函数外和内,就程序效率和占用内存资源角度来看,他们是没有区别的。所以,我强烈建议把变量定义放在主函数之外。
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
?在实际项目开发中Keil的调试方法,好不好,谁看谁知道
分享:Keil中如何消除UNCALLED SEGMENT,IGNORED FOR OVER...
STM32F407关闭总中断
单片机 C51 编程要点总结
C351编程(1)单片机C语言中文编程方法探讨
stm32开发- 远离 Keil uVision, 回到 Visual Studio
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服