C portok

Dévényi Zsolt dzsolt at axelero.hu
Mon Mar 26 08:08:14 CEST 2007


Sziasztok!
 
Tudtok valami jo, es elegans megoldast arra, hogy kulonbozo portok kulonbozo
bitjeit (nevezzuk egyszeruen input1-input10), hogyan lehetne tombkent vagy
ertelmes modon kezelni? Arra lenne szuksegem, hogy detektaljam, hogy
valtozott-e valamelyik bit, es ha igen akkor tudjak valamit tevekenykedni.
Persze a portbitek nem egymas utaniak:
 #define IN1    (!PORTFbits.RF7)   
 #define IN2    (!PORTAbits.RA4)   
 #define IN3    (!PORTCbits.RC1)   
 #define IN4    (!PORTCbits.RC3)   
 #define IN5    (!PORTCbits.RC6)   
 #define IN6    (!PORTCbits.RC7)   
 #define IN7    (!PORTBbits.RB3)   
 #define IN8    (!PORTBbits.RB2)   
 #define IN9    (!PORTEbits.RE1)   
 #define IN10  (!PORTEbits.RE5)  
 
Az ilyeneket szeretnem elkerulni:
 
if (( OldBits.Old1 != IN1 ) || ( OldBits.Old2 != IN2 ) || 
  ( OldBits.Old3 != IN3 ) || ( OldBits.Old4 != IN4 ) || 
  ( OldBits.Old5 != IN5 ) || ( OldBits.Old6 != IN6 ) || 
  ( OldBits.Old7 != IN7 ) || ( OldBits.Old8 != IN8 ) ||    
  ( OldBits.Old9 != IN9_) || ( OldBits.Old10!= IN10 )){
 
 if (OldBits.Old1 != IN1){
    UDPPut('1');
    if (IN1){
     UDPPut(1);
    }else{
     UDPPut(0);
    }    
    OldBits.Old1 = IN1;
   }
   else if (OldBits.Old2 != IN2){
    UDPPut('2');
    if (IN2){
     UDPPut(1);
    }else{
     UDPPut(0);
    }    
    OldBits.Old2 = IN2;
   }
.
.
.
.
   else if (OldBits.Old10 != IN10){
    UDPPut('10');
    if (IN10){
     UDPPut(1);
    }else{
     UDPPut(0);
    }    
    OldBits.Old10 = IN10;
   }
 
}
 
Koszi: Zsolt


More information about the Elektro mailing list