aboutsummaryrefslogtreecommitdiffstats
path: root/include/reg251.inc
diff options
context:
space:
mode:
Diffstat (limited to 'include/reg251.inc')
-rw-r--r--include/reg251.inc225
1 files changed, 225 insertions, 0 deletions
diff --git a/include/reg251.inc b/include/reg251.inc
new file mode 100644
index 0000000..a1c5210
--- /dev/null
+++ b/include/reg251.inc
@@ -0,0 +1,225 @@
+ save
+ listing off ; kein Listing über diesen File
+
+;****************************************************************************
+;* *
+;* AS 1.41 - Datei REG251.INC *
+;* *
+;* Sinn : enthält SFR- und Bitdefinitionen für MCS-251-Prozessoren *
+;* *
+;* letzte Änderungen : 30.12.1995 *
+;* *
+;****************************************************************************
+
+ ifndef reg251inc ; verhindert Mehrfacheinbindung
+
+reg251inc equ 1
+
+ if MOMCPUNAME<>"80C251"
+ fatal "Falscher Prozessortyp eingestellt: nur 80C251 erlaubt!"
+ endif
+
+
+ if MOMPASS=1
+ message "MCS-251-SFR-Definitionen (C) 1995 Alfred Arnold"
+ message "binde \{MOMCPU}-SFRs ein"
+ endif
+
+;----------------------------------------------------------------------------
+; CPU-Kern:
+; ACC = A = R11
+; B = R10
+; SP/SPH = SPX = DR60
+; DPL/DPH/DPXL = DPX = DR56
+; CY wird von AS selbst benutzt
+
+ACC port 0e0h ; Akkumulator
+
+B port 0f0h ; B-Register
+
+PSW port 0d0h ; 8051-kompatibles PSW
+CARRY bit PSW.7 ; Carry
+AC bit PSW.6 ; Auxiliary-Carry
+F0 bit PSW.5 ; Flag 0
+RS1 bit PSW.4 ; Register-Bank-Auswahl
+RS0 bit PSW.3
+OV bit PSW.2 ; Overflow-Flag
+UD bit PSW.1 ; User-Flag
+P bit PSW.0 ; Parity-Flag
+
+PSW1 port 0d1h ; erweitertes PSW (Bits 2-4,6-7 wie in PSW)
+N bit PSW1.5 ; Negatives Ergebnis?
+Z bit PSW1.1 ; Ergebnis 0 ?
+
+SP port 81h ; Stackpointer (Bit 0..7)
+SPH port 0bdh ; Stackpointer (Bit 8..15)
+DPL port 082h ; Datenzeiger (Bit 0..7)
+DPH port 083h ; Datenzeiger (Bit 8..15)
+DPXL port 084h ; Datenzeiger (Bit 15..23)
+
+PCON port 087h ; Power-Down-Modi u.a.
+SMOD1 bit PCON.7 ; Verdopplung Baudrate in Modus 1..3
+SMOD0 bit PCON.6 ; Umschaltung SCON.7 als FE/SM0
+POF bit PCON.4 ; war Spannung weg ?
+GF1 bit PCON.3 ; General Flag 1
+GF0 bit PCON.2 ; General Flag 0
+PD bit PCON.1 ; in Powerdown-Modus schalten
+IDL bit PCON.0 ; in Idle-Modus schalten
+
+IE port 0a8h ; Interrupt-Freigaben (eigentlich IE0,
+ ; aber das ist schon belegt
+EA bit IE.7 ; generelle Interruptsperre
+EC bit IE.6 ; PCA-Interrupts freigeben
+ET2 bit IE.5 ; Interrupts Timer 2 freigeben
+ES bit IE.4 ; Interrupts ser. Schnittstelle freigeben
+ET1 bit IE.3 ; Interrupt Timer 1 freigeben
+EX1 bit IE.2 ; externen Interrupt 1 freigeben
+ET0 bit IE.1 ; Interrupt Timer 0 freigeben
+EX0 bit IE.0 ; externen Interrupt 0 freigeben
+
+IPH0 port 0b7h ; Interrupt-Prioritäten
+IPL0 port 0b8h
+
+;----------------------------------------------------------------------------
+; Ports mit Extrafunktionen:
+
+P0 port 080h ; Port 0
+
+P1 port 090h ; Port 1
+T2 bit P1.0 ; Ein/Ausgabe Timer 2
+T2EX bit P1.1 ; Trigger Timer 2
+ECI bit P1.2 ; externer Takt PCA
+CEX0 bit P1.3 ; Ein/Ausgabe PCA-Modul 0
+CEX1 bit P1.4 ; Ein/Ausgabe PCA-Modul 1
+CEX2 bit P1.5 ; Ein/Ausgabe PCA-Modul 2
+CEX3 bit P1.6 ; Ein/Ausgabe PCA-Modul 3
+CEX4 bit P1.7 ; Ein/Ausgabe PCA-Modul 4
+
+P2 port 0a0h ; Port 2
+
+P3 port 0b0h ; Port 3
+RXD bit P3.0 ; serielle Empfangsleitung
+TXD bit P3.1 ; serielle Sendeleitung
+INT0 bit P3.2 ; externer Interrupt 0
+INT1 bit P3.3 ; externer Interrupt 1
+T0 bit P3.4 ; Takteingang Timer 0
+T1 bit P3.5 ; Takteingang Timer 1
+WR bit P3.6 ; Leseleitung
+RD bit P3.7 ; Schreibleitung
+
+;----------------------------------------------------------------------------
+; serieller Port:
+
+SCON port 098h ; Konfiguration
+FE bit SCON.7 ; fehlerhaftes Stopbit ?
+SM0 bit SCON.7 ; Modusauswahl
+SM1 bit SCON.6
+SM2 bit SCON.5
+REN bit SCON.4 ; Empfänger freigeben
+TB8 bit SCON.3 ; Sendedatenbit 8
+RB8 bit SCON.2 ; Empfangsdatenbit 8
+TI bit SCON.1 ; Zeichen vollständig versandt ?
+RI bit SCON.0 ; Zeichen vollständig empfangen ?
+
+SBUF port 099h ; Datenregister
+SADEN port 0b9h ; Slave-Adreßmaske
+SADDR port 0a9h ; Slave-Adresse
+
+;----------------------------------------------------------------------------
+; Zähler/Watchdog:
+
+TL0 port 08ah ; Zählwert Zähler 0
+TH0 port 08ch
+TL1 port 08bh ; Zählwert Zähler 1
+TH1 port 08dh
+
+TCON port 088h ; Steuerung Zähler 0/1
+TF1 bit TCON.7 ; Überlauf Timer 1 ?
+TR1 bit TCON.6 ; Timer 1 starten/stoppen
+TF0 bit TCON.5 ; Überlauf Timer 0 ?
+TR0 bit TCON.4 ; Timer 0 starten/stoppen
+IE1 bit TCON.3 ; externer Interrupt 1 augetreten ?
+IT1 bit TCON.2 ; Flanken/Pegeltriggerung ext. Interrupt 1
+IE0 bit TCON.1 ; externer Interrupt 0 augetreten ?
+IT0 bit TCON.0 ; Flanken/Pegeltriggerung ext. Interrupt 0
+
+TMOD port 089h ; Steuerung/Modus Zähler 0/1
+M00 bit TMOD.0 ; Modus Timer 0
+M10 bit TMOD.1
+CT0 bit TMOD.2 ; Zähler/Timerumschaltung Timer 0
+GATE0 bit TMOD.3 ; Freigabemodus Timer 0
+M01 bit TMOD.4 ; Modus Timer 1
+M11 bit TMOD.5
+CT1 bit TMOD.6 ; Zähler/Timerumschaltung Timer 1
+GATE1 bit TMOD.7 ; Freigabemodus Timer 1
+
+
+TL2 port 0cch ; Zählwert Zähler 2
+TH2 port 0cdh
+
+T2CON port 0c8h ; Steuerung Zähler 2
+TF2 bit T2CON.7 ; Überlauf Timer 2 ?
+EXF2 bit T2CON.6 ; Flanke an T2EX aufgetreten ?
+RCLK bit T2CON.5 ; Timer 2 oder 1 für seriellen Empfangstakt nutzen ?
+TCLK bit T2CON.4 ; Timer 2 oder 1 für seriellen Sendetakt nutzen ?
+EXEN2 bit T2CON.3 ; Fang durch T2EX freigeben
+TR2 bit T2CON.2 ; Timer 2 starten/stoppen
+CT2 bit T2CON.1 ; Zähler/Timerumschaltung Timer 2
+CPRL2 bit T2CON.0 ; Fang oder Neuladen durch T2EX
+
+T2MOD port 0c9h ; Steuerung/Modus Zähler 2
+T2OE bit T2MOD.1 ; Ausgabe Timer 2 an T2 freigeben
+DCEN bit T2MOD.0 ; Zählrichtung Timer 2
+
+RCAP2L port 0cah ; Reload/Capture-Wert Timer 2
+RCAP2H port 0cbh
+WDTRST port 0a6h ; Watchdog zurücksetzen
+
+;----------------------------------------------------------------------------
+; Zählerfeld:
+
+CCON port 0d8h ; Steuerregister
+CF bit CCON.7 ; Überlauf PCA ?
+CR bit CCON.6 ; PCA-Timer starten/stoppen
+CCF4 bit CCON.4 ; Hat PCA-Modul 4..0 angesprochen ?
+CCF3 bit CCON.3
+CCF2 bit CCON.2
+CCF1 bit CCON.1
+CCF0 bit CCON.0
+
+CMOD port 0d9h ; Modusregister
+CIDL bit CMOD.7 ; PCA während Idle-Mode abschalten
+WDTE bit CMOD.6 ; Watchdog-Ausgabe an PCA-Modul 4 freigeben
+CPS1 bit CMOD.2 ; PCA-Taktauswahl
+CPS0 bit CMOD.1
+ECF bit CMOD.0 ; Interruptfreigabe
+
+CL port 0e9h ; Zählwert
+CH port 0f9h
+
+__defpcamodule macro Offset,NUM
+CCAPM{NUM} port 0d0h+Offset ; Modusregister
+ECOM{NUM} bit CCAPM0.6 ; Komparator Modul x einschalten
+CAPP{NUM} bit CCAPM0.5 ; Fangfunktion Modul x einschalten (pos. Flanke)
+CAPN{NUM} bit CCAPM0.4 ; Fangfunktion Modul x einschalten (neg. Flanke)
+MAT{NUM} bit CCAPM0.3 ; Interrupt bei Gleichheit Modul x einschalten
+TOG{NUM} bit CCAPM0.2 ; High-Speed-Output-Modus Modul x einschalten
+PWM{NUM} bit CCAPM0.1 ; PWM-Modus Modul x einschalten
+ECCF{NUM} bit CCAPM0.0 ; Interrupts durch CCFx einschalten
+CCAP{NUM}L port 0e0h+Offset ; Vergleichs/Fangwert Modul x
+CCAP{NUM}H port 0f0h+Offset
+ endm
+
+ __defpcamodule 0ah,"0"
+ __defpcamodule 0bh,"1"
+ __defpcamodule 0ch,"2"
+ __defpcamodule 0dh,"3"
+ __defpcamodule 0eh,"4"
+
+;----------------------------------------------------------------------------
+
+ endif
+
+ restore ; wieder erlauben
+
+