打印
[AVR单片机]

检测不到18B20存在低脉冲

[复制链接]
1743|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huamunv|  楼主 | 2009-12-29 23:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好, 我写个18B20的程序 , 但是怎么也检测不到,1820存在低脉冲, 程序就停在while(PINA&0x04) ;这个语句不动了 , 我用的是AVR单片机内部的1MHz晶振, 用AVRstudio仿真时候也是设置为1MHz的频率. 但是怎么地还是不行, 请帮忙指点一下,谢谢

1820的复位程序和延时函数:
#include<avr/io.h>
#include<avr/interrupt.h>
#include<avr/signal.h>
#define uint unsigned int
#define uchar unsigned char
#define BIT(x) (1<<x)



void delay(uint n)   // 10ms
{ uint i,j;
for(i=0;i<n;i++)
   for(j=0;j<496;j++);
}

void Delayus(uint US)    //us     
{
uint i,j;
for(i=0;i<US;i++);

}


void init_18B20()
{
uint n=2;
DDRA|=BIT(2);
PORTA|=BIT(2);
PORTA&=~BIT(2);
Delayus(19) ; //延时491微秒

PORTA|=BIT(2);
DDRA&=~BIT(2);


while(n--);   //延时47uS

while(PINA&0x04) ; //停在这里怎么也过不去啊???????

DDRA|=BIT(2);
PORTA|=BIT(2);
Delayus(5);   //延时150微秒, 60-240微秒

}

相关帖子

沙发
linhai2009| | 2009-12-30 00:10 | 只看该作者
用示波器看过波形吗?

使用特权

评论回复
板凳
huamunv|  楼主 | 2010-1-1 22:42 | 只看该作者
2# linhai2009
没有

使用特权

评论回复
地板
suoma| | 2010-1-3 21:58 | 只看该作者
不懂那,18B20不是三极管吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

730

帖子

1

粉丝