搜索
bottom↓
回复: 7

--i和i--的区别,秒表延时程序出问题,真心想知道为什么

[复制链接]

出0入0汤圆

发表于 2013-3-22 01:30:34 | 显示全部楼层 |阅读模式
本帖最后由 Gost 于 2013-3-22 01:31 编辑



真心想知道我的程序是哪里的问题,真的是--i;i--;的原因吗??想不通
我的理解--i先减1在执行,i--先执行再减1.
下面上传程序
上面的程序是改正确的,如果想出错只需把delay里面的--i换为i--,错误会出现在按键消抖的程序段那里,当然不是编译不通过,是定义的P17和
P32按键按下后其他按键再也不起作用了,只能复位,在这先致谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入442汤圆

发表于 2013-3-22 07:51:37 | 显示全部楼层
这个应该是编译器问题,你不妨检查一下汇编代码,看它把while(i--)生成了什么东西。

出0入4汤圆

发表于 2013-3-22 08:12:39 | 显示全部楼层
同意楼上,自己看一下汇编出来的代码就清楚了.

出0入0汤圆

 楼主| 发表于 2013-3-22 09:56:14 | 显示全部楼层
wye11083 发表于 2013-3-22 07:51
这个应该是编译器问题,你不妨检查一下汇编代码,看它把while(i--)生成了什么东西。 ...

好的 ,这就去看去

出0入0汤圆

 楼主| 发表于 2013-3-22 11:40:30 | 显示全部楼层
C:0x09C3    22       RET      
C:0x09C4    7FC8     MOV      R7,#T2CON(0xC8)
C:0x09C6    7E00     MOV      R6,#0x00
    14: void delay(u16 a)          //延时  这里要用a--就不对了,出错的地方可能在于P17,P32那两个if里面的延时
    15: {       while(a--);
C:0x09C8    EF       MOV      A,R7
C:0x09C9    1F       DEC      R7
C:0x09CA    AE1E     MOV      R4,0x1E
C:0x09CC    7001     JNZ      C:09CD
C:0x09CE    1E       DEC      R6
C:0x09CF    4E       ORL      A,R4
C:0x09D0    70F7     JNZ      delay(C:09C8)
    16: }
C:0x09D2    22       RET      
这里确实有问题,编译器的的问题,我又知道一个能出错的地方了

出0入0汤圆

发表于 2013-3-22 11:58:54 | 显示全部楼层
一般不要用这种模棱两可的表达式吧,i-=1

出0入0汤圆

 楼主| 发表于 2013-3-22 12:59:24 | 显示全部楼层
mandey 发表于 2013-3-22 11:58
一般不要用这种模棱两可的表达式吧,i-=1

恩恩 ,以后少用

出0入0汤圆

发表于 2013-3-23 11:17:40 来自手机 | 显示全部楼层
学习一下....
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 15:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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