Alle Pins eines Ports als 1 definieren (8051)

OP #3299428
Lesenswert?

Hey..
ich versuche gerade das Programmieren mit dem FX2 (8051) und einem 
Zusatzboard mit 8 LEDs am Port B und 4 Tasten am Port A zu lernen und 
hab auch schon "erste Erfolge" und zwar soll das folgende Programm bei 
betätigen der Taste am PA0 alle LEDs zum leuchten bringen, was übrigens 
auch so funktioniert wie es unten ist. Jedoch sollte das doch auch viel 
einfacher funktionieren oder?? kann man nicht irgendwie einen ganzen 
Port als 1 definieren oder so? Ich hoffe Ihr wisst was ich meine. Danke 
schonmal im Voraus für eure HILFE!!!!

#define EIN 0
#define AUS 1
#define ZU 0
#define OFFEN 1

sbit LED1 = IOB^0;
sbit LED2 = IOB^1;
sbit LED3 = IOB^2;
sbit LED4 = IOB^3;
sbit LED5 = IOB^4;
sbit LED6 = IOB^5;
sbit LED7 = IOB^6;
sbit LED8 = IOB^7;

sbit TASTE1 = IOA^0;
sbit TASTE2 = IOA^1;
sbit TASTE3 = IOA^2;
sbit TASTE4 = IOA^3;

void main(void)
{
  OEB = 0xFF;
  OEA = 0x00;

  while(1)
  {
    if(TASTE1 == OFFEN)

    {
      LED1 = AUS;
      LED2 = AUS;
      LED3 = AUS;
      LED4 = AUS;
      LED5 = AUS;
      LED6 = AUS;
      LED7 = AUS;
      LED8 = AUS;
    }
    else
    {

      LED1 = EIN;
      LED2 = EIN;
      LED3 = EIN;
      LED4 = EIN;
      LED5 = EIN;
      LED6 = EIN;
      LED7 = EIN;
      LED8 = EIN;
    }
  }
}
Gast #3299496
Lesenswert?

Hallo,

in der 8051-Architektur sind alle bit-ansprechbaren Ports auch als 
normales Port (als Byte) im Port-Adressraum verfügbar, das machst du ja 
auch (OEB = 0xFF;). Dann must du aber die Bits selber 
zusammenkombinieren.

Gruss Reinhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren