save listing off ; kein Listing über diesen File ;**************************************************************************** ;* * ;* AS 1.41 - Datei 80C50x.INC * ;* * ;* Sinn : enthält SFR- und Bitdefinitionen für die SAB C50x-Prozessoren * ; (Ableitung aus STDDEF51.INC) * ;* * ;* letzte Änderungen : 26. 3.1997 Grundsteinlegung * ;* 8. 6.1997 Korrekturen von Herrn Schmid * ;* * ;**************************************************************************** ifndef reg50xinc ; verhindert Mehrfacheinbindung reg50xinc equ 1 if (MOMCPUNAME<>"80C501")&&(MOMCPUNAME<>"80C502")&&(MOMCPUNAME<>"80C504") fatal "Falscher Prozessortyp eingestellt: nur 80C501, 80C502 oder 80C504 erlaubt!" endif if MOMPASS=1 message "SAB C50x-SFR-Definitionen (C) 1993 Alfred Arnold, Steffen Schmid" message "binde \{MOMCPUNAME}-SFRs ein" endif ;---------------------------------------------------------------------------- ; Prozessorkern ACC SFRB 0e0h ; Akkumulator B SFRB 0f0h ; Hilfsakku für MUL/DIV SP SFR 81h ; Stapelzeiger DPL SFR 82h ; Datenzeiger Bit 0..7 DPH SFR 83h ; " Bit 8..15 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 SYSCON SFR 0b1h ; Systemkonfiguration PCON SFR 87h ; "Power-Management" PCON1 SFRB 88h EWPD BIT PCON1.7 ; Freigabe Wake-Up durch INT0 if MOMCPUNAME="80C502" XPAGE SFR 91h ; XRAM-Ansteuerung 80C502 XCON SFR 94h DPSEL SFR 92h endif ;---------------------------------------------------------------------------- ; Ports P0 SFRB 80h ; I/O-Ports P1 SFRB 90h P2 SFRB 0a0h P3 SFRB 0b0h T2EX BIT P1.1 T2 BIT P1.0 if MOMCPUNAME="80C504" P1ANA SFRB 90h ; Selektion Port 1/3 als analoge Eingabe P3ANA SFRB 0b0h EAN0 BIT P1ANA.0 EAN1 BIT P1ANA.1 EAN2 BIT P1ANA.2 EAN3 BIT P1ANA.3 EAN4 BIT P1ANA.2 EAN5 BIT P1ANA.3 EAN6 BIT P1ANA.4 EAN7 BIT P1ANA.5 endif 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 ;---------------------------------------------------------------------------- ; serielles 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 MOMCPUNAME="80C502" SRELL SFR 0aah ; Wert für Baudratengenerator SRELH SFR 0bah BAUD SFRB 0d8h BD BIT BAUD.7 ; Baudratengenerator aktivieren ENDIF ;---------------------------------------------------------------------------- ; Timer 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 T2CON SFRB 0c8h ; Steuerregister Timer 2 TL2 SFR 0cch ; Daten Timer 2 TH2 SFR 0cdh RC2L SFR 0cah ; Capture-Register RC2H 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 ;--------------------------------------------------------------------------- ; Watchdog if MOMCPU>=80C504h WDCON SFRB 0c0h ; Watchdog Steuerung SWDT BIT WDCON.0 ; Watchdog starten WDT BIT WDCON.1 ; Watchdog zurücksetzen WDTS BIT WDCON.2 ; Watchdog-Reset-Flagge OWDS BIT WDCON.3 ; dito Oszillator-Watchdog WDTREL SFR 86h endif ;--------------------------------------------------------------------------- ; Capture/Compare-Einheit if MOMCPUNAME="80C504" CT1CON SFR 0e1h ; Steuerung Vergleicher 1 CCPL SFR 0deh ; Periode Vergleicher 1 CCPH SFR 0dfh CT1OFL SFR 0e6h ; Offset Vergleicher 1 CT1OFH SFR 0e7h CMSEL0 SFR 0e3h ; Modus CMSEL1 SFR 0e4h COINI SFR 0e2h ; Initialisierung Vergleicherausgang TRCON SFR 0cfh ; Trap-Freigabe CCL0 SFR 0c2h ; Vergleichs-/Fangwert 0 CCH0 SFR 0c3h CCL1 SFR 0c4h ; Vergleichs-/Fangwert 1 CCH1 SFR 0c5h CCL2 SFR 0c6h ; Vergleichs-/Fangwert 2 CCH2 SFR 0c7h CCIR SFR 0e5h ; Interruptflags CCIE SFR 0d6h ; Interruptmasken CT2CON SFR 0c1h ; Steuerung Vergleicher 2 CP2L SFR 0d2h ; Periode Vergleicher 2 CP2H SFR 0d3h CMP2L SFR 0d4h ; Vergleichs-/Fangwert Timer 2 CMP2H SFR 0d5h BCON SFR 0d7h ; Steuerung Blockkommunikation endif ;--------------------------------------------------------------------------- ; A/D-Wandler if MOMCPUNAME="80C504" ADCON0 SFRB 0d8h ; Konfiguration IADC BIT ADCON0.5 ; Interruptflagge (Ende Konversion) BSY BIT ADCON0.4 ; Busy-Flag ADM BIT ADCON0.3 ; einfache/kontinuierliche Wandlung MX2 BIT ADCON0.2 ; Kanalwahl MX1 BIT ADCON0.1 MX0 BIT ADCON0.0 ADCON1 SFR 0dch ADDATH SFR 0d9h ; Daten ADDATL SFR 0dah endif ;------------------------------------------------------------------------- ; Interruptsteuerregister: IEN0 SFRB 0a8h ; Freigaben IE SFRB IEN0 EA BIT IEN0.7 ; generelle Sperre ET2 BIT IEN0.5 ; Timer 2 ES BIT IEN0.4 ; ser. Schnittstelle ET1 BIT IEN0.3 ; Überlauf Timer 1 EX1 BIT IEN0.2 ; ext. Interrupt 1 ET0 BIT IEN0.1 ; Timer 0 Überlauf EX0 BIT IEN0.0 ; ext. Interrupt 0 IP0 SFRB 0b8h ; Prioritäten IP SFRB IP0 PT2 BIT IP0.5 ; siehe Freigabebits PS BIT IP0.4 PT1 BIT IP0.3 PX1 BIT IP0.2 PT0 BIT IP0.1 PX0 BIT IP0.0 if MOMCPUNAME="80C504" IEN1 SFR 0a9h IP1 SFR 0b9h ITCON SFR 09ah ; Triggerbedingungen 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