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; } } }
Hast Du mal die vollständige Bezeichnung Deines 8051. Üblicher Weise heißen die Ports P0,P1,P2,P3 und die kann man natürlich Byteweise zugreifen.
1 | P0 = 0; |
2 | P0 = 0xFF; |
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
Daniel K. schrieb: > einen ganzen > Port als 1 definieren Ein ganzer Port hat 256 mögliche Zustände. Wenn Du 8 high Bits haben möchtest, dann kann man das so schreiben:
1 | IOB = 0xFF; |
#define ALL_LEDS IOB If(taste...) ALL_LEDS = 0xFF;
Okay danke das mit "IOB=0xFF" hat nun funktioniert! aber wie kann ich jetzt zum Beispiel alle Pins mit dem Namen All_LEDs definieren, so wie ich es zuvor mit jeder einzelnen LED gemacht hab ( sbit LED1 = IOB^0 )?? Danke nochmal an alle die hier einen Beitrag geleistet haben!!
Peter Dannegger schrieb: > Hast Du mal die vollständige Bezeichnung Deines 8051. > > Üblicher Weise heißen die Ports P0,P1,P2,P3 und die kann man natürlich > Byteweise zugreifen. >
1 | > P0 = 0; |
2 | > P0 = 0xFF; |
3 | >
|
ja die vollständige Bezeichnung lautet CY7C68013A-56PVXC
Daniel K. schrieb: > CY7C68013A wieder was ziemlich Krudes... 8051-Kern, aber Pin-Bezeichnungen wie ein AVR. Wer denkt sich denn so was aus? Ansonsten: mit
1 | sbit Name = Bit; |
definiert man Bits um, mit
1 | sfr All_LEDs = IOB; |
sollte es da für den Port gehen. Alternativ auch die Definition über die Port-Adresse mit
1 | sfr at IOB All_LEDs; |
ebenso funktionieren.
:
Bearbeitet durch User
erinnert mich stark an mein erstes projekt in der htl stp kann das sein? ^^
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.