找回密码
 注册
关于网站域名变更的通知
查看: 751|回复: 7
打印 上一主题 下一主题

ICC avr 不执行语句

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-27 10:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
ICC avr 不执行语句
- Z% @( {6 p4 O$ a( x8 U" J4 E+ E+ @  u  ^+ [, `; d" {, @2 z8 f

) ?' v1 ?% l# M, H, b- T
& R3 ^1 X3 A( n# q# G8 K大家看看这个程序,我用protues仿真,LED可以亮灭,但是想加入延时,自己写的延时加上去没有反应,用个自减语句也没反应,发现除了IO口的亮灭语句执行外,在IO亮灭语句间加函数、FOR、WHILE、等都不会执行,而且加这些语句之后连它后面的亮灭语句也不执行了。如果只有IO口的亮灭语句和大循环的while语句,可以闪烁,但是跳不出循环,我估计这个大循环while也有问题。
0 ^7 i3 J# z6 f5 h1 ~就这个几个语句,我程序没问题的啊,有谁碰到过。好像我用AS6.2也有相同问题。真是太奇葩了
. Q( i3 [5 d# j$ F

该用户从未签到

2#
发表于 2019-3-27 10:58 | 只看该作者
计算一下你的延时时间,如果太长的话,要很长时间才有反映的,这种测试时的延时最好在半秒以上,一秒以内,容易看到反应

点评

果真如此,竟然忘了在最后也加上延时。太不严谨了。多谢前辈指点!  详情 回复 发表于 2019-3-27 11:18

该用户从未签到

3#
 楼主| 发表于 2019-3-27 11:18 | 只看该作者
helendcany 发表于 2019-3-27 10:58/ e+ C" M# G' v& F( M1 ~5 e
计算一下你的延时时间,如果太长的话,要很长时间才有反映的,这种测试时的延时最好在半秒以上,一秒以内, ...

) L0 O8 ?. N) V/ a4 H果真如此,竟然忘了在最后也加上延时。太不严谨了。多谢前辈指点!
% a9 D  ^3 W, S3 s; o  |# a' n# J

该用户从未签到

4#
发表于 2019-3-27 11:33 | 只看该作者
看你这个图,是低电平点亮。
9 N: \1 h3 w$ l- Q5 U6 e你这个代码有两个很严重的问题。" {, g2 X1 L- X; h, C
1、PA口先0X01,然后延时,最后0XFF,这个时候执行完马上又会回到最开始PA=0X01,因为是while(1)这个无限循环。第一个问题就在这里了,AVR执行速度很快,PA=0XFF,然后回到开始PA=0X01,也就是说PA=0XFF根本没有保持长时间。那么,人眼肯定是看不到LED全灭,因为马上变成0X01。因为你在PA=0X01后面加了一点延时,说明PA=0X01保持时间比PA=0XFF久,所以宏观上看,肯定是看到七个灯亮,一个灯灭的效果。所以在PA=0XFF后面,也是要放延时的。
) y3 ?, l/ J2 }, K) @2、你的 while(i--)延时,里面是2000,我们粗略估算,假设执行一次是2us,那么执行2000次是4000us,也就是4ms。4ms的延时,人眼肯定是分辨不出来的,你的延时太短了!; Z7 [  s$ \0 g* c9 j! J1 q& b

  l7 k' c- B6 H9 r) ]要成功,那么你应该这样:每个PA状态后面都要放延时。然后每个延时时间要长。

该用户从未签到

5#
发表于 2019-3-27 13:45 | 只看该作者
烧写程序是可以修改熔丝位来选择内部晶振,ATMEGA16芯片默认1M。

该用户从未签到

6#
 楼主| 发表于 2019-3-27 13:50 | 只看该作者
谢谢各位的指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-11 16:31 , Processed in 0.171875 second(s), 30 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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