欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 03:14:26 责任编辑: Author_N1

 

这几个延时函数怎么都不起作用呢?我用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数据操作呢?
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:26
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19929/
本文WWW.DOC100.NET DOC100.NET版权所有。