Datasheet
ADT7301
Rev. 0 | Page 13 of 16
The following software program shows how to program a
PIC16F873 to communicate with the ADT7301. 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 set-up 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 set-up time.
Output_High(CS); //Bring CS high.
ADC_Temp_Code = make16(MSByte,LSByte); //16 bit ADC code is stored ADC_Temp_Code.
ADC_Temp_Code_dec = (float)ADC_Temp_Code; //Covert 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.
}