Blame | Last modification | View Log | Download | RSS feed | ?url?
ifndef stddef51inc ; avoid multiple inclusion
stddef51inc equ 1
save
listing off ; no listing over this file
;****************************************************************************
;* *
;* AS 1.42 - File STDDEF51.INC *
;* *
;* Holds SFR and Bit Definitions for MCS-51 Processors *
;* *
;****************************************************************************
if (MOMCPUNAME<>"87C750")&&(MOMCPUNAME<>"8051")&&(MOMCPUNAME<>"8052")&&(MOMCPUNAME<>"80C320")&&(MOMCPUNAME<>"80515")&&(MOMCPUNAME<>"80517")
fatal "wrong target selected: only 87C750, 8051, 8052, 80C320, 80515, or 80517 supported"
endif
if MOMPASS=1
message "MCS-51 SFR Definitions (C) 1993 Alfred Arnold/Gabriel Jager"
message "including \{MOMCPU} SFRs"
endif
;----------------------------------------------------------------------------
; first of all, the things that exist (almost) everywhere:
P0 SFRB 80h ; I/O Ports
P1 SFRB 90h
P2 SFRB 0a0h
P3 SFRB 0b0h
RD BIT P3.7 ; Port 3: Write Line
WR BIT P3.6 ; Read Line
T1 BIT P3.5 ; Test Line 1
T0 BIT P3.4 ; Test Line 0
INT1 BIT P3.3 ; External Interrupt 1
INT0 BIT P3.2 ; External Interrupt 0
TXD BIT P3.1 ; Serial Output
RXD BIT P3.0 ; Serial Input
if MOMCPU=80C320H
TXD1 BIT P1.3 ; zweiter Serial Output
RXD1 BIT P1.2 ; zweiter Serial Input
endif
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SP SFR 81h ; Stack Pointer
DPL SFR 82h ; Data Pointer Bits 0..7
DPH SFR 83h ; " Bits 8..15
if MOMCPU=80C320H
DPL0 SFR DPL
DPH0 SFR DPH
DPL1 SFR 84h ; Second Data Pointer 80C320
DPH1 SFR DPL1+1
DPS SFR 86h ; Bit 0 = Select DPTR0<-->DPTR1
endif
PSW SFRB 0d0h ; Processor Status Word
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 ; Accumulator
B SFRB 0f0h ; Auxiliary Accumulator for MUL/DIV
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SCON SFRB 98h ; Serial Interface: Control Register
SM0 BIT SCON.7 ; Operating Modes
SM1 BIT SCON.6
SM2 BIT SCON.5
REN BIT SCON.4 ; Receiver Enable
TB8 BIT SCON.3 ; 9th Bit to be sent
RB8 BIT SCON.2 ; 9th received bit
TI BIT SCON.1 ; Transmit Interrupt Flag
RI BIT SCON.0 ; Receive Interrupt Flag
SBUF SFR 99h ; Data Register
if MOMCPU=80C320H ; Registers for Second Serial Port
SCON0 SFR SCON
SM0_0 BIT SCON0.7
SM1_0 BIT SCON0.6
SM2_0 BIT SCON0.5
REN_0 BIT SCON0.4
TB8_0 BIT SCON0.3
RB8_0 BIT SCON0.2
TI_0 BIT SCON0.1
RI_0 BIT SCON0.0
SBUF0 SFR SBUF
SCON1 SFR 0c0h ; Control Register
SM0_1 BIT SCON1.7
SM1_1 BIT SCON1.6
SM2_1 BIT SCON1.5
REN_1 BIT SCON1.4
TB8_1 BIT SCON1.3
RB8_1 BIT SCON1.2
TI_1 BIT SCON1.1
RI_1 BIT SCON1.0
SBUF1 SFR 0c1h ; Data Register
endif
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PCON SFR 87h ; Power Management
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TCON SFRB 88h ; Timer 0/1 Control Register
TF1 BIT TCON.7 ; Timer 1 Overflow
TR1 BIT TCON.6 ; Timer 1 Start
TF0 BIT TCON.5 ; Timer 0 Overflow
TR0 BIT TCON.4 ; Timer 0 Start
IE1 BIT TCON.3 ; External Interrupt 1 Flag
IT1 BIT TCON.2 ; External Interrupt 1 Edge Select
IE0 BIT TCON.1 ; External Interrupt 0 Flag
IT0 BIT TCON.0 ; External Interrupt 0 Edge Select
TMOD SFR 89h ; Timer 0/1 Operating Modes Register
TL0 SFR 8ah ; Timer 0 Data
TL1 SFR 8bh
TH0 SFR 8ch ; Timer 1 Data
TH1 SFR 8dh
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; No Timer 2 on 8051
if MOMCPU<>8051h
T2CON SFRB 0c8h ; Timer 2 Control Register
TL2 SFR 0cch ; Timer 2 Data
TH2 SFR 0cdh
if (MOMCPU=8052h)||(MOMCPU=80C320h)
RCAP2L SFR 0cah ; Capture Register
RCAP2H SFR 0cbh
TF2 BIT T2CON.7 ; Timer 2 Overflow
EXF2 BIT T2CON.6 ; Reload Occured
RCLK BIT T2CON.5 ; Timer 2 Delivers RxD-Takt
TCLK BIT T2CON.4 ; Timer 2 Delivers TxD-Takt
EXEN2 BIT T2CON.3 ; Timer 2 External Enable
TR2 BIT T2CON.2 ; Timer 2 Start
CT2 BIT T2CON.1 ; Timer 2 as Counter
CPRL2 BIT T2CON.0 ; Enable Capture
elseif
CRCL SFR 0cah ; other Names on 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 ; 80C320 Clock Selection
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 Reset
EWT BIT WDCON.1 ; Watchdog Enable
WTRF BIT WDCON.2 ; Watchdog Reset Flag
WDIF BIT WDCON.3 ; Interrupt '512 Clocks to Reset' Flag
PFI BIT WDCON.4 ; Power Fail Interrupt Flag
EPFI BIT WDCON.5 ; Power Fail Interrupt Enable
POR BIT WDCON.6
WD_SMOD BIT WDCON.7
TA SFR 0c7h ; write AA 55 to get access to special
endif ; registers
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
if MOMCPU=80C320H
SADDR0 SFR 0a9h ; Serial Port 0 Slave Address
SADDR1 SFR 0aah ; Serial Port 1 Slave Address
SADEN0 SFR 0b9h ; Enable Bits in SADDR0
SADEN1 SFR 0bah ; Enable Bits in SADDR1
endif
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Additional 80515/80517 Register
if (MOMCPU=80515h)||(MOMCPU=80517h)
P4 SFRB 0e8h
P5 SFRB 0f8h
P6 SFR 0DBh
CCEN SFR 0c1h
CCH3 SFR 0c7h
CCL3 SFR 0c6h
CCH2 SFR 0c5h
CCL2 SFR 0c4h
CCH1 SFR 0c3h
CCL1 SFR 0c2h
ADCON SFRB 0d8h ; Other Names on 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
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Additional 80517-Register
if MOMCPU=80517h
DPSEL SFR 92h ; Data Pointer Select
ADCON1 SFR 0dch ; A/D Converter Control 1
CTCON SFR 0e1h ; Compare Timer Control
IEN2 SFR 9ah
ARCON SFR 0efh
MD0 SFR 0e9h ;] Multiplication
MD1 SFR 0eah ;] and
MD2 SFR 0ebh ;] Division Registers
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 ; ??? Bit Addressable
P7 SFR 0dbh ; ??? Bit Addressable
P8 SFR 0ddH ; ??? Bit Addressable
ADCON0 SFR 0d8h ; A/D Converter Control 0
S0BUF SFR 99h ;] Control
S0CON SFR 98h ;] of
S1BUF SFR 9ch ;] Serial
S1CON SFR 9bh ;] Interfaces
S1REL SFR 9dh ;] 0 and 0
WDTREL SFR 86h ;]
endif
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Interrupt Control Register: not compatible between 8051/52 and 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 ; Interrupt Enable
IEC SFRB IE
EA BIT IE.7 ; Global Interrupt Enable
ES BIT IE.4 ; Serial Interface Interrupts Enable
ET1 BIT IE.3 ; Timer 1 Interrupt Enable
EX1 BIT IE.2 ; External Interrupt 1 Enable
ET0 BIT IE.1 ; Timer 0 Interrupt Enable
EX0 BIT IE.0 ; External Interrupt 0 Enable
IP SFRB 0b8h ; Interrupt Priorities
IPC SFRB IP
PS BIT IP.4 ; Serial Interrupt Priority
PT1 BIT IP.3 ; Timer 1 Interrupt Priority
PX1 BIT IP.2 ; External Interrupt 1 Priority
PT0 BIT IP.1 ; Timer 0 Interrupt Priority
PX0 BIT IP.0 ; External Interrupt 0 Priority
if MOMCPU=8052h
ET2 BIT IE.5 ; Timer 2 Interrupt Enable
PT2 BIT IP.5 ; Timer 2 Interrupt Priority
endif
endif
if MOMCPU=80C320H ; 80C320 Extended Interrupts
EIE SFRB 0e8h
EWDI BIT EIE.4 ; Watchdog Interrupt Enable
EX5 BIT EIE.3 ; External Interrupts 2..5 Enable
EX4 BIT EIE.2
EX3 BIT EIE.1
EX2 BIT EIE.0
EIP SFRB 0f8h
PWDI BIT EIP.4 ; Watchdog-Interrupt Priority
PX5 BIT EIP.3 ; External Interrupts 2..5 Priority
PX4 BIT EIP.2
PX3 BIT EIP.1
PX2 BIT EIP.0
EXIF SFR 91h ; Extended Interrupt Flag Register
endif
;---------------------------------------------------------------------------
; Since the 8051 has no instructions to pus the registers, this has to be done
; via direct addressing, which requires knowledge of the currently active bank.
; The macro USING is provided for doing this. It holds the addresses of the
; currently active registers in symbols AR0..AR7. USING expects the bank
; number as argument.
Bank0 equ 0 ; For Completeness...
Bank1 equ 1
Bank2 equ 2
Bank3 equ 3
using macro bank
if (bank<0)||(bank>3) ; only bank 0..3 allowed
error "Falsche Banknummer: \{BANK}"
endif
ifdef RegUsage ; Book-Keeping about Used Banks
RegUsage set RegUsage|(2^bank)
elseif
RegUsage set 2^bank
endif
ar0 set bank*8 ; Set Symbols
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
restore ; re-allow listing
endif ; stddef51inc