Forum: Mikrocontroller und Digitale Elektronik Einzelne Bits an Ports eines 8051 ansprechen


von Maxim (Gast)


Lesenswert?

Mit MOV P2, #FFh kann ich z.B. alle Pins am Port zwei auf 1 setzen. Wie 
wende ich aber den Befehl SETB an einzelnen Pins an? Meine IDE (MIDE) 
meckert, wenn ich SETB P2.1 schreibe. Liegt es an der IDE oder geht das 
generell anders?

von zonendoedel (Gast)


Lesenswert?

Moin,

SETB P2.1 ist syntaktisch korrekt.

Und wech...

von Joe (Gast)


Lesenswert?

setb p3.1

es geht definitiv.

von Maxim (Gast)


Lesenswert?

Dann existieren diese "Variablen" nicht in der Bibliothek. Ich könnte 
sie ja selber hinzufügen, aber ich kenne die Adressen der Pins nicht.

von zonendoedel (Gast)


Lesenswert?

Vllt damit?


DECLARE REG  LITERALLY 'REGISTER';

/********* BYTE REGISTERS ********/
DECLARE
   P0   BYTE  AT(80H)  REG,
   P1   BYTE  AT(90H)  REG,
   P2   BYTE  AT(0A0H) REG,
   P3   BYTE  AT(0B0H) REG;


von Maxim (Gast)


Lesenswert?

Ich lade mir gerade die kostenlose Version von RIDE runter. Mit der 
sollte es gehen.

von Joe (Gast)


Lesenswert?

> Dann existieren diese "Variablen" nicht in der Bibliothek.

Die existieren!! aber lade dir ruhig was neues und erspare dir das 
Denken.

von zonendoedel (Gast)


Lesenswert?

Hmmm,

vllt muß man irgendwo noch den Typ der MCU einstellen.
Gibt ja diverse Ausführungen.

Und wech...

von Maxim (Gast)


Lesenswert?

Na klar, sie existieren ... Aber scheinbar in einer anderen Dimension. 
Oder hast du eine andere Erklärung, warum MIDE (oder der Compiler) Px.x 
nicht verstehen?

von Maxim (Gast)


Lesenswert?

;   AT89S8252 processor definition file
;   ===================================

P0  DATA  080H
SP  DATA  081H
DP0L  DATA  082H
DP0H  DATA  083H
DP1L  DATA  084H
DP1H  DATA  085H
SPDR  DATA  086H
PCON  DATA  087H
TCON  DATA  088H
TMOD  DATA  089H
TL0  DATA  08AH
TL1  DATA  08BH
TH0  DATA  08CH
TH1  DATA  08DH
P1  DATA  090H
WMCON  DATA  096H
SCON  DATA  098H
SBUF  DATA  099H
P2  DATA  0A0H
IE  DATA  0A8H
SPSR  DATA  0AAH
P3  DATA  0B0H
IP  DATA  0B8H
T2CON  DATA  0C8H
T2MOD  DATA  0C9H
RCAP2L  DATA  0CAH
RCAP2H  DATA  0CBH
TL2  DATA  0CCH
TH2  DATA  0CDH
PSW  DATA  0D0H
SPCR  DATA  0D5H
ACC  DATA  0E0H
B  DATA  0F0H

IT0  BIT  088H
IE0  BIT  089H
IT1  BIT  08AH
IE1  BIT  08BH
TR0  BIT  08CH
TF0  BIT  08DH
TR1  BIT  08EH
TF1  BIT  08FH
T2  BIT  090H
T2EX  BIT  091H
SS  BIT  094H
MOSI  BIT  095H
MISO  BIT  096H
SCK  BIT  097H
RI  BIT  098H
TI  BIT  099H
RB8  BIT  09AH
TB8  BIT  09BH
REN  BIT  09CH
SM2  BIT  09DH
SM1  BIT  09EH
SM0  BIT  09FH
EX0  BIT  0A8H
ET0  BIT  0A9H
EX1  BIT  0AAH
ET1  BIT  0ABH
ES  BIT  0ACH
ET2  BIT  0ADH
EA  BIT  0AFH
RXD  BIT  0B0H
TXD  BIT  0B1H
INT0  BIT  0B2H
INT1  BIT  0B3H
T0  BIT  0B4H
T1  BIT  0B5H
WR  BIT  0B6H
RD  BIT  0B7H
PX0  BIT  0B8H
PT0  BIT  0B9H
PX1  BIT  0BAH
PT1  BIT  0BBH
PS  BIT  0BCH
PT2  BIT  0BDH
CPRL2  BIT  0C8H
CT2  BIT  0C9H
TR2  BIT  0CAH
EXEN2  BIT  0CBH
TCLK  BIT  0CCH
RCLK  BIT  0CDH
EXF2  BIT  0CEH
TF2  BIT  0CFH
P  BIT  0D0H
OV  BIT  0D2H
RS0  BIT  0D3H
RS1  BIT  0D4H
F0  BIT  0D5H
AC  BIT  0D6H
CY  BIT  0D7H

RESET  CODE  000H
EXTI0  CODE  003H
TIMER0  CODE  00BH
EXTI1  CODE  013H
TIMER1  CODE  01BH
SINT  CODE  023H
TIMER2  CODE  02BH

von Joe (Gast)


Lesenswert?

      $NOMOD51
      $INCLUDE (89S8252.MCU)

hast du es so gemacht ?

von Maxim (Gast)


Lesenswert?

Also in MIDE geht das Einbinden anders. Da muss man im Menü eine 
Bibliothek auswählen. Wenn ich das nicht machen, versteht MIDE nicht mal 
P2, ist aber auch klar.

Mit RIDE funktioniert das jetzt jedenfalls ohne Probleme. Lag also doch 
an MIDE.

von Joe (Gast)


Lesenswert?

Nein, es geht so wie ich es dir gesagt habe.

Dann in Preferences "c:\mide\asem51" eintragen.

von Maxim (Gast)


Lesenswert?

Stimmt, jetzt packts auch MIDE. Aber ich habe mittlerweile den Debugger 
in RIDE ins Herz geschlossen.

Was bedeutet die Anweisung $NOMOD51?

von Joe (Gast)


Lesenswert?

Das er nicht den Urvater 8x51 verwendet sondern den von dir gewählten 
Typ.

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.