首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

这几个延时函数如何都不起作用呢?小弟我用atmega8a!求大侠们指点!

2013-11-23 
这几个延时函数怎么都不起作用呢?我用atmega8a!!求大侠们指点!!用示波器看输出的波形没有变化!![解决办法]

这几个延时函数怎么都不起作用呢?我用atmega8a!!求大侠们指点!!
用示波器看输出的波形没有变化!!
[解决办法]
从编译器优化执行代码的角度出发,延时程序的执行过程是无用的,所以可能会自作聪明地将其优化掉,这样就没有延时了;

你可以检查一下,编译时所执行的make命令,就是gcc命令行上的附加开关,是否有 -O, -O1, -O2, -O3等, 数字越高,优化的级别越强,将优化开关去掉,再看看延时是否就有效果了.
[解决办法]

引用:
我用的atmel studio ,如何更改这些编译命令呢


看情况,确实很有可能是被编译器优化掉了,之前在CCS上遇到过。

没怎么用过atmel studio,估计在编译器的相关设置和选项里可以修改,自己试试吧。
[解决办法]
仔细看看你的延时函数,可能起不到明显的延时作用,延时单位在指令周期级别;delay那个函数看起来有点怪怪的
[解决办法]
void port_init(void)
{
PORTB = 0x00;
DDRB  = 0x00;
PORTC = 0x00; //m103 output only
DDRC  = 0x00;
PORTD = 0x00;
DDRD  = 0x00;
}
不是没有延时,是你的IO配置错了,你配置成输入方式了。  你怎么能软件对IO数据操作呢?

热点排行