Forum: Mikrocontroller und Digitale Elektronik 8051 nur 1 Pin schalten, andere belassen


von Ava A. (avadis)


Lesenswert?

Hallo zusammen,

wie kann ich bei einem 8051 (XC888CLM) nur einen Pin schalten?
Ich arbeite gerade in der Keil Umgebung, und mein P3_DATA ist als sfr 
deklariert.

Habe ständigen Wechsel auf meinem Port, und möchte nur den PIN 3.4 
toggeln, ohne die Werte der anderen Pins zu beinflussen.
Leider gibt es keine Routine wie P3_DATA.4 oder ähnlich?!

Hatte als erste Idee: P3_DATA =~ (P3_DATA&0xF7), allerdings ist das 
natürlich blödsinn.
Bräuchte sowas wie P3.4 =~ P3.4

Hilfe :D

von Lothar (Gast)


Lesenswert?

sbit toggle = P3^4;
toggle ^= 1;

von Jim M. (turboj)


Lesenswert?

Dann schreibs doch hin. P3 ist im Bit-addressierbaren Bereich. Bei mir 
funktioniert:
1
sbit P34 = P3^4;
2
3
void foo()
4
{
5
  P34 = ! P34;
6
}

von Ava A. (avadis)


Lesenswert?

klappt!

Hab in der register overview gesehen, das mein P3_DATA adresse 0xB0 ist 
und beim P3_DIR adresse 0xB1.
Wusste aber nicht so recht, wie ich jetzt das bit aus dem adressraum 
ansprechen kann.

Lösung "^" :)

Vielen Dank!

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
Noch kein Account? Hier anmelden.