Hallo,

ich kann die gemessenen Werte nicht auslesen.

Kann mir jemand sagen was ich falsch mache.



Code:
#include "system.h" 
#include "PIC16F877A.h" 

#pragma CLOCK_FREQ 20000000 

#pragma DATA 0x2007, _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_ON & _CP_OFF 

char   RxHiData; 
char   RxLoData; 

void Bus_reservieren(); 
void Bus_freigeben(); 

void main() 
{ 
   set_bit (trisc,3);      // RC3 als Eingang 
   set_bit (trisc,4);      // RC4 als Eingang 
   sspadd = 12; 
   sspcon = 8;         // Master Mode 
   set_bit (sspcon, 5);      // IIC einschalten 

   while (1) 
   { 

      Bus_reservieren(); 
    
      sspbuf = 0xE4; 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3);         // Adresse gesendet 
    
      sspbuf = 0x0; 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3);         // Register gesendet 
    
      sspbuf = 0x51; 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3);         // Befehl gesendet 
    
      Bus_freigeben();    
    
      delay_ms(65);               // warten 

      Bus_reservieren(); 

      sspbuf = 0xE0; 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3);         // Adresse gesendet 

      sspbuf = 0x02; 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3);         // Register gesendet 
    
      Bus_freigeben(); 

      // bis hier scheint er fehlerfrei zu laufen    
          
      Bus_reservieren(); 

      sspbuf = 0xE1; 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3);         // Adresse gesendet 

      set_bit (sspcon2 ,3); 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3); 
      RxHiData = sspbuf;            // Byte gelesen 

      set_bit (sspcon2, 4);         // Ack senden 
    
      set_bit (sspcon2 ,3); 
      while (!(test_bit( pir1, 3))); 
      clear_bit (pir1, 3); 
      RxLoData = sspbuf;            // Byte gelesen 
    
      Bus_freigeben();    
   } 

} 

void Bus_reservieren() 
{ 
   clear_bit (pir1, 3); 
   set_bit (sspcon2, 0); 
   while (!(test_bit( pir1, 3))); 
   clear_bit (pir1, 3);         // Bus übernommen 
} 
void Bus_freigeben() 
{ 
   set_bit (sspcon2, 0); 
   while (!(test_bit( pir1, 3))); 
   clear_bit (pir1, 3);         // Bus freigegeben 
}
Danke im voraus.