//----------------------------------------------------------------------------- // C8051F580_defs.h //----------------------------------------------------------------------------- // Copyright 2008, Silicon Laboratories, Inc. // http://www.silabs.com // // Program Description: // // Register/bit definitions for the C8051F58x family. // **Important Note**: The compiler_defs.h header file should be included // before including this header file. // // Target: C8051F580/1/2/3/4/5/6/7,8/9-F590/1 // Tool chain: Generic // Command Line: None // // Release 0.3 - 01 APR 2009 (GP) // - Added SN0-SN3 // // Release 0.2 - 29 JUL 2008 (ADT) // - Added Timer 4 bit definitions // // Release 0.1 - 09 JUL 2008 (GP) // - Initial Revision // //----------------------------------------------------------------------------- // Header File Preprocessor Directive //----------------------------------------------------------------------------- #ifndef C8051F580_DEFS_H #define C8051F580_DEFS_H //----------------------------------------------------------------------------- // Page 0, Page 1 and Page F Registers //----------------------------------------------------------------------------- __sfr __at (0x80) P0 ; /* Port 0 Latch */ __sfr __at (0x81) SP ; /* Stack Pointer */ __sfr __at (0x82) DPL ; /* Data Pointer Low */ __sfr __at (0x83) DPH ; /* Data Pointer High */ __sfr __at (0x84) SFR0CN ; /* SFR Page Control */ __sfr __at (0x85) SFRNEXT ; /* SFR stack next page */ __sfr __at (0x86) SFRLAST ; /* SFR stack last page */ __sfr __at (0x87) PCON ; /* Power Control */ __sfr __at (0x88) TCON ; /* Timer/Counter Control */ __sfr __at (0x89) TMOD ; /* Timer/Counter Mode */ __sfr __at (0x8A) TL0 ; /* Timer/Counter 0 Low */ __sfr __at (0x8B) TL1 ; /* Timer/Counter 1 Low */ __sfr __at (0x8C) TH0 ; /* Timer/Counter 0 High */ __sfr __at (0x8D) TH1 ; /* Timer/Counter 1 High */ __sfr __at (0x8E) CKCON ; /* Clock Control */ __sfr __at (0x8F) PSCTL ; /* Program Store R/W Control */ __sfr __at (0x8F) CLKSEL ; /* System clock select */ __sfr __at (0x90) P1 ; /* Port 1 Latch */ __sfr __at (0x91) TMR3CN ; /* Timer/Counter 3 Control */ __sfr __at (0x91) TMR5CN ; /* Timer/Counter 5 Control */ __sfr __at (0x92) TMR3RLL ; /* Timer/Counter 3 Reload Low */ __sfr __at (0x92) TMR5CAPL ; /* Timer/Counter 5 Capture Low */ __sfr __at (0x93) TMR3RLH ; /* Timer/Counter 3 Reload High */ __sfr __at (0x93) TMR5CAPH ; /* Timer/Counter 5 Capture High */ __sfr __at (0x94) TMR3L ; /* Timer/Counter 3 Low */ __sfr __at (0x94) TMR5L ; /* Timer/Counter 5 Low */ __sfr __at (0x95) TMR3H ; /* Timer/Counter 3 High */ __sfr __at (0x95) TMR5H ; /* Timer/Counter 5 High */ __sfr __at (0x96) TMR5CF ; /* Timer/Counter 5 Configuration */ __sfr __at (0x97) CLKMUL ; /* Clock Multiplier */ __sfr __at (0x98) SCON0 ; /* UART0 Control */ __sfr __at (0x98) SCON1 ; /* UART1 Control */ __sfr __at (0x99) SBUF0 ; /* UART0 Data Buffer */ __sfr __at (0x99) SBUF1 ; /* UART1 Data Buffer */ __sfr __at (0x9A) CPT0CN ; /* Comparator 0 Control */ __sfr __at (0x9A) CPT2CN ; /* Comparator 2 Control */ __sfr __at (0x9B) CPT0MD ; /* Comparator 0 Mode */ __sfr __at (0x9B) CPT2MD ; /* Comparator 2 Mode */ __sfr __at (0x9C) CPT0MX ; /* Comparator 0 Mux */ __sfr __at (0x9C) CPT2MX ; /* Comparator 2 Mux */ __sfr __at (0x9D) CPT1CN ; /* Comparator 1 Control */ __sfr __at (0x9E) CPT1MD ; /* Comparator 0 Mode */ __sfr __at (0x9E) OSCIFIN ; /* Internal Oscillator Fine Control */ __sfr __at (0x9F) CPT1MX ; /* Comparator 1 Mux */ __sfr __at (0x9F) OSCXCN ; /* External Oscillator Control */ __sfr __at (0xA0) P2 ; /* Port 2 Latch */ __sfr __at (0xA1) SPI0CFG ; /* SPI0 Configuration */ __sfr __at (0xA1) OSCICN ; /* Internal Oscillator Control */ __sfr __at (0xA2) SPI0CKR ; /* SPI0 Clock rate control */ __sfr __at (0xA2) OSCICRS ; /* Internal Oscillator Coarse Control */ __sfr __at (0xA3) SPI0DAT ; /* SPI0 Data Buffer */ __sfr __at (0xA4) P0MDOUT ; /* Port 0 Output Mode */ __sfr __at (0xA5) P1MDOUT ; /* Port 1 Output Mode */ __sfr __at (0xA6) P2MDOUT ; /* Port 2 Output Mode */ __sfr __at (0xA7) SFRPAGE ; /* SFR Page Select */ __sfr __at (0xA8) IE ; /* Interrupt Enable */ __sfr __at (0xA9) SMOD0 ; /* Serial Port 0 Control */ __sfr __at (0xAA) EMI0CN ; /* EMIF Control */ __sfr __at (0xAA) _XPAGE ; /* @see 4.1.1 pdata access by SFR */ __sfr __at (0xAA) EMI0TC ; /* EMIF Timing control */ __sfr __at (0xAB) SBCON0 ; /* UART0 Baud Rate Generator Control */ __sfr __at (0xAC) SBRLL0 ; /* UART0 Baud Rate Generator Low */ __sfr __at (0xAD) SBRLH0 ; /* UART0 Baud Rate Generator High */ __sfr __at (0xAE) P3MAT ; /* Port 3 Match */ __sfr __at (0xAE) P3MDOUT ; /* Port 3 Mode */ __sfr __at (0xAF) P3MASK ; /* Port 3 Mask */ __sfr __at (0xAF) P4MDOUT ; /* Port 4 Mode */ __sfr __at (0xB0) P3 ; /* Port 3 Latch */ __sfr __at (0xB1) P2MAT ; /* Port 2 Match */ __sfr __at (0xB2) P2MASK ; /* Port 2 Mask */ __sfr __at (0xB2) EMI0CF ; /* EMIF Configuration */ __sfr __at (0xB5) P4 ; /* Port 4 Latch */ __sfr __at (0xB6) FLSCL ; /* Flash Scale */ __sfr __at (0xB7) FLKEY ; /* Flash access limit */ __sfr __at (0xB8) IP ; /* Interrupt Priority */ __sfr __at (0xB9) SMB0ADR ; /* SMBus0 Slave address */ __sfr __at (0xBA) ADC0TK ; /* ADC0 Tracking Mode Select */ __sfr __at (0xBA) SMB0ADM ; /* SMBus0 Address Mask */ __sfr __at (0xBB) ADC0MX ; /* AMUX0 Channel select */ __sfr __at (0xBC) ADC0CF ; /* AMUX0 Channel configuration */ __sfr __at (0xBD) ADC0L ; /* ADC0 Data Low */ __sfr __at (0xBE) ADC0H ; /* ADC0 Data High */ __sfr __at (0xC0) SMB0CN ; /* SMBus0 Control */ __sfr __at (0xC1) SMB0CF ; /* SMBus0 Configuration */ __sfr __at (0xC2) SMB0DAT ; /* SMBus0 Data */ __sfr __at (0xC3) ADC0GTL ; /* ADC0 Greater-Than Compare Low */ __sfr __at (0xC4) ADC0GTH ; /* ADC0 Greater-Than Compare High */ __sfr __at (0xC5) ADC0LTL ; /* ADC0 Less-Than Compare Word Low */ __sfr __at (0xC6) ADC0LTH ; /* ADC0 Less-Than Compare Word High */ __sfr __at (0xC6) XBR3 ; /* Port I/O Crossbar Control 3 */ __sfr __at (0xC7) XBR2 ; /* Port I/O Crossbar Control 2 */ __sfr __at (0xC8) TMR2CN ; /* Timer/Counter 2 Control */ __sfr __at (0xC8) TMR4CN ; /* Timer/Counter 4 Control */ __sfr __at (0xC9) REG0CN ; /* Regulator Control */ __sfr __at (0xC9) LIN0CF ; /* LIN 0 Configuration */ __sfr __at (0xC9) TMR4CF ; /* Timer/Counter 4 Configuration */ __sfr __at (0xCA) TMR2RLL ; /* Timer/Counter 2 Reload Low */ __sfr __at (0xCA) TMR4CAPL ; /* Timer/Counter 4 Capture Low */ __sfr __at (0xCB) TMR2RLH ; /* Timer/Counter 2 Reload High */ __sfr __at (0xCB) TMR4CAPH ; /* Timer/Counter 4 Capture High */ __sfr __at (0xCC) TMR2L ; /* Timer/Counter 2 Low */ __sfr __at (0xCC) TMR4L ; /* Timer/Counter 4 Low */ __sfr __at (0xCD) TMR2H ; /* Timer/Counter 2 High */ __sfr __at (0xCD) TMR4H ; /* Timer/Counter 4 High */ __sfr __at (0xCE) PCA0CPL5 ; /* PCA0 Capture 5 Low */ __sfr __at (0xCE) PCA1CPL11 ; /* PCA1 Capture 11 Low */ __sfr __at (0xCF) PCA0CPH5 ; /* PCA0 Capture 5 High */ __sfr __at (0xCF) PCA1CPH11 ; /* PCA1 Capture 11 High */ __sfr __at (0xD0) PSW ; /* Program Status Word */ __sfr __at (0xD1) REF0CN ; /* Voltage Reference Control */ __sfr __at (0xD2) LIN0DAT ; /* LIN0 Data */ __sfr __at (0xD3) LIN0ADR ; /* LIN0 Address */ __sfr __at (0xD4) P0SKIP ; /* Port 0 Skip */ __sfr __at (0xD5) P1SKIP ; /* Port 1 Skip */ __sfr __at (0xD6) P2SKIP ; /* Port 2 Skip */ __sfr __at (0xD7) P3SKIP ; /* Port 3 Skip */ __sfr __at (0xD8) PCA0CN ; /* PCA0 Control */ __sfr __at (0xD8) PCA1CN ; /* PCA1 Control */ __sfr __at (0xD9) PCA0MD ; /* PCA0 Mode */ __sfr __at (0xD9) PCA1MD ; /* PCA1 Mode */ __sfr __at (0xD9) PCA0PWM ; /* PCA0 PWM Control */ __sfr __at (0xDA) PCA0CPM0 ; /* PCA0 Module 0 Mode */ __sfr __at (0xDA) PCA1CPM6 ; /* PCA1 Module 6 Mode */ __sfr __at (0xDA) PCA1PWM ; /* PCA1 PWM Control */ __sfr __at (0xDB) PCA0CPM1 ; /* PCA0 Module 1 Mode */ __sfr __at (0xDB) PCA1CPM7 ; /* PCA1 Module 7 Mode */ __sfr __at (0xDC) PCA0CPM2 ; /* PCA0 Module 2 Mode */ __sfr __at (0xDC) PCA1CPM8 ; /* PCA1 Module 8 Mode */ __sfr __at (0xDD) PCA0CPM3 ; /* PCA0 Module 3 Mode */ __sfr __at (0xDD) PCA1CPM9 ; /* PCA1 Module 9 Mode */ __sfr __at (0xDE) PCA0CPM4 ; /* PCA0 Module 4 Mode */ __sfr __at (0xDE) PCA1CPM10 ; /* PCA1 Module 10 Mode */ __sfr __at (0xDF) PCA0CPM5 ; /* PCA0 Module 5 Mode */ __sfr __at (0xDF) PCA1CPM11 ; /* PCA1 Module 11 Mode */ __sfr __at (0xE0) ACC ; /* Accumulator */ __sfr __at (0xE1) XBR0 ; /* Port I/O Crossbar Control 0 */ __sfr __at (0xE2) XBR1 ; /* Port I/O Crossbar Control 1 */ __sfr __at (0xE3) CCH0CN ; /* Cache control */ __sfr __at (0xE4) IT01CF ; /* INT0/INT1 Configuration */ __sfr __at (0xE6) EIE1 ; /* Extended Interrupt Enable 2 */ __sfr __at (0xE7) EIE2 ; /* Extended Interrupt Enable 2 */ __sfr __at (0xE8) ADC0CN ; /* ADC0 Control */ __sfr __at (0xE9) PCA0CPL1 ; /* PCA0 Capture 1 Low */ __sfr __at (0xE9) PCA1CPL1 ; /* PCA1 Capture 7 Low */ __sfr __at (0xEA) PCA0CPH1 ; /* PCA0 Capture 1 High */ __sfr __at (0xEA) PCA1CPH1 ; /* PCA1 Capture 7 High */ __sfr __at (0xEB) PCA0CPL2 ; /* PCA0 Capture 2 Low */ __sfr __at (0xEB) PCA1CPL2 ; /* PCA1 Capture 8 Low */ __sfr __at (0xEC) PCA0CPH2 ; /* PCA0 Capture 2 High */ __sfr __at (0xEC) PCA1CPH2 ; /* PCA1 Capture 8 High */ __sfr __at (0xED) PCA0CPL3 ; /* PCA0 Capture 3 Low */ __sfr __at (0xED) PCA1CPL3 ; /* PCA1 Capture 9 Low */ __sfr __at (0xEE) PCA0CPH3 ; /* PCA0 Capture 3 High */ __sfr __at (0xEE) PCA1CPH3 ; /* PCA1 Capture 9 High */ __sfr __at (0xEF) RSTSRC ; /* Reset Source Configuration/Status */ __sfr __at (0xF0) B ; /* B Register */ __sfr __at (0xF1) P0MAT ; /* Port 0 Match */ __sfr __at (0xF1) P0MDIN ; /* Port 0 Input Mode */ __sfr __at (0xF2) P0MASK ; /* Port 0 Mask */ __sfr __at (0xF2) P1MDIN ; /* Port 1 Input Mode */ __sfr __at (0xF3) P1MAT ; /* Port 1 Match */ __sfr __at (0xF3) P2MDIN ; /* Port 2 Input Mode */ __sfr __at (0xF4) P1MASK ; /* Port 1 Mask */ __sfr __at (0xF4) P3MDIN ; /* Port 3 Input Mode */ __sfr __at (0xF5) PSBANK ; /* Program Space Bank Select */ __sfr __at (0xF6) EIP1 ; /* External Interrupt Priority 1 */ __sfr __at (0xF7) EIP2 ; /* External Interrupt Priority 2 */ __sfr __at (0xF8) SPI0CN ; /* SPI0 Control */ __sfr __at (0xF9) PCA0L ; /* PCA0 Counter Low */ __sfr __at (0xF9) PCA1L ; /* PCA1 Counter Low */ __sfr __at (0xF9) SN0 ; /* Serial Number 0 */ __sfr __at (0xFA) PCA0H ; /* PCA0 Counter High */ __sfr __at (0xFA) PCA1H ; /* PCA1 Counter High */ __sfr __at (0xFA) SN1 ; /* Serial Number 1 */ __sfr __at (0xFB) PCA0CPL0 ; /* PCA0 Capture 0 Low */ __sfr __at (0xFB) PCA1CPL6 ; /* PCA1 Capture 6 Low */ __sfr __at (0xFB) SN2 ; /* Serial Number 2 */ __sfr __at (0xFC) PCA0CPH0 ; /* PCA0 Capture 0 High */ __sfr __at (0xFC) PCA1CPH6 ; /* PCA1 Capture 6 High */ __sfr __at (0xFC) SN3 ; /* Serial Number 3 */ __sfr __at (0xFD) PCA0CPL4 ; /* PCA0 Capture 4 Low */ __sfr __at (0xFD) PCA1CPL10 ; /* PCA1 Capture 10 Low */ __sfr __at (0xFE) PCA0CPH4 ; /* PCA0 Capture 4 High */ __sfr __at (0xFE) PCA1CPH10 ; /* PCA1 Capture 10 High */ __sfr __at (0xFF) VDM0CN ; /* VDD Monitor Control */ //----------------------------------------------------------------------------- // Page C (CAN0) Registers //----------------------------------------------------------------------------- __sfr __at (0x92) CAN0CFG ; /* CAN0 Clock Configuration */ __sfr __at (0x94) CAN0STAT ; /* Status Register Low Byte */ __sfr __at (0x96) CAN0ERRL ; /* Error Counter Low Byte */ __sfr __at (0x97) CAN0ERRH ; /* Error Counter High Byte */ __sfr __at (0x9A) CAN0BTL ; /* Bit Timing Register Low Byte */ __sfr __at (0x9B) CAN0BTH ; /* Bit Timing Register High Byte */ __sfr __at (0x9C) CAN0IIDL ; /* Interrupt Register Low Byte */ __sfr __at (0x9D) CAN0IIDH ; /* Interrupt Register High Byte */ __sfr __at (0x9E) CAN0TST ; /* Test Register Low Byte */ __sfr __at (0xA1) CAN0BRPE ; /* BRP Extension Register Low Byte */ __sfr __at (0xA2) CAN0TR1L ; /* Transmission Request 1 Low Byte */ __sfr __at (0xA3) CAN0TR1H ; /* Transmission Request 1 High Byte */ __sfr __at (0xA4) CAN0TR2L ; /* Transmission Request 2 Low Byte */ __sfr __at (0xA5) CAN0TR2H ; /* Transmission Request 2 High Byte */ __sfr __at (0xAA) CAN0ND1L ; /* New Data 1 Low Byte */ __sfr __at (0xAB) CAN0ND1H ; /* New Data 1 High Byte */ __sfr __at (0xAC) CAN0ND2L ; /* New Data 2 Low Byte */ __sfr __at (0xAD) CAN0ND2H ; /* New Data 2 High Byte */ __sfr __at (0xAE) CAN0IP1L ; /* Interrupt Pending 1 Low Byte */ __sfr __at (0xAF) CAN0IP1H ; /* Interrupt Pending 1 High Byte */ __sfr __at (0xB2) CAN0IP2L ; /* Interrupt Pending 2 Low Byte */ __sfr __at (0xB3) CAN0IP2H ; /* Interrupt Pending 2 High Byte */ __sfr __at (0xBA) CAN0MV1L ; /* Message Valid 1 Low Byte */ __sfr __at (0xBB) CAN0MV1H ; /* Message Valid 1 High Byte */ __sfr __at (0xBC) CAN0MV2L ; /* Message Valid 2 Low Byte */ __sfr __at (0xBD) CAN0MV2H ; /* Message Valid 2 High Byte */ __sfr __at (0xBE) CAN0IF1CRL ; /* IF1 Command Request Low Byte */ __sfr __at (0xBF) CAN0IF1CRH ; /* IF1 Command Request High Byte */ __sfr __at (0xC0) CAN0CN ; /* CAN Control Register Low Byte */ __sfr __at (0xC2) CAN0IF1CML ; /* IF1 Command Mask Low Byte */ __sfr __at (0xC3) CAN0IF1CMH ; /* IF1 Command Mask High Byte */ __sfr __at (0xC4) CAN0IF1M1L ; /* IF1 Mask 1 Low Byte */ __sfr __at (0xC5) CAN0IF1M1H ; /* IF1 Mask 1 High Byte */ __sfr __at (0xC6) CAN0IF1M2L ; /* IF1 Mask 2 Low Byte */ __sfr __at (0xC7) CAN0IF1M2H ; /* IF1 Mask 2 High Byte */ __sfr __at (0xCA) CAN0IF1A1L ; /* IF1 Arbitration 1 Low Byte */ __sfr __at (0xCB) CAN0IF1A1H ; /* IF1 Arbitration 1 High Byte */ __sfr __at (0xCC) CAN0IF1A2L ; /* IF1 Arbitration 2 Low Byte */ __sfr __at (0xCD) CAN0IF1A2H ; /* IF1 Arbitration 2 High Byte */ __sfr __at (0xCE) CAN0IF2MCL ; /* IF2 Message Control Low Byte */ __sfr __at (0xCF) CAN0IF2MCH ; /* IF2 Message Control High Byte */ __sfr __at (0xD2) CAN0IF1MCL ; /* IF1 Message Control Low Byte */ __sfr __at (0xD3) CAN0IF1MCH ; /* IF1 Message Control High Byte */ __sfr __at (0xD4) CAN0IF1DA1L ; /* IF1 Data A 1 Low Byte */ __sfr __at (0xD5) CAN0IF1DA1H ; /* IF1 Data A 1 High Byte */ __sfr __at (0xD6) CAN0IF1DA2L ; /* IF1 Data A 2 Low Byte */ __sfr __at (0xD7) CAN0IF1DA2H ; /* IF1 Data A 2 High Byte */ __sfr __at (0xDA) CAN0IF1DB1L ; /* IF1 Data B 1 Low Byte */ __sfr __at (0xDB) CAN0IF1DB1H ; /* IF1 Data B 1 High Byte */ __sfr __at (0xDC) CAN0IF1DB2L ; /* IF1 Data B 2 Low Byte */ __sfr __at (0xDD) CAN0IF1DB2H ; /* IF1 Data B 2 High Byte */ __sfr __at (0xDE) CAN0IF2CRL ; /* IF2 Command Request Low Byte */ __sfr __at (0xDF) CAN0IF2CRH ; /* IF2 Command Request High Byte */ __sfr __at (0xE2) CAN0IF2CML ; /* IF2 Command Mask Low Byte */ __sfr __at (0xE3) CAN0IF2CMH ; /* IF2 Command Mask High Byte */ __sfr __at (0xEA) CAN0IF2M1L ; /* IF2 Mask 1 Low Byte */ __sfr __at (0xEB) CAN0IF2M1H ; /* IF2 Mask 1 High Byte */ __sfr __at (0xEC) CAN0IF2M2L ; /* IF2 Mask 2 Low Byte */ __sfr __at (0xED) CAN0IF2M2H ; /* IF2 Mask 2 High Byte */ __sfr __at (0xEE) CAN0IF2A1L ; /* IF2 Arbitration 1 Low Byte */ __sfr __at (0xEF) CAN0IF2A1H ; /* IF2 Arbitration 1 High Byte */ __sfr __at (0xF2) CAN0IF2A2L ; /* IF2 Arbitration 2 Low Byte */ __sfr __at (0xF3) CAN0IF2A2H ; /* IF2 Arbitration 2 High Byte */ __sfr __at (0xF6) CAN0IF2DA1L ; /* IF2 Data A 1 Low Byte */ __sfr __at (0xF7) CAN0IF2DA1H ; /* IF2 Data A 1 High Byte */ __sfr __at (0xFA) CAN0IF2DA2L ; /* IF2 Data A 2 Low Byte */ __sfr __at (0xFB) CAN0IF2DA2H ; /* IF2 Data A 2 High Byte */ __sfr __at (0xFC) CAN0IF2DB1L ; /* IF2 Data B 1 Low Byte */ __sfr __at (0xFD) CAN0IF2DB1H ; /* IF2 Data B 1 High Byte */ __sfr __at (0xFE) CAN0IF2DB2L ; /* IF2 Data B 2 Low Byte */ __sfr __at (0xFF) CAN0IF2DB2H ; /* IF2 Data B 2 High Byte */ //----------------------------------------------------------------------------- // 16-bit Register Definitions (might not be supported by all compilers) //----------------------------------------------------------------------------- __sfr16 __at (0x8382) DP ; /* Data Pointer */ __sfr16 __at (0x9392) TMR3RL ; /* Timer 3 Reload */ __sfr16 __at (0x9392) TMR5CAP ; /* Timer 5 Capture */ __sfr16 __at (0x9594) TMR3 ; /* Timer 3 Capture / Reload */ __sfr16 __at (0x9594) TMR5 ; /* Timer 5 */ __sfr16 __at (0xADAC) SBRL0 ; /* UART0 Reload */ __sfr16 __at (0xBEBD) ADC0 ; /* ADC0 data */ __sfr16 __at (0xC4C3) ADC0GT ; /* ADC0 Greater Than Window */ __sfr16 __at (0xC6C5) ADC0LT ; /* ADC0 Less Than Window */ __sfr16 __at (0xCBCA) TMR2RL ; /* Timer 2 Reload */ __sfr16 __at (0xCBCA) TMR4CAP ; /* Timer 4 Capture */ __sfr16 __at (0xCDCC) TMR2 ; /* Timer 2 Capture / Reload */ __sfr16 __at (0xCDCC) TMR4 ; /* Timer 4 */ __sfr16 __at (0xCFCE) PCA0CP5 ; /* PCA0 Module 5 Capture */ __sfr16 __at (0xCFCE) PCA1CP11 ; /* PCA1 Module 11 Capture */ __sfr16 __at (0xEAE9) PCA0CP1 ; /* PCA0 Module 1 Capture */ __sfr16 __at (0xEAE9) PCA1CP7 ; /* PCA1 Module 7 Capture */ __sfr16 __at (0xECEB) PCA0CP2 ; /* PCA0 Module 2 Capture */ __sfr16 __at (0xECEB) PCA1CP8 ; /* PCA1 Module 8 Capture */ __sfr16 __at (0xEEED) PCA0CP3 ; /* PCA0 Module 3 Capture */ __sfr16 __at (0xEEED) PCA1CP9 ; /* PCA1 Module 9 Capture */ __sfr16 __at (0xFAF9) PCA0 ; /* PCA0 Counter */ __sfr16 __at (0xFAF9) PCA1 ; /* PCA1 Counter */ __sfr16 __at (0xFCFB) PCA0CP0 ; /* PCA0 Module 0 Capture */ __sfr16 __at (0xFCFB) PCA1CP6 ; /* PCA1 Module 6 Capture */ __sfr16 __at (0xFEFD) PCA0CP4 ; /* PCA0 Module 4 Capture */ __sfr16 __at (0xFEFD) PCA1CP10 ; /* PCA1 Module 10 Capture */ __sfr16 __at (0x9796) CAN0ERR ; /* Error Counter */ __sfr16 __at (0x9B9A) CAN0BT ; /* Bit Timing Register */ __sfr16 __at (0x9D9C) CAN0IID ; /* Interrupt Register */ __sfr16 __at (0xA3A2) CAN0TR1 ; /* Transmission Request 1 */ __sfr16 __at (0xA5A4) CAN0TR2 ; /* Transmission Request 2 */ __sfr16 __at (0xABAA) CAN0ND1 ; /* New Data 1 */ __sfr16 __at (0xADAC) CAN0ND2 ; /* New Data 2 */ __sfr16 __at (0xAFAE) CAN0IP1 ; /* Interrupt Pending 1 */ __sfr16 __at (0xB3B2) CAN0IP2 ; /* Interrupt Pending 2 */ __sfr16 __at (0xBBBA) CAN0MV1 ; /* Message Valid 1 */ __sfr16 __at (0xBDBC) CAN0MV2 ; /* Message Valid 2 */ __sfr16 __at (0xBFBE) CAN0IF1CR ; /* IF1 Command Request */ __sfr16 __at (0xC3C2) CAN0IF1CM ; /* IF1 Command Mask */ __sfr16 __at (0xC5C4) CAN0IF1M1 ; /* IF1 Mask 1 */ __sfr16 __at (0xC7C6) CAN0IF1M2 ; /* IF1 Mask 2 */ __sfr16 __at (0xCBCA) CAN0IF1A1 ; /* IF1 Arbitration 1 */ __sfr16 __at (0xCDCC) CAN0IF1A2 ; /* IF1 Arbitration 2 */ __sfr16 __at (0xD3D2) CAN0IF1MC ; /* IF1 Message Control */ __sfr16 __at (0xD5D4) CAN0IF1DA1; /* IF1 Data A 1 */ __sfr16 __at (0xD7D6) CAN0IF1DA2; /* IF1 Data A 2 */ __sfr16 __at (0xDBDA) CAN0IF1DB1; /* IF1 Data B 1 */ __sfr16 __at (0xDDDC) CAN0IF1DB2; /* IF1 Data B 2 */ __sfr16 __at (0xDFDE) CAN0IF2CR ; /* IF2 Command Request */ __sfr16 __at (0xE3E2) CAN0IF2CM ; /* IF2 Command Mask */ __sfr16 __at (0xEBEA) CAN0IF2M1 ; /* IF2 Mask 1 */ __sfr16 __at (0xEDEC) CAN0IF2M2 ; /* IF2 Mask 2 */ __sfr16 __at (0xEFEE) CAN0IF2A1 ; /* IF2 Arbitration 1 */ __sfr16 __at (0xF3F2) CAN0IF2A2 ; /* IF2 Arbitration 2 */ __sfr16 __at (0xF5F4) CAN0IF2MC ; /* IF2 Message Control */ __sfr16 __at (0xF7F6) CAN0IF2DA1; /* IF2 Data A 1 */ __sfr16 __at (0xFBFA) CAN0IF2DA2; /* IF2 Data A 2 */ __sfr16 __at (0xFDFC) CAN0IF2DB1; /* IF2 Data B 1 */ __sfr16 __at (0xFFFE) CAN0IF2DB2; /* IF2 Data B 2 */ //----------------------------------------------------------------------------- // LIN0 Indirect Registers //----------------------------------------------------------------------------- #define LIN0DT1 0x00 // LIN0 Data Byte 1 #define LIN0DT2 0x01 // LIN0 Data Byte 2 #define LIN0DT3 0x02 // LIN0 Data Byte 3 #define LIN0DT4 0x03 // LIN0 Data Byte 4 #define LIN0DT5 0x04 // LIN0 Data Byte 5 #define LIN0DT6 0x05 // LIN0 Data Byte 6 #define LIN0DT7 0x06 // LIN0 Data Byte 7 #define LIN0DT8 0x07 // LIN0 Data Byte 8 #define LIN0CTRL 0x08 // LIN0 Control #define LIN0ST 0x09 // LIN0 Status #define LIN0ERR 0x0A // LIN0 Error #define LIN0SIZE 0x0B // LIN0 Message Size #define LIN0DIV 0x0C // LIN0 Divider #define LIN0MUL 0x0D // LIN0 Multiplier #define LIN0ID 0x0E // LIN0 Identifier //----------------------------------------------------------------------------- // Address Definitions for Bit-addressable Registers //----------------------------------------------------------------------------- #define SFR_P0 0x80 #define SFR_TCON 0x88 #define SFR_P1 0x90 #define SFR_SCON0 0x98 #define SFR_SCON1 0x98 #define SFR_P2 0xA0 #define SFR_IE 0xA8 #define SFR_P3 0xB0 #define SFR_IP 0xB8 #define SFR_SMB0CN 0xC0 #define SFR_TMR2CN 0xC8 #define SFR_TMR4CN 0xC8 #define SFR_PSW 0xD0 #define SFR_PCA0CN 0xD8 #define SFR_PCA1CN 0xD8 #define SFR_ACC 0xE0 #define SFR_ADC0CN 0xE8 #define SFR_B 0xF0 #define SFR_SPI0CN 0xF8 //----------------------------------------------------------------------------- // Bit Definitions //----------------------------------------------------------------------------- // TCON 0x88 __sbit __at (0x8F) TF1 ; /* Timer 1 Overflow Flag */ __sbit __at (0x8E) TR1 ; /* Timer 1 On/Off Control */ __sbit __at (0x8D) TF0 ; /* Timer 0 Overflow Flag */ __sbit __at (0x8C) TR0 ; /* Timer 0 On/Off Control */ __sbit __at (0x8B) IE1 ; /* Ext. Interrupt 1 Edge Flag */ __sbit __at (0x8A) IT1 ; /* Ext. Interrupt 1 Type */ __sbit __at (0x89) IE0 ; /* Ext. Interrupt 0 Edge Flag */ __sbit __at (0x88) IT0 ; /* Ext. Interrupt 0 Type */ // SCON0 0x98 __sbit __at (0x9F) S0MODE ; /* UART0 Mode 0 */ // Bit 6 UNUSED __sbit __at (0x9D) MCE0 ; /* UART0 Multiprocessor enable */ __sbit __at (0x9C) REN0 ; /* UART0 RX Enable */ __sbit __at (0x9B) TB80 ; /* UART0 TX Bit 8 */ __sbit __at (0x9A) RB80 ; /* UART0 RX Bit 8 */ __sbit __at (0x99) TI0 ; /* UART0 TX Interrupt Flag */ __sbit __at (0x98) RI0 ; /* UART0 RX Interrupt Flag */ // SCON1 0x98 __sbit __at (0x9F) S1MODE ; /* UART1 Mode 0 */ // Bit 6 UNUSED __sbit __at (0x9D) MCE1 ; /* UART1 Multiprocessor enable */ __sbit __at (0x9C) REN1 ; /* UART1 RX Enable */ __sbit __at (0x9B) TB81 ; /* UART1 TX Bit 8 */ __sbit __at (0x9A) RB81 ; /* UART1 RX Bit 8 */ __sbit __at (0x99) TI1 ; /* UART1 TX Interrupt Flag */ __sbit __at (0x98) RI1 ; /* UART1 RX Interrupt Flag */ // IE 0xA8 __sbit __at (0xAF) EA ; /* Global Interrupt Enable */ __sbit __at (0xAE) ESPI0 ; /* SPI0 Interrupt Enable */ __sbit __at (0xAD) ET2 ; /* Timer 2 Interrupt Enable */ __sbit __at (0xAC) ES0 ; /* UART0 Interrupt Enable */ __sbit __at (0xAB) ET1 ; /* Timer 1 Interrupt Enable */ __sbit __at (0xAA) EX1 ; /* External Interrupt 1 Enable */ __sbit __at (0xA9) ET0 ; /* Timer 0 Interrupt Enable */ __sbit __at (0xA8) EX0 ; /* External Interrupt 0 Enable */ // IP 0xB8 // Bit 7 unused __sbit __at (0xBE) PSPI0 ; /* SPI0 Interrupt Priority */ __sbit __at (0xBD) PT2 ; /* Timer 2 Priority */ __sbit __at (0xBC) PS0 ; /* UART0 Priority */ __sbit __at (0xBC) PS ; /* UART0 Priority */ __sbit __at (0xBB) PT1 ; /* Timer 1 Priority */ __sbit __at (0xBA) PX1 ; /* External Interrupt 1 Priority */ __sbit __at (0xB9) PT0 ; /* Timer 0 Priority */ __sbit __at (0xB8) PX0 ; /* External Interrupt 0 Priority */ // SMB0CN 0xC0 __sbit __at (0xC7) MASTER ; /* SMBus0 Master/Slave Indicator */ __sbit __at (0xC6) TXMODE ; /* SMBus0 Transmit Mode Indicator */ __sbit __at (0xC5) STA ; /* SMBus0 Start Flag */ __sbit __at (0xC4) STO ; /* SMBus0 Stop Flag */ __sbit __at (0xC3) ACKRQ ; /* SMBus0 Acknowledge Request */ __sbit __at (0xC2) ARBLOST ; /* SMBus0 Arbitration Lost Indicator */ __sbit __at (0xC1) ACK ; /* SMBus0 Acknowledge */ __sbit __at (0xC0) SI ; /* SMBus0 Interrupt Flag */ // TMR2CN 0xC8 __sbit __at (0xCF) TF2H ; /* Timer 2 High-Byte Overflow Flag */ __sbit __at (0xCE) TF2L ; /* Timer 2 Low-Byte Overflow Flag */ __sbit __at (0xCD) TF2LEN ; /* Timer 2 Low-Byte Flag Enable */ __sbit __at (0xCC) TF2CEN ; /* Timer 2 Capture Enable */ __sbit __at (0xCB) T2SPLIT ; /* Timer 2 Split-Mode Enable */ __sbit __at (0xCA) TR2 ; /* Timer 2 Run Enable */ __sbit __at (0xC9) T2RCLK ; /* Timer 2 Xclk/Rclk Select */ __sbit __at (0xC8) T2XCLK ; /* Timer 2 Clk/8 Clock Source */ // TMR4CN 0xC8 __sbit __at (0xCF) TF4 ; /* Timer 4 Overflow/Underflow Flag */ __sbit __at (0xCE) EXF4 ; /* Timer 4 External Flag */ // Bit 5 unused // Bit 4 unused __sbit __at (0xCB) EXE4 ; /* Timer 4 External Enable */ __sbit __at (0xCA) TR4 ; /* Timer 4 Run Enable */ __sbit __at (0xC9) CT4 ; /* Timer 4 Counter/Timer Select */ __sbit __at (0xC8) CPRL4 ; /* Timer 4 Capture/Reload Select */ // PSW 0xD0 __sbit __at (0xD7) CY ; /* Carry Flag */ __sbit __at (0xD6) AC ; /* Auxiliary Carry Flag */ __sbit __at (0xD5) F0 ; /* User Flag 0 */ __sbit __at (0xD4) RS1 ; /* Register Bank Select 1 */ __sbit __at (0xD3) RS0 ; /* Register Bank Select 0 */ __sbit __at (0xD2) OV ; /* Overflow Flag */ __sbit __at (0xD1) F1 ; /* User Flag 1 */ __sbit __at (0xD0) P ; /* Accumulator Parity Flag */ // PCA0CN 0xD8 __sbit __at (0xDF) CF ; /* PCA0 Counter Overflow Flag */ __sbit __at (0xDE) CR ; /* PCA0 Counter Run Control Bit */ __sbit __at (0xDD) CCF5 ; /* PCA0 Module 5 Interrupt Flag */ __sbit __at (0xDC) CCF4 ; /* PCA0 Module 4 Interrupt Flag */ __sbit __at (0xDB) CCF3 ; /* PCA0 Module 3 Interrupt Flag */ __sbit __at (0xDA) CCF2 ; /* PCA0 Module 2 Interrupt Flag */ __sbit __at (0xD9) CCF1 ; /* PCA0 Module 1 Interrupt Flag */ __sbit __at (0xD8) CCF0 ; /* PCA0 Module 0 Interrupt Flag */ // PCA1CN 0xD8 __sbit __at (0xDF) CF1 ; /* PCA1 Counter Overflow Flag */ __sbit __at (0xDE) CR1 ; /* PCA1 Counter Run Control Bit */ __sbit __at (0xDD) CCF11 ; /* PCA1 Module 11 Interrupt Flag */ __sbit __at (0xDC) CCF10 ; /* PCA1 Module 10 Interrupt Flag */ __sbit __at (0xDB) CCF9 ; /* PCA1 Module 9 Interrupt Flag */ __sbit __at (0xDA) CCF8 ; /* PCA1 Module 8 Interrupt Flag */ __sbit __at (0xD9) CCF7 ; /* PCA1 Module 7 Interrupt Flag */ __sbit __at (0xD8) CCF6 ; /* PCA1 Module 6 Interrupt Flag */ // ADC0CN 0xE8 __sbit __at (0xEF) AD0EN ; /* ADC0 Enable */ __sbit __at (0xEE) BURSTEN ; /* ADC0 Burst Enable */ __sbit __at (0xED) AD0INT ; /* ADC0 EOC Interrupt Flag */ __sbit __at (0xEC) AD0BUSY ; /* ADC0 Busy Flag */ __sbit __at (0xEB) AD0WINT ; /* ADC0 Window Compare Interrupt Flag */ __sbit __at (0xEA) AD0LJST ; /* ADC0 Left Justified */ __sbit __at (0xE9) AD0CM1 ; /* ADC0 Start Of Conversion Mode Bit 1 */ __sbit __at (0xE8) AD0CM0 ; /* ADC0 Start Of Conversion Mode Bit 0 */ // SPI0CN 0xF8 __sbit __at (0xFF) SPIF ; /* SPI0 Interrupt Flag */ __sbit __at (0xFE) WCOL ; /* SPI0 Write Collision Flag */ __sbit __at (0xFD) MODF ; /* SPI0 Mode Fault Flag */ __sbit __at (0xFC) RXOVRN ; /* SPI0 RX Overrun Flag */ __sbit __at (0xFB) NSSMD1 ; /* SPI0 Slave Select Mode 1 */ __sbit __at (0xFA) NSSMD0 ; /* SPI0 Slave Select Mode 0 */ __sbit __at (0xF9) TXBMT ; /* SPI0 TX Buffer Empty Flag */ __sbit __at (0xF8) SPIEN ; /* SPI0 Enable */ //----------------------------------------------------------------------------- // Interrupt Priorities //----------------------------------------------------------------------------- #define INTERRUPT_INT0 0 // External Interrupt 0 #define INTERRUPT_TIMER0 1 // Timer 0 Overflow #define INTERRUPT_INT1 2 // External Interrupt 1 #define INTERRUPT_TIMER1 3 // Timer 1 Overflow #define INTERRUPT_UART0 4 // UART0 #define INTERRUPT_TIMER2 5 // Timer 2 Overflow #define INTERRUPT_SPI0 6 // SPI0 #define INTERRUPT_SMBUS0 7 // SMBus0 Interface #define INTERRUPT_ADC0_WINDOW 8 // ADC0 Window Comparison #define INTERRUPT_ADC0_EOC 9 // ADC0 End Of Conversion #define INTERRUPT_PCA0 10 // PCA0 Peripheral #define INTERRUPT_COMPARATOR0 11 // Comparator 0 Comparison #define INTERRUPT_COMPARATOR1 12 // Comparator 1 Comparison #define INTERRUPT_TIMER3 13 // Timer 3 Overflow #define INTERRUPT_LIN0 14 // LIN Bus Interrupt #define INTERRUPT_VREG 15 // Voltage Regulator #define INTERRUPT_CAN0 16 // CAN Bus Interrupt #define INTERRUPT_PORT_MATCH 17 // Port Match #define INTERRUPT_UART1 18 // UART1 #define INTERRUPT_PCA1 19 // PCA1 Peripheral #define INTERRUPT_COMPARATOR2 20 // Comparator 2 Comparison #define INTERRUPT_TIMER4 21 // Timer 4 Overflow #define INTERRUPT_TIMER5 22 // Timer 5 Overflow //----------------------------------------------------------------------------- // SFR Page Definitions //----------------------------------------------------------------------------- #define CONFIG_PAGE 0x0F // System and Port Configuration Page #define ACTIVE_PAGE 0x00 // Active Use Page #define ACTIVE2_PAGE 0x10 // Active Use Page 2 #define CAN0_PAGE 0x0C // CAN0 Registers //----------------------------------------------------------------------------- // Header File PreProcessor Directive //----------------------------------------------------------------------------- #endif // #define C8051F580_DEFS_H //----------------------------------------------------------------------------- // End Of File //-----------------------------------------------------------------------------