Blame | Last modification | View Log | Download | RSS feed
ifndef stddef51inc ; avoid multiple inclusionstddef51inc equ 1savelisting 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"endifif MOMPASS=1message "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 PortsP1 SFRB 90hP2 SFRB 0a0hP3 SFRB 0b0hRD BIT P3.7 ; Port 3: Write LineWR BIT P3.6 ; Read LineT1 BIT P3.5 ; Test Line 1T0 BIT P3.4 ; Test Line 0INT1 BIT P3.3 ; External Interrupt 1INT0 BIT P3.2 ; External Interrupt 0TXD BIT P3.1 ; Serial OutputRXD BIT P3.0 ; Serial Inputif MOMCPU=80C320HTXD1 BIT P1.3 ; zweiter Serial OutputRXD1 BIT P1.2 ; zweiter Serial Inputendif;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SP SFR 81h ; Stack PointerDPL SFR 82h ; Data Pointer Bits 0..7DPH SFR 83h ; " Bits 8..15if MOMCPU=80C320HDPL0 SFR DPLDPH0 SFR DPHDPL1 SFR 84h ; Second Data Pointer 80C320DPH1 SFR DPL1+1DPS SFR 86h ; Bit 0 = Select DPTR0<-->DPTR1endifPSW SFRB 0d0h ; Processor Status WordCY BIT PSW.7AC BIT PSW.6F0 BIT PSW.5RS1 BIT PSW.4RS0 BIT PSW.3OV BIT PSW.2P BIT PSW.0ACC SFRB 0e0h ; AccumulatorB SFRB 0f0h ; Auxiliary Accumulator for MUL/DIV;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SCON SFRB 98h ; Serial Interface: Control RegisterSM0 BIT SCON.7 ; Operating ModesSM1 BIT SCON.6SM2 BIT SCON.5REN BIT SCON.4 ; Receiver EnableTB8 BIT SCON.3 ; 9th Bit to be sentRB8 BIT SCON.2 ; 9th received bitTI BIT SCON.1 ; Transmit Interrupt FlagRI BIT SCON.0 ; Receive Interrupt FlagSBUF SFR 99h ; Data Registerif MOMCPU=80C320H ; Registers for Second Serial PortSCON0 SFR SCONSM0_0 BIT SCON0.7SM1_0 BIT SCON0.6SM2_0 BIT SCON0.5REN_0 BIT SCON0.4TB8_0 BIT SCON0.3RB8_0 BIT SCON0.2TI_0 BIT SCON0.1RI_0 BIT SCON0.0SBUF0 SFR SBUFSCON1 SFR 0c0h ; Control RegisterSM0_1 BIT SCON1.7SM1_1 BIT SCON1.6SM2_1 BIT SCON1.5REN_1 BIT SCON1.4TB8_1 BIT SCON1.3RB8_1 BIT SCON1.2TI_1 BIT SCON1.1RI_1 BIT SCON1.0SBUF1 SFR 0c1h ; Data Registerendif;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PCON SFR 87h ; Power Management;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TCON SFRB 88h ; Timer 0/1 Control RegisterTF1 BIT TCON.7 ; Timer 1 OverflowTR1 BIT TCON.6 ; Timer 1 StartTF0 BIT TCON.5 ; Timer 0 OverflowTR0 BIT TCON.4 ; Timer 0 StartIE1 BIT TCON.3 ; External Interrupt 1 FlagIT1 BIT TCON.2 ; External Interrupt 1 Edge SelectIE0 BIT TCON.1 ; External Interrupt 0 FlagIT0 BIT TCON.0 ; External Interrupt 0 Edge SelectTMOD SFR 89h ; Timer 0/1 Operating Modes RegisterTL0 SFR 8ah ; Timer 0 DataTL1 SFR 8bhTH0 SFR 8ch ; Timer 1 DataTH1 SFR 8dh;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; No Timer 2 on 8051if MOMCPU<>8051hT2CON SFRB 0c8h ; Timer 2 Control RegisterTL2 SFR 0cch ; Timer 2 DataTH2 SFR 0cdhif (MOMCPU=8052h)||(MOMCPU=80C320h)RCAP2L SFR 0cah ; Capture RegisterRCAP2H SFR 0cbhTF2 BIT T2CON.7 ; Timer 2 OverflowEXF2 BIT T2CON.6 ; Reload OccuredRCLK BIT T2CON.5 ; Timer 2 Delivers RxD-TaktTCLK BIT T2CON.4 ; Timer 2 Delivers TxD-TaktEXEN2 BIT T2CON.3 ; Timer 2 External EnableTR2 BIT T2CON.2 ; Timer 2 StartCT2 BIT T2CON.1 ; Timer 2 as CounterCPRL2 BIT T2CON.0 ; Enable CaptureelseifCRCL SFR 0cah ; other Names on 80515 !!CRCH SFR 0cbhT2PS BIT T2CON.7I3FR BIT T2CON.6I2FR BIT T2CON.5T2R1 BIT T2CON.4T2R0 BIT T2CON.3T2CM BIT T2CON.2T2I1 BIT T2CON.1T2I0 BIT T2CON.0endifendifif MOMCPU=80C320H ; 80C320 Clock SelectionCKCON SFR 8eh ; Bit 3,4,5 <--> Timer 0,1,2endif ; Bit 6,7 <--> Watchdog Timeout;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; 80C320 Watchdogif MOMCPU=80C320hWDCON SFRB 0d8hRWT BIT WDCON.0 ; Watchdog ResetEWT BIT WDCON.1 ; Watchdog EnableWTRF BIT WDCON.2 ; Watchdog Reset FlagWDIF BIT WDCON.3 ; Interrupt '512 Clocks to Reset' FlagPFI BIT WDCON.4 ; Power Fail Interrupt FlagEPFI BIT WDCON.5 ; Power Fail Interrupt EnablePOR BIT WDCON.6WD_SMOD BIT WDCON.7TA SFR 0c7h ; write AA 55 to get access to specialendif ; registers;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;if MOMCPU=80C320HSADDR0 SFR 0a9h ; Serial Port 0 Slave AddressSADDR1 SFR 0aah ; Serial Port 1 Slave AddressSADEN0 SFR 0b9h ; Enable Bits in SADDR0SADEN1 SFR 0bah ; Enable Bits in SADDR1endif;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; Additional 80515/80517 Registerif (MOMCPU=80515h)||(MOMCPU=80517h)P4 SFRB 0e8hP5 SFRB 0f8hP6 SFR 0DBhCCEN SFR 0c1hCCH3 SFR 0c7hCCL3 SFR 0c6hCCH2 SFR 0c5hCCL2 SFR 0c4hCCH1 SFR 0c3hCCL1 SFR 0c2hADCON SFRB 0d8h ; Other Names on 80515/80517BD BIT ADCON.7CLK BIT ADCON.6BSY BIT ADCON.4ADM BIT ADCON.3MX2 BIT ADCON.2MX1 BIT ADCON.1MX0 BIT ADCON.0ADDAT SFR 0d9hDAPR SFR 0dahendif;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; Additional 80517-Registerif MOMCPU=80517hDPSEL SFR 92h ; Data Pointer SelectADCON1 SFR 0dch ; A/D Converter Control 1CTCON SFR 0e1h ; Compare Timer ControlIEN2 SFR 9ahARCON SFR 0efhMD0 SFR 0e9h ;] MultiplicationMD1 SFR 0eah ;] andMD2 SFR 0ebh ;] Division RegistersMD3 SFR 0ech ;]MD4 SFR 0edh ;] 1 - 5MD5 SFR 0eeh ;]CC4EN SFR 0c9hCCH4 SFR 0cfhCCL4 SFR 0cehCMEN SFR 0f6hCMH0 SFR 0d3hCMH1 SFR 0d5hCMH2 SFR 0d7hCMH3 SFR 0e3hCMH4 SFR 0e5hCMH5 SFR 0e7hCMH6 SFR 0f3hCMH7 SFR 0f5hCML0 SFR 0d2hCML1 SFR 0d4hCML2 SFR 0d6hCML3 SFR 0e2hCML4 SFR 0e4hCML5 SFR 0e6hCML6 SFR 0f8hCML7 SFR 0f4hCMSEL SFR 0f7hCTRELH SFR 0dfhCTRELL SFR 0dehP6 SFR 0fah ; ??? Bit AddressableP7 SFR 0dbh ; ??? Bit AddressableP8 SFR 0ddH ; ??? Bit AddressableADCON0 SFR 0d8h ; A/D Converter Control 0S0BUF SFR 99h ;] ControlS0CON SFR 98h ;] ofS1BUF SFR 9ch ;] SerialS1CON SFR 9bh ;] InterfacesS1REL SFR 9dh ;] 0 and 0WDTREL SFR 86h ;]endif;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; Interrupt Control Register: not compatible between 8051/52 and 80515/80517 !!!if (MOMCPU=80515h)||(MOMCPU=80517h)IEN0 SFRB 0a8hEAL BIT IEN0.7WDT BIT IEN0.6ET2 BIT IEN0.5ES BIT IEN0.4ET1 BIT IEN0.3EX1 BIT IEN0.2ET0 BIT IEN0.1EX0 BIT IEN0.0IEN1 SFRB 0b8hEXEN2 BIT IEN1.7SWDT BIT IEN1.6EX6 BIT IEN1.5EX5 BIT IEN1.4EX4 BIT IEN1.3EX3 BIT IEN1.2EX2 BIT IEN1.1EADC BIT IEN1.0IP0 SFR 0a9hIP1 SFR 0b9hIRCON SFRB 0c0hEXF2 BIT IRCON.7TF2 BIT IRCON.6IEX6 BIT IRCON.5IEX5 BIT IRCON.4IEX4 BIT IRCON.3IEX3 BIT IRCON.2IEX2 BIT IRCON.1IADC BIT IRCON.0elseifIE SFRB 0a8h ; Interrupt EnableIEC SFRB IEEA BIT IE.7 ; Global Interrupt EnableES BIT IE.4 ; Serial Interface Interrupts EnableET1 BIT IE.3 ; Timer 1 Interrupt EnableEX1 BIT IE.2 ; External Interrupt 1 EnableET0 BIT IE.1 ; Timer 0 Interrupt EnableEX0 BIT IE.0 ; External Interrupt 0 EnableIP SFRB 0b8h ; Interrupt PrioritiesIPC SFRB IPPS BIT IP.4 ; Serial Interrupt PriorityPT1 BIT IP.3 ; Timer 1 Interrupt PriorityPX1 BIT IP.2 ; External Interrupt 1 PriorityPT0 BIT IP.1 ; Timer 0 Interrupt PriorityPX0 BIT IP.0 ; External Interrupt 0 Priorityif MOMCPU=8052hET2 BIT IE.5 ; Timer 2 Interrupt EnablePT2 BIT IP.5 ; Timer 2 Interrupt Priorityendifendifif MOMCPU=80C320H ; 80C320 Extended InterruptsEIE SFRB 0e8hEWDI BIT EIE.4 ; Watchdog Interrupt EnableEX5 BIT EIE.3 ; External Interrupts 2..5 EnableEX4 BIT EIE.2EX3 BIT EIE.1EX2 BIT EIE.0EIP SFRB 0f8hPWDI BIT EIP.4 ; Watchdog-Interrupt PriorityPX5 BIT EIP.3 ; External Interrupts 2..5 PriorityPX4 BIT EIP.2PX3 BIT EIP.1PX2 BIT EIP.0EXIF SFR 91h ; Extended Interrupt Flag Registerendif;---------------------------------------------------------------------------; 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 1Bank2 equ 2Bank3 equ 3using macro bankif (bank<0)||(bank>3) ; only bank 0..3 allowederror "Falsche Banknummer: \{BANK}"endififdef RegUsage ; Book-Keeping about Used BanksRegUsage set RegUsage|(2^bank)elseifRegUsage set 2^bankendifar0 set bank*8 ; Set Symbolsar1 set ar0+1ar2 set ar0+2ar3 set ar0+3ar4 set ar0+4ar5 set ar0+5ar6 set ar0+6ar7 set ar0+7endmrestore ; re-allow listingendif ; stddef51inc