请教一个avr软件延时的问题
我用的编译器是iccv7 for avr我想写一个1us的精确延时函数,我不知道我样写的对不,我的晶振是8mhz,程序如下void delay_us(uint us ){
uint i;
for(i=0;i<us;i++)
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
} 精确的延时 还是拿示波器调吧
这样写肯定不精确 用C延时差距很大的
void main(void)
{
init_devices();
while(1)
{
PORTA^=0x80;
}
}
这么一句口线翻转的语句,16M晶振,翻转时间是500多纳秒,下面是编译器翻译出来的
(0042)while(1)
(0043){
(0044) PORTA^=0x80;
FILE: <library>
00063 E880 LDI R24,0x80
00064 E090 LDI R25,0
00065 B22B IN R2,0x1B
00066 2433 CLR R3
00067 2628 EOR R2,R24
00068 2639 EOR R3,R25
00069 BA2B OUT 0x1B,R2
0006A CFF8 RJMP 0x0063
0006B 9508 RET
最好还是示波器测试调 xiaoziwen 发表于 2013-7-8 20:19 static/image/common/back.gif
精确的延时 还是拿示波器调吧
我试式,你写过1us精确的延时函数不? 李鸿鸿 发表于 2013-7-8 20:22 static/image/common/back.gif
这样写肯定不精确
请问下兄弟你 写过那样的程序不 yao2013lin 发表于 2013-7-8 20:29 static/image/common/back.gif
请问下兄弟你 写过那样的程序不
没有 因为不知道要那么精确的延时 干什么用。。。 我写了一个18b20程序,没有用,用液晶显示,液晶显示乱码。所以我在怀疑是不是延时出问题了。 yao2013lin 发表于 2013-7-8 20:29 static/image/common/back.gif
请问下兄弟你 写过那样的程序不
这样精确的延时一般都是用C+汇编的 yao2013lin 发表于 2013-7-8 20:35 static/image/common/back.gif
我写了一个18b20程序,没有用,用液晶显示,液晶显示乱码。所以我在怀疑是不是延时出问题了。 ...
这个DS18B20也要这么精确,还没见过,只要按照手册上的要求就可以了 18b20的时序是比较要严格 但是也没必要精度为1us的delay
你可以先串口输出 检查问题是不是真的出在18b20
然后仔细对照时序 或者在网上找能够正常使用的
这些器件的时延没有那么严格 应该是时序的问题
至于你的这个代码 我没看 很久以前做个18b20
现在也不一定能明白了 抱歉 李鸿鸿 发表于 2013-7-8 20:39 static/image/common/back.gif
这个DS18B20也要这么精确,还没见过,只要按照手册上的要求就可以了
嗯,我试试 xiaoziwen 发表于 2013-7-8 20:40 static/image/common/back.gif
18b20的时序是比较要严格 但是也没必要精度为1us的delay
你可以先串口输出 检查问题是不是真的出在18b20
没事,我自己再对照时序来看看 yao2013lin 发表于 2013-7-8 20:50 static/image/common/back.gif
嗯,我试试
你那个LCD1602没有延时,即你调用调用写命令或写数据没有延时,所以液晶出现乱码 李鸿鸿 发表于 2013-7-8 20:53 static/image/common/back.gif
你那个LCD1602没有延时,即你调用调用写命令或写数据没有延时,所以液晶出现乱码 ...
我试了,不是延时的问题,液晶能显示字符,就是显示不了温度。 cdwess 发表于 2013-7-8 20:25 static/image/common/back.gif
用C延时差距很大的
void main(void)
{
请问下你用的是什么编译软件 yao2013lin 发表于 2013-7-8 22:26 static/image/common/back.gif
请问下你用的是什么编译软件
看看主函数,应该是这样的
while(1)
{
read_temp();//多加
delay_ms(5);//多加
temp=read_temp();
disp=temp/10;
disp=temp%10;
dipaly_1602();
}
页:
[1]