英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3420|回复: 0
打印 上一主题 下一主题

PICC 的小窍门(原创)

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-18 17:59:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 PICC 默认的无符号环境下,对比如下代码:
a 语句:
char i,j[8];
i=7;
while(1){
j[i]=0;
i--;
if(i==0)break;
}
b 语句:
char i,j[8];
for(i=8;i>0;i--){
j[i-1]=0;
}
表面看上去,一般会认为下面的代码编译后要大一点点,因为多了j[i-1]中的i-1。
其实编译后代码量是一摸一样的。
原因如下:
movlw 8 或7 //a 语句是7,b 语句是8
movf i
loop
//a 语句在这里提取i 给j 数组
//i 递减判断语句
//b 语句在这里提取i 给j 数组
goto loop
可以看出只是代码位置不同而已,并没添加代码量。b 语句同样达到了从7 到0 的循环。
小总结:对于递减到0 的for 语句推荐用>0 判断语句来实现,不会出现编译错误的问题,并
且不会增加代码量,尤其对于数组操作的方面。
另:对于 PICC 或CCS,在其默认的无符号编译环境下,如果出现负数运算就会出问题。
如(-100)+50 等,所以在编写代码时候要特别小心!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-5-2 21:03 , Processed in 0.053472 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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