www.pudn.com > DS18B20.rar > DS18b20__.c


/***************************************************** 
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  
	#ifndef __SLEEP_DEFINED__ 
	#define __SLEEP_DEFINED__ 
	.EQU __se_bit=0x40 
	.EQU __sm_mask=0xB0 
	.EQU __sm_powerdown=0x20 
	.EQU __sm_powersave=0x30 
	.EQU __sm_standby=0xA0 
	.EQU __sm_ext_standby=0xB0 
	.EQU __sm_adc_noise_red=0x10 
	.SET power_ctrl_reg=mcucr 
	#endif 
 
// 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