用GCC写的mega128的测试程序,加了_delay_ms()函数就不好使了,不知道为什么。 程序贴下面了

用GCC写的mega128的测试程序,加了_delay_ms()函数就不好使了,不知道为什么。 程序贴下面了,第1张

很简单的是熔丝位设置问题!!mega128A是兼容mega128的。在你把程序加载到单片机之前,在软件里设置一下熔丝位,一般软件默认是片内RC振荡器,所以选择外部晶振我用PROGISP(Ver1.6.8)直接用ISP下载所以要这样设置(参考图片)!!!

AVR studio里也应该有设置的

注意:熔丝位不要乱设置会引起锁死!!到那时就惨了!!

1.有一种关键字叫inline,虽然我不用IAR,但是我想常规的编译器都会支持这种功能,当inline出现在函数声明前面的时候,编译器会将这个函数在调用处自动展开

2.你说的循环10遍的问题,有一种编译优化叫循环展开,即将小于一定循环次数的循环 *** 作直接像你所说的依次执行,而不是通常循环指令,这个 *** 作要结合编译器手册看具体使用说明了,所以你还是要研究一下IAR的编译优化,看过这块,你的问题应该得到解决

应该是PORTA的低4位,循环输出0

比如

num=2时,PORTA=PORTA&FE,第1个I/O口(PA0)将输出0,其他口保留原状

num=3时,PORTA的第2个I/O口(PA1)将输出0,其他口保留原状

num=4时,PORTA的第3个I/O口(PA2)将输出0,其他口保留原状

num=5时,PORTA的第4个I/O口(PA3)将输出0,其他口保留原状

num=40时,PORTA的低4位(PA0~PA3),将全部置1

因此,程序可能是跑马灯一样的效果,四个灯,依次亮起来,然后一段时间后熄灭,再依次亮起来,一直这样循环下去


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11178577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存