打印
[PIC®/AVR®/dsPIC®产品]

求助:XC8编译器delay函数异常

[复制链接]
958|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jianghehupo|  楼主 | 2016-5-12 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LED闪烁的程序,delay函数软件延时,但就是不闪烁,一直亮,加大延时数值没反应。

看编译后的汇编代码是这样的:
!void delay(void)
!{
!    int i;
!   
!    for(i=0; i++; i<10000)
0x7E1: CLRF __pcstackCOMMON
0x7E2: CLRF 0x72
0x7E3: INCF __pcstackCOMMON, F
0x7E4: BTFSC STATUS, 0x2
0x7E5: INCF 0x72, F
0x7E6: DECF __pcstackCOMMON, W
0x7E7: IORWF 0x72, W
0x7E8: BTFSC STATUS, 0x2
0x7E9: RETURN
0x7EB: GOTO 0x7E3
!    {
!        asm("NOP");
0x7EA: NOP
0x7EB: GOTO 0x7E3

前边带感叹号的是C源程序。

懂汇编的朋友看看这是什么情况。
沙发
jianghehupo|  楼主 | 2016-5-12 21:42 | 只看该作者
本帖最后由 jianghehupo 于 2016-5-12 22:16 编辑

for循环写错了,无语

使用特权

评论回复
板凳
mcumail| | 2016-5-20 10:51 | 只看该作者
应该是这样吧!-------------for(i=0; i<10000 ;i++)

使用特权

评论回复
地板
zhanzr21| | 2016-5-25 20:47 | 只看该作者
for裡面 i++用做條件判斷的話一直判斷的是i++之後的值, 這裡只有到了int的極限翻轉了才可能為0導致for循環退出 所以不是你要的結果

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

86

帖子

1

粉丝