/***************************** * Test du module sp03 * * auteur : arlotto 10/03/04 * *****************************/ #include #include #include #include "biosdem2.h" #include "speech.h" signed char tc74_read(void) ; void stupid(void); __CONFIG(0x3539); bank1 char str[50]; void main(void) { signed char t,t1,t2,t3 ; static bit b,b0 ; signed char temp; init_i2c(); lcd_init(); lcd_clear(); adc_on(); say(0,5,3,"hello what's "); for( ; ; ) { temp = tc74_read(); lcd_goto(LCD_LINE_TWO); lcd_printf("temp=%d C",temp); t=adc_read_8b(0); lcd_goto(LCD_LINE_ONE); lcd_printf("temp=%d C",t); if (RB0==0) { if(b==0) { sprintf(str,"board temperature is %d degrees celsius",temp); say(0,5,3,str); b=1; } } else { b=0; } if (RA4==0) { if(b0==0) { lcd_goto(LCD_LINE_ONE); lcd_printf("temp=%d C",t); t1=t/100; t2 = (t%100)/10 ; t3=t-t2*10-t1*100; sprintf(str," temperature is %d %d point %d degrees celsius",t1,t2,t3); say(0,5,3,str); b0=1; } } else { b0=0; } } } #define TC74_WRITE 0x9A // Adresse i2c par défaut #define TC74_READ (TC74_WRITE|1) #define TC74_RTR 0 //Commande Read Temperature signed char tc74_read(void) { signed char temp ; SEN = 1 ; // envoie START et attend la fin while(SEN); //ACKDT = 0 ; SSPIF = 0 ; // envoie adresse et R/W=0 SSPBUF = TC74_WRITE ; while(!SSPIF); SSPIF = 0 ; // envoie commande de lecture SSPBUF = TC74_RTR ; while(!SSPIF); RSEN = 1 ; // envoie Repeated START while(RSEN); SSPIF = 0 ; // envoie adresse et R/W = 1 SSPBUF = TC74_READ ; while(!SSPIF); SSPIF = 0 ; RCEN = 1; // passe en lecture while(!STAT_BF); // et attend la réception des 8 bits temp = SSPBUF ; // lecture de la valeur reçue ACKEN = 1 ; // Envoie un ack while(ACKEN); // et attend la fin PEN = 1; // send stop bit while(PEN); // return temp ; }