From 333b605b2afd472b823aeda0adf0e8b1ea9843c0 Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Mon, 27 May 2019 02:41:51 +0100 Subject: initial commit from asl-1.41r8.tar.gz --- include/stddef51.inc | 374 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 374 insertions(+) create mode 100644 include/stddef51.inc (limited to 'include/stddef51.inc') diff --git a/include/stddef51.inc b/include/stddef51.inc new file mode 100644 index 0000000..bcc53e0 --- /dev/null +++ b/include/stddef51.inc @@ -0,0 +1,374 @@ + save + listing off ; kein Listing über diesen File + +;**************************************************************************** +;* * +;* AS 1.41 - Datei STDDEF51.INC * +;* * +;* Sinn : enthält SFR- und Bitdefinitionen für die MCS-51-Prozessoren * +;* * +;* letzte Änderungen : 7. 1.1993 * +;* 14. 1.1993 USING-Makro hinzugefügt * +;* 26. 1.1993 REGUSAGE-Variable ergänzt * +;* 21. 1.1993 Erzeugerhinweis * +;* 5. 6.1993 IPC & IEC hinzugefügt * +;* SAVE & RESTORE * +;* Prozessorsperre (Idee von Matthias) * +;* 11. 9.1993 Meldung nur im 1.Pass * +;* 12. 5.1994 DS80C320-Register hinzugefügt * +;* 25. 6.1995 87C750 hinzugefügt * +;* 22. 3.1996 SFR's fur 80517 eingefügt * +;* (von Gabriel Jager) * +;* 14. 6.1996 80517-Korrekturen wg. Klammerung * +;* 26. 3.1997 Abfrage auf MOMCPU * +;* * +;**************************************************************************** + + ifndef stddef51inc ; verhindert Mehrfacheinbindung + +stddef51inc equ 1 + + if (MOMCPUNAME<>"87C750")&&(MOMCPUNAME<>"8051")&&(MOMCPUNAME<>"8052")&&(MOMCPUNAME<>"80C320")&&(MOMCPUNAME<>"80515")&&(MOMCPUNAME<>"80517") + fatal "Falscher Prozessortyp eingestellt: nur 87C750, 8051, 8052, 80C320, 80515 oder 80517 erlaubt!" + endif + + + if MOMPASS=1 + message "MCS-51-SFR-Definitionen (C) 1993 Alfred Arnold/Gabriel Jager" + message "binde \{MOMCPU}-SFRs ein" + endif + +;---------------------------------------------------------------------------- +; erstmal die Sachen, die es (fast) überall gibt : + +P0 SFRB 80h ; I/O-Ports +P1 SFRB 90h +P2 SFRB 0a0h +P3 SFRB 0b0h +RD BIT P3.7 ; Port 3: Schreibleitung +WR BIT P3.6 ; Leseleitung +T1 BIT P3.5 ; Testleitung 1 +T0 BIT P3.4 ; Testleitung 0 +INT1 BIT P3.3 ; ext. Interrupt 1 +INT0 BIT P3.2 ; ext. Interrupt 0 +TXD BIT P3.1 ; ser. Ausgang +RXD BIT P3.0 ; ser. Eingang + if MOMCPU=80C320H +TXD1 BIT P1.3 ; zweiter ser. Ausgang +RXD1 BIT P1.2 ; zweiter ser. Eingang + endif + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +SP SFR 81h ; Stapelzeiger +DPL SFR 82h ; Datenzeiger Bit 0..7 +DPH SFR 83h ; " Bit 8..15 + if MOMCPU=80C320H +DPL0 SFR DPL +DPH0 SFR DPH +DPL1 SFR 84h ; zweiter Datenzeiger 80C320 +DPH1 SFR DPL1+1 +DPS SFR 86h ; Bit 0=Umschaltung DPTR0<-->DPTR1 + endif +PSW SFRB 0d0h ; Statuswort +CY BIT PSW.7 +AC BIT PSW.6 +F0 BIT PSW.5 +RS1 BIT PSW.4 +RS0 BIT PSW.3 +OV BIT PSW.2 +P BIT PSW.0 +ACC SFRB 0e0h ; Akkumulator +B SFRB 0f0h ; Hilfsakku für MUL/DIV + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +SCON SFRB 98h ; ser. Schnittstelle: Steuerregister +SM0 BIT SCON.7 ; Betriebsarten +SM1 BIT SCON.6 +SM2 BIT SCON.5 +REN BIT SCON.4 ; Empfangssperre +TB8 BIT SCON.3 ; 9. zu sendendes Bit +RB8 BIT SCON.2 ; 9. empfangenes Bit +TI BIT SCON.1 ; Senderinterruptflag +RI BIT SCON.0 ; Empfängerinterruptflag +SBUF SFR 99h ; " " Datenregister + + if MOMCPU=80C320H ; Register zweite serielle Schnittstelle +SCON0 SFR SCON +SBUF0 SFR SBUF +SCON1 SFR 0c0h ; Steuerregister +SBUF1 SFR 0c1h ; Datenregister + endif + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +PCON SFR 87h ; "Power-Management" + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +TCON SFRB 88h ; Timer 0/1 Steuerregister +TF1 BIT TCON.7 ; Überlauf Timer 1 +TR1 BIT TCON.6 ; Timer 1 laufenlassen +TF0 BIT TCON.5 ; Überlauf Timer 0 +TR0 BIT TCON.4 ; Timer 0 laufenlassen +IE1 BIT TCON.3 ; Externer Interrupt 1 aufgetreten +IT1 BIT TCON.2 ; Einstellung Triggerflanke externer Interrupt 1 +IE0 BIT TCON.1 ; Externer Interrupt 0 aufgetreten +IT0 BIT TCON.0 ; Einstellung Triggerflanke externer Interrupt 0 +TMOD SFR 89h ; Timer 0/1 Betriebsartenregister +TL0 SFR 8ah ; Daten Timer 0 +TL1 SFR 8bh +TH0 SFR 8ch ; Daten Timer 1 +TH1 SFR 8dh + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +; kein Timer 2 beim 8051 + + if MOMCPU<>8051h +T2CON SFRB 0c8h ; Steuerregister Timer 2 +TL2 SFR 0cch ; Daten Timer 2 +TH2 SFR 0cdh + if MOMCPU=8052h +RCAP2L SFR 0cah ; Capture-Register +RCAP2H SFR 0cbh +TF2 BIT T2CON.7 ; Overflow Timer 2 +EXF2 BIT T2CON.6 ; Reload aufgetreten +RCLK BIT T2CON.5 ; Timer 2 liefert RxD-Takt +TCLK BIT T2CON.4 ; Timer 2 liefert TxD-Takt +EXEN2 BIT T2CON.3 ; externer Enable Timer 2 +TR2 BIT T2CON.2 ; Timer 2 starten +CT2 BIT T2CON.1 ; Timer 2 als Zähler +CPRL2 BIT T2CON.0 ; Capture erlauben + elseif +CRCL SFR 0cah ; andere Namen beim 80515 !! +CRCH SFR 0cbh +T2PS BIT T2CON.7 +I3FR BIT T2CON.6 +I2FR BIT T2CON.5 +T2R1 BIT T2CON.4 +T2R0 BIT T2CON.3 +T2CM BIT T2CON.2 +T2I1 BIT T2CON.1 +T2I0 BIT T2CON.0 + endif + endif + + if MOMCPU=80C320H ; Taktauswahl beim 80C320 +CKCON SFR 8eh ; Bit 3,4,5 <--> Timer 0,1,2 + endif ; Bit 6,7 <--> Watchdog-Timeout + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +; 80C320-Watchdog + + if MOMCPU=80C320h +WDCON SFRB 0d8h +RWT BIT WDCON.0 ; Watchdog zurücksetzen +EWT BIT WDCON.1 ; Watchdog freigeben +WTRF BIT WDCON.2 ; Watchdog-Reset aufgetreten +WDIF BIT WDCON.3 ; Interrupt 512 Takte bis Reset aufgetreten +PFI BIT WDCON.4 ; Power-Fail-Interrupt aufgetreten ? +EPFI BIT WDCON.5 ; Power-Fail-Interrupt freigeben +POR BIT WDCON.6 +WD_SMOD BIT WDCON.7 +TA SFR 0c7h ; nacheinander AA 55 schreiben, um Zugriff auf + endif ; Spezialregister zu bekommen + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +; + + if MOMCPU=80C320H +SADDR0 SFR 0a9h ; Slave-Adresse für seriellen Port 0 +SADDR1 SFR 0aah ; Slave-Adresse für seriellen Port 1 +SADEN0 SFR 0b9h ; Bits in SADDR0 freigeben +SADEN1 SFR 0bah ; Bits in SADDR1 freigeben + endif + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +; zusätzliche 80515/80517-Register + + if (MOMCPU=80515h)||(MOMCPU=80517h) +P4 SFRB 0e8h +P5 SFRB 0f8h + +CCEN SFR 0c1h +CCH3 SFR 0c7h +CCL3 SFR 0c6h +CCH2 SFR 0c5h +CCL2 SFR 0c4h +CCH1 SFR 0c3h +CCL1 SFR 0c2h + +ADCON SFRB 0d8h ; andere Namen beim 80515/80517 +BD BIT ADCON.7 +CLK BIT ADCON.6 +BSY BIT ADCON.4 +ADM BIT ADCON.3 +MX2 BIT ADCON.2 +MX1 BIT ADCON.1 +MX0 BIT ADCON.0 +ADDAT SFR 0d9h +DAPR SFR 0dah + endif + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +; zusätzliche 80517-Register + + if MOMCPU=80517h + +DPSEL SFR 92h ;Datenpointer Select +ADCON1 SFR 0dch ;Kontrolle 1 über A/D-Wandler +CTCON SFR 0e1h ;Kontrolle über Compare-Timer +IEN2 SFR 9ah +ARCON SFR 0efh +MD0 SFR 0e9h ;] Multiplikations- +MD1 SFR 0eah ;] und +MD2 SFR 0ebh ;] Divisionsregister +MD3 SFR 0ech ;] +MD4 SFR 0edh ;] 1 - 5 +MD5 SFR 0eeh ;] +CC4EN SFR 0c9h +CCH4 SFR 0cfh +CCL4 SFR 0ceh +CMEN SFR 0f6h +CMH0 SFR 0d3h +CMH1 SFR 0d5h +CMH2 SFR 0d7h +CMH3 SFR 0e3h +CMH4 SFR 0e5h +CMH5 SFR 0e7h +CMH6 SFR 0f3h +CMH7 SFR 0f5h +CML0 SFR 0d2h +CML1 SFR 0d4h +CML2 SFR 0d6h +CML3 SFR 0e2h +CML4 SFR 0e4h +CML5 SFR 0e6h +CML6 SFR 0f8h +CML7 SFR 0f4h +CMSEL SFR 0f7h +CTRELH SFR 0dfh +CTRELL SFR 0deh +P6 SFR 0fah ; ??? bitadressierbar +P7 SFR 0dbh ; ??? bitadressierbar +P8 SFR 0ddH ; ??? bitadressierbar +ADCON0 SFR 0d8h ;Kontrolle 1 über A/D-Wandler +S0BUF SFR 99h ;] Kontrolle +S0CON SFR 98h ;] für +S1BUF SFR 9ch ;] die +S1CON SFR 9bh ;] serielle +S1REL SFR 9dh ;] Schnittstelle +WDTREL SFR 86h ;] 0 und 1 + + endif + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +; Interruptsteuerregister: nicht kompatibel zwischen 8051/52 und 80515/80517 !!! + + if (MOMCPU=80515h)||(MOMCPU=80517h) +IEN0 SFRB 0a8h +EAL BIT IEN0.7 +WDT BIT IEN0.6 +ET2 BIT IEN0.5 +ES BIT IEN0.4 +ET1 BIT IEN0.3 +EX1 BIT IEN0.2 +ET0 BIT IEN0.1 +EX0 BIT IEN0.0 +IEN1 SFRB 0b8h +EXEN2 BIT IEN1.7 +SWDT BIT IEN1.6 +EX6 BIT IEN1.5 +EX5 BIT IEN1.4 +EX4 BIT IEN1.3 +EX3 BIT IEN1.2 +EX2 BIT IEN1.1 +EADC BIT IEN1.0 +IP0 SFR 0a9h +IP1 SFR 0b9h +IRCON SFRB 0c0h +EXF2 BIT IRCON.7 +TF2 BIT IRCON.6 +IEX6 BIT IRCON.5 +IEX5 BIT IRCON.4 +IEX4 BIT IRCON.3 +IEX3 BIT IRCON.2 +IEX2 BIT IRCON.1 +IADC BIT IRCON.0 + elseif +IE SFRB 0a8h ; Interruptfreigaben +IEC SFRB IE +EA BIT IE.7 ; generelle Interruptsperre +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 +IP SFRB 0b8h ; Interruptprioritäten +IPC SFRB IP +PS BIT IP.4 ; Priorität serieller Interrupt +PT1 BIT IP.3 ; Priorität Interrupt Timer 1 +PX1 BIT IP.2 ; Priorität externer Interrupt 1 +PT0 BIT IP.1 ; Priorität Interrupt Timer 0 +PX0 BIT IP.0 ; Priorität externer Interrupt 0 + if MOMCPU=8052h +ET2 BIT IE.5 ; Interrupt Timer 2 freigeben +PT2 BIT IP.5 ; Priorität Interrupt Timer 2 + endif + endif + + if MOMCPU=80C320H ; erweiterte Interrupts 80C320 +EIE SFRB 0e8h +EWDI BIT EIE.4 ; Watchdog-Interrupt freigeben +EX5 BIT EIE.3 ; externe Interrupts 2..5 freigeben +EX4 BIT EIE.2 +EX3 BIT EIE.1 +EX2 BIT EIE.0 +EIP SFRB 0f8h +PWDI BIT EIP.4 ; Priorität Watchdog-Interrupt +PX5 BIT EIP.3 ; Priorität externer Interrupts 2..5 +PX4 BIT EIP.2 +PX3 BIT EIP.1 +PX2 BIT EIP.0 +EXIF SFR 91h ; erweitertes Interrupt-Flag-Register + endif + + +;--------------------------------------------------------------------------- +; Da man die Register beim 8051 nicht direkt pushen und poppen kann, muß man +; dies über direkte Adressen tun. Da dazu die Kenntnis der gewählten Regis- +; terbank erforderlich ist, steht hier das Makro USING zur Verfügung, wel- +; ches in den Symbolen AR0..AR7 die momentanen Registeradressen ablegt. +; USING erwartet als Parameter die gewählte Banknummer. + +Bank0 equ 0 ; nur der Schönheit halber... +Bank1 equ 1 +Bank2 equ 2 +Bank3 equ 3 + +using macro bank + if (bank<0)||(bank>3) ; nur 0..3 erlaubt + error "Falsche Banknummer: \{BANK}" + endif + + ifdef RegUsage ; Buchführung über benutzte Bänke +RegUsage set RegUsage|(2^bank) + elseif +RegUsage set 2^bank + endif + +ar0 set bank*8 ; Symbole besetzen +ar1 set ar0+1 +ar2 set ar0+2 +ar3 set ar0+3 +ar4 set ar0+4 +ar5 set ar0+5 +ar6 set ar0+6 +ar7 set ar0+7 + endm + + endif + + restore ; wieder erlauben + -- cgit v1.2.3