大家好, 我写个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微秒
} |