ADT7302
Rev. B | Page 13 of 16
The following software program shows how to program a
PIC16F873 to communicate with the ADT7302. The
PIC16F873 is configured as an SPI master with the Port A.1
pin used as
CS
. Any microchip microcontroller can use this
program by simply exchanging the include file for the device
that is being used.
#include <16F873.h>
#device adc=8
#use delay(clock=4000000)
#fuses NOWDT,XT, PUT, NOPROTECT, BROWNOUT, LVP
#BIT CKP = 0x14.4
#define CS PIN_A1
void main(){
int MSByte,LSByte;
long int ADC_Temp_Code;
float TempVal,ADC_Temp_Code_dec;
setup_spi(spi_master);                                                      //Pic is set up as Master device.
CKP = 1;                                                                        //Idle state of clock is high.
do{            
  delay_ms(10);                                                                  //Allow time for conversions.
  Output_low(CS);                                                               //Pull CS low.
  delay_us(10);                                                                  //CS to SCLK setup time.
  MSByte = SPI_Read(0);                                                      //The first byte is clocked in.
LSByte = SPI_Read(0);                                                //The second byte is clocked in.
delay_us(10);                                                            //SCLK to CS setup time.
  Output_High(CS);                                                            //Bring CS high.
ADC_Temp_Code = make16(MSByte,LSByte);                           //16bit ADC code is stored ADC_Temp_Code.
  ADC_Temp_Code_dec = (float)ADC_Temp_Code;                        //Convert to float for division.
  if ((0x2000 & ADC_Temp_Code) == 0x2000)                           //Check sign bit for negative value.
{   
        TempVal = (ADC_Temp_Code_dec - 16384)/32;                  //Conversion formula if negative temperature.
        }
  else
        {
  TempVal = (ADC_Temp_Code_dec/32);                                 //Conversion formula if positive temperature.
        }
}while(True);
                                                                                      //Temperature value stored in TempVal.
}