www.pudn.com > DS18B20.rar > DS18b20.c, change:2008-01-22,size:4381b


/***************************************************** 
This program was produced by the 
CodeWizardAVR V1.25.5 Professional 
Automatic Program Generator 
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. 
http://www.hpinfotech.com 
 
Project :  
Version :  
Date    : 2008-1-22 
Author  : sy606                            
Company : sy606                            
Comments:  
 
 
Chip type           : ATmega16 
Program type        : Application 
Clock frequency     : 8.000000 MHz 
Memory model        : Small 
External SRAM size  : 0 
Data Stack size     : 256 
*****************************************************/ 
 
#include  
 
// 1 Wire Bus functions 
#asm 
   .equ __w1_port=0x1B ;PORTA 
   .equ __w1_bit=6 
#endasm 
#include <1wire.h> 
 
// DS1820 Temperature Sensor functions 
#include  
 
// Alphanumeric LCD Module functions 
#asm 
   .equ __lcd_port=0x15 ;PORTC 
#endasm 
#include  
#include  
#include  
#include 
// Declare your global variables here 
#define MAX_DEVICES 8 
 
unsigned char rom_code[MAX_DEVICES][9]; 
char lcd_buffer[33];  
 
void main(void) 
{  
unsigned char i,j,devices; 
int temp; 
// Declare your local variables here 
 
// Input/Output Ports initialization 
// Port A initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In  
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T  
PORTA=0x00; 
DDRA=0x00; 
 
// Port B initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In  
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T  
PORTB=0x00; 
DDRB=0x00; 
 
// Port C initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In  
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T  
PORTC=0x00; 
DDRC=0x00; 
 
// Port D initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In  
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T  
PORTD=0x00; 
DDRD=0x00; 
 
// Timer/Counter 0 initialization 
// Clock source: System Clock 
// Clock value: Timer 0 Stopped 
// Mode: Normal top=FFh 
// OC0 output: Disconnected 
TCCR0=0x00; 
TCNT0=0x00; 
OCR0=0x00; 
 
// Timer/Counter 1 initialization 
// Clock source: System Clock 
// Clock value: Timer 1 Stopped 
// Mode: Normal top=FFFFh 
// OC1A output: Discon. 
// OC1B output: Discon. 
// Noise Canceler: Off 
// Input Capture on Falling Edge 
// Timer 1 Overflow Interrupt: Off 
// Input Capture Interrupt: Off 
// Compare A Match Interrupt: Off 
// Compare B Match Interrupt: Off 
TCCR1A=0x00; 
TCCR1B=0x00; 
TCNT1H=0x00; 
TCNT1L=0x00; 
ICR1H=0x00; 
ICR1L=0x00; 
OCR1AH=0x00; 
OCR1AL=0x00; 
OCR1BH=0x00; 
OCR1BL=0x00; 
 
// Timer/Counter 2 initialization 
// Clock source: System Clock 
// Clock value: Timer 2 Stopped 
// Mode: Normal top=FFh 
// OC2 output: Disconnected 
ASSR=0x00; 
TCCR2=0x00; 
TCNT2=0x00; 
OCR2=0x00; 
 
// External Interrupt(s) initialization 
// INT0: Off 
// INT1: Off 
// INT2: Off 
MCUCR=0x00; 
MCUCSR=0x00; 
 
// Timer(s)/Counter(s) Interrupt(s) initialization 
TIMSK=0x00; 
 
// Analog Comparator initialization 
// Analog Comparator: Off 
// Analog Comparator Input Capture by Timer/Counter 1: Off 
ACSR=0x80; 
SFIOR=0x00; 
 
// 1 Wire Bus initialization 
w1_init(); 
 
// LCD module initialization 
lcd_init(16); 
lcd_putsf("CodeVisionAVR\n1 Wire Bus Demo"); 
        delay_ms(2000); 
        lcd_clear(); 
                          
        
         
        devices=w1_search(0xf0,rom_code); 
        sprintf(lcd_buffer,"%-u DEVICE(S) DETECTED\n\r",devices);  
        lcd_clear(); 
        lcd_puts(lcd_buffer); 
        delay_ms(500); 
while (1) 
      { 
        for(i=0;i