搜索
bottom↓
回复: 3

winavr 编译中碰到一个奇怪的问题。高人请指点。在线等!!!!急!可能是WINAVR中的一个BUG

[复制链接]

出0入0汤圆

发表于 2007-9-16 16:01:08 | 显示全部楼层 |阅读模式
原码:
原意思是在定时中断中将t_v[15]--;定时一毫秒进一次。

void Msdelay(UW ms)
{
        t_v[15]=ms;
        while(t_v[15]);
        PORTC=0xff;
        PORTA=0xff;
        PORTD=0xff;
        while(1);
}
对应.lss
void Msdelay(UW ms)
{
124:        90 93 44 01         sts        0x0144, r25
128:        80 93 43 01         sts        0x0143, r24
        t_v[15]=ms;//此行没问题。
        while(t_v[15]);//此行有问题。
12c:        00 97               sbiw        r24, 0x00        ; 0
(应该用t_v[15]的地址里的数与0比较才对,这里用r24里的数比较,大家看有没有问题?)
12e:        f1 f7               brne        .-4              ; 0x12c <Msdelay+0x8>
        PORTC=0xff;
130:        8f ef               ldi        r24, 0xFF        ; 255
132:        85 bb               out        0x15, r24        ; 21
        PORTA=0xff;
134:        8b bb               out        0x1b, r24        ; 27
        PORTD=0xff;
136:        82 bb               out        0x12, r24        ; 18
138:        ff cf               rjmp        .-2              ; 0x138 <Msdelay+0x14>

0000013a <main>:
13a:        0e 94 49 00         call        0x92        ; 0x92 <Sysinit>
13e:        82 e0               ldi        r24, 0x02        ; 2
140:        90 e0               ldi        r25, 0x00        ; 0
142:        0e 94 92 00         call        0x124        ; 0x124 <Msdelay>
146:        fb cf               rjmp        .-10             ; 0x13e <main+0x4>

00000148 <__vector_1>:
        while(1);
}

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

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

出0入0汤圆

发表于 2007-9-16 16:28:32 | 显示全部楼层
r24里存的是ms,while(t_v[15])等同于while(ms),所以把r24和0比较,就是t_v[15]和0比较。
楼主要想让程序按照自己想法运行,恐怕得好好复习一下volatile的用法

出0入0汤圆

 楼主| 发表于 2007-9-16 16:38:52 | 显示全部楼层
非常感谢GHOST2,在变量前加volatile就OK了。 。。。。不过该程序用ICC编译完全正常。没想到WINAVR有这要求。
该贴申请关闭!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-18 16:06

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

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