DS1621.C  


Library for Dallas 1621 Temperature chip

///////////////////////////////////////////////////////////////////////////
////                                                                   ////
////   Library for a Dallas 1621 Temperature chip                      ////
////                                                                   ////
////   init_temp();          Call before the other functions are used  ////
////                                                                   ////
////   d = read_temp();      Read the temerature in degrees (0-255)    ////
////                                                                   ////
////                                                                   ////
////        (C) Copyright 1996,1997 Custom Computer Services           ////
////                                                                   ////
///////////////////////////////////////////////////////////////////////////

#use i2c(master,sda=PIN_B7, scl=PIN_B6)


void temp_config(byte data) {

   i2c_start();
   i2c_write(0x90);
   i2c_write(0xac);
   i2c_write(data);
   i2c_stop();
   delay_ms(11);
}


void init_temp() {
   output_high(PIN_B7);
   output_high(PIN_B6);
   i2c_start();
   i2c_write(0x90);
   i2c_write(0xee);
   i2c_stop();
   temp_config(8);
}


byte read_temp() {        ////// Returns degrees F (0-255)
   byte datah,datal;
   long data;

   i2c_start();
   i2c_write(0x90);
   i2c_write(0xaa);
   i2c_start();
   i2c_write(0x91);
   datah=i2c_read();
   datal=i2c_read(0);
   i2c_stop();
   data=datah;
   data=data*9;
   if((datal&0x80)!=0)
     data=data+4;
   data=(data/5)+32;
   datal=data;
   return(datal);
}


Navigation Bar
tech_support@blitzlogic.com