| sodapopeiei 
 
 
 Joined: 02 May 2006
 Posts: 3
 
 
 
			    
 
 | 
			
				| my code ds1820 |  
				|  Posted: Wed May 03, 2006 5:06 am |   |  
				| 
 |  
				| please check my code ds1820. it doesn't show the results on Hypertyminal . i doesn't understand. 
 
 #include <12F675.h>
 #use delay(clock=4000000)
 #fuses NOWDT,INTRC
 #use rs232(baud=9600,xmit=PIN_A2,rcv=PIN_A3)
 #define Sensor PIN_A0
 
 int Sensor_Reset(void);
 int Sensor_Write(int data);
 void Sensor_read(void);
 int Temp_H[8],Temp_L[8],i;
 
 void main(){
 int temp;
 setup_adc_ports(NO_ANALOGS);
 setup_adc(ADC_OFF);
 printf("\r\nWaiting for a Sensor...\r\n");
 while (TRUE) {
 while(!Sensor_Reset()) ;
 Sensor_Write(0xCC);
 Sensor_Write(0x44);
 delay_ms(200);
 if(Sensor_Reset()){
 Sensor_Write(0xCC);
 Sensor_Write(0xBE);
 Sensor_read();
 
 temp=((Temp_H[0]*64)+(Temp_H[1]*32)+(Temp_H[2]*16)+(Temp_H[3]*8)+(Temp_H[4]*4)+(Temp_H[5]*2)+(Temp_H[6]*1)+(Temp_H[7]?0.51:0.01));
 printf("\n\rTemp: %d C\n\r",Temp);
 //         printf("\n\rTemp: %2.1f C%d%d%d%d%d%d%d%d\n\r",(Temp_L[7]?(-1*Temp):Temp),Temp_L[0],Temp_L[0],Temp_L[2],Temp_L[3],Temp_L[4],Temp_L[5],Temp_L[6],Temp_L[7]);
 delay_ms(1000);
 }
 }
 }
 
 int Sensor_Reset(void){
 int present;
 output_low(Sensor);
 delay_us(500);
 output_float(Sensor);
 delay_us(5);
 if(!input(Sensor))
 return(FALSE);
 delay_us(65);
 present=!input(Sensor);
 delay_us(240);
 if(present)
 return(TRUE);
 else
 return(FALSE);
 }
 
 
 int Sensor_Write(int data){
 for(i=1;i<=8;++i){
 output_low(Sensor);
 delay_us(10);
 if(shift_right(&data,1,0)){
 output_high(Sensor);
 delay_us(10);
 }
 else{
 output_low(Sensor);
 delay_us(10);
 }
 delay_us(50);
 output_high(Sensor);
 delay_us(50);
 }
 return(TRUE);
 }
 
 void Sensor_read(void){
 for(i=0;i<8;i++) {
 output_low(Sensor);
 delay_us(14);
 output_float(Sensor);
 delay_us(5);
 Temp_H[7-i]=input(Sensor);
 delay_us(100);
 }
 }
 |  |