logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PCF8574[gcc] - odczyt wejść

gothye 02 Sie 2009 13:04 1982 5
REKLAMA
  • #1 6848332
    gothye
    Poziom 33  
    Witam
    komunikacje z expanderem PCF za pomocą TWI już mam dopracowaną ,chciałbym jednak odczytany bajt z PCF rozłożyć na bity wejść abym mógł odczytać stan każdego wejścia osobno ,w jaki sposób to wykonać w C ?
  • REKLAMA
  • #2 6848358
    ZbeeGin
    Poziom 39  
    Zamaskować by uzyskać dany bit (operacja AND) + ewentualnie przesunąć w prawo (operacja >>) by było łatwiej.
  • REKLAMA
  • #3 6848431
    gothye
    Poziom 33  
    mógłbyś podać przykład ?
  • REKLAMA
  • Pomocny post
    #4 6848449
    terran*
    Poziom 11  
    
    int bity[8];
    char dane;
    for(i=0;i<8;i++){
    bity[i] = dane&0x01;
    dane = dane>>1;
    //printf("%d \n", bity[i]);
    }
    


    tracimy rejestr z danymi.
  • REKLAMA
  • Pomocny post
    #5 6848474
    lnl
    Poziom 12  
    Lepiej żeby tablica "bity" była typu char, zajmie mniej miejsca w RAMie :)

    Drugi sposób bez przesuwania danych to:

    
    unsigned char i;
    unsigned char bits[8];
    unsigned char byte;
    
    for(i=0;i<8;i++)
    {
    
    	if ((byte & (1<<i)) > 0)
    		bits[i] = 0x01;
    	else
    		bits[i] = 0x00;
    
    }
    


    Z tym, że na pewno potrwa dłużej ze względu na IFy.

    Pozdrawiam,
    Michał
  • #6 6848535
    gothye
    Poziom 33  
    dziękuje wszystkim ,dostosowałem swój kod do postu terran* i działa świetnie :) .Pozdrawiam
REKLAMA