text: /***************************************************************************\
  *         VRS580 SFR Definitions for the Keil uVision2 C51 Compiler         *
  *****************************************************************************
  * Rev Number:        1.0                                                    *
  * Date:              September 2004                                         *
  *                                                                           *
  *                    Goal Semiconductor Inc                                 *
  \***************************************************************************/
  
  #ifndef __VRS580_Keil_H__
  #define __VRS580_Keil_H__
  
  // Registers that do not appear on this list should not be accessed
  
      // NAME     ADDRESS       DESCRIPTION
  
  sfr    P0       = 0x80;    // Port 0
  sfr    SP       = 0x81;    // Stack Pointer
  sfr    DPL      = 0x82;    // Data pointer LSB
  sfr    DPH      = 0x83;    // Data pointer MSB
  
  sfr    RCON     = 0x85;    // Internal RAM control
  sfr    DBANK    = 0x86;    // Data Bank control
  sfr    PCON     = 0x87;    // Power Control
  sfr    TCON     = 0x88;    // Timer 0 and 1 control
  sfr    TMOD     = 0x89;    // Timer Mode control
  sfr    TL0      = 0x8A;    // Timer 0 LSB
  sfr    TL1      = 0x8B;    // Timer 1 LSB
  sfr    TH0      = 0x8C;    // Timer 0 MSB
  sfr    TH1      = 0x8D;    // Timer 1 LSB
  
  sfr    P1       = 0x90;    // Port 1
  
  sfr    WDTLOCK  = 0x97;    // Watchdog Timer Lock
  sfr    SCON     = 0x98;    // Serial Port Control
  sfr    SBUF     = 0x99;    // Serial Port Rx/Tx Buffer
  
  sfr    PWMEN    = 0x9B;    // Pulse Width Modulation Enable
  
  sfr    WDTCON   = 0x9F;    // Watchdog Timer Control
  sfr    P2       = 0xA0;    // Port 2
  
  sfr    PWMCON   = 0xA3;    // Pulse Width Modulation Control
  sfr    PWMD0    = 0xA4;    // Pulse Width Modulation Data Register 0
  sfr    PWMD1    = 0xA5;    // Pulse Width Modulation Data Register 1
  sfr    PWMD2    = 0xA6;    // Pulse Width Modulation Data Register 2
  sfr    PWMD3    = 0xA7;    // Pulse Width Modulation Data Register 3
  sfr    IE       = 0xA8;    // Interrupt Enable
  
  sfr    PWMD4    = 0xAC;    // Pulse Width Modulation Data Register 4
  
  sfr    P3       = 0xB0;    // Port 3
  
  sfr    IP       = 0xB8;    // Interrupt Priority
  
  sfr    SYSCON   = 0xBF;    // System Control
  
  sfr    T2CON    = 0xC8;    // Timer 2 Control
  
  sfr    RCAP2L   = 0xCA;    // Timer 2 UART Baudrate generator LSB
  sfr    RCAP2H   = 0xCB;    // Timer 2 UART Baudrate generator MSB
  sfr    TL2      = 0xCC;    // Timer 2 LSB
  sfr    TH2      = 0xCD;    // Timer 2 MSB
  sfr    PSW      = 0xD0;    // Program Status Word
  
  sfr    P4       = 0xD8;    // Port 4
  
  sfr    ACC      = 0xE0;    // Accumulator
  
  sfr    B        = 0xF0;    // B
  
      // Bit addressable register definitions
  
      // P0     SFR 0x80
  
  sbit   P0_7     = 0x87;    // Port 0 bit 7
  sbit   P0_6     = 0x86;    // Port 0 bit 6
  sbit   P0_5     = 0x85;    // Port 0 bit 5
  sbit   P0_4     = 0x84;    // Port 0 bit 4
  sbit   P0_3     = 0x83;    // Port 0 bit 3
  sbit   P0_2     = 0x82;    // Port 0 bit 2
  sbit   P0_1     = 0x81;    // Port 0 bit 1
  sbit   P0_0     = 0x80;    // Port 0 bit 0
  
      // TCON   SFR 0x88
  
  sbit   TF1      = 0x8F;    // Timer 1 Overflow Flag
  sbit   TR1      = 0x8E;    // Timer 1 Run control
  sbit   TF0      = 0x8D;    // Timer 0 Overflow Flag
  sbit   TR0      = 0x8C;    // Timer 0 Run control
  sbit   IE1      = 0x8B;    // External Interrupt 1 Edge flag
  sbit   IT1      = 0x8A;    // External Interrupt 1 Type control
  sbit   IE0      = 0x89;    // External Interrupt 0 Edge flag
  sbit   IT0      = 0x88;    // External Interrupt 0 Type control
  
      // P1     SFR 0x90
  
  sbit   P1_7     = 0x97;    // Port 1 bit 7
  sbit   P1_6     = 0x96;    // Port 1 bit 6
  sbit   P1_5     = 0x95;    // Port 1 bit 5
  sbit   P1_4     = 0x94;    // Port 1 bit 4
  sbit   P1_3     = 0x93;    // Port 1 bit 3
  sbit   P1_2     = 0x92;    // Port 1 bit 1
  sbit   P1_1     = 0x91;    // Port 1 bit 1
  sbit   P1_0     = 0x90;    // Port 1 bit 0
  
      // SCON   SFR 0x98
  
  sbit   SM0      = 0x9F;    // Serial Select Mode 0
  sbit   SM1      = 0x9E;    // Serial Select Mode 1
  sbit   SM2      = 0x9D;    // Serial Select Mode 2
  sbit   REN      = 0x9C;    // Serial Reception Enable
  sbit   TB8      = 0x9B;    // Serial Transmit Bit 8 (9th bit)
  sbit   RB8      = 0x9A;    // Serial Receive Bit 8 (9th bit)
  sbit   TI       = 0x99;    // Serial Transmission Interrupt flag
  sbit   RI       = 0x98;    // Serial Reception Interrupt flag
  
      // P2     SFR 0xA0
  
  sbit   P2_7     = 0xA7;    // Port 2 bit 7
  sbit   P2_6     = 0xA6;    // Port 2 bit 6
  sbit   P2_5     = 0xA5;    // Port 2 bit 5
  sbit   P2_4     = 0xA4;    // Port 2 bit 4
  sbit   P2_3     = 0xA3;    // Port 2 bit 3
  sbit   P2_2     = 0xA2;    // Port 2 bit 2
  sbit   P2_1     = 0xA1;    // Port 2 bit 1
  sbit   P2_0     = 0xA0;    // Port 2 bit 0
  
      // IE     SFR 0xA8
  
  sbit   EA       = 0xAF;    // Enable Interrupts
  
  sbit   ET2      = 0xAD;    // Timer 2 Interrupt Enable
  sbit   ES       = 0xAC;    // Serial Port Interrupt Enable
  sbit   ET1      = 0xAB;    // Timer 1 Interrupt Enable
  sbit   EX1      = 0xAA;    // External Interrupt 1 Enable
  sbit   ET0      = 0xA9;    // Timer 0 Interrupt Enable
  sbit   EX0      = 0xA8;    // External Interrupt 0 Enable
  
      // P3     SFR 0xB0
  
  sbit   P3_7     = 0xB7;    // Port 3 bit 7
  sbit   P3_6     = 0xB6;    // Port 3 bit 6
  sbit   P3_5     = 0xB5;    // Port 3 bit 5
  sbit   P3_4     = 0xB4;    // Port 3 bit 4
  sbit   P3_3     = 0xB3;    // Port 3 bit 3
  sbit   P3_2     = 0xB2;    // Port 3 bit 2
  sbit   P3_1     = 0xB1;    // Port 3 bit 1
  sbit   P3_0     = 0xB0;    // Port 3 bit 0
  
      // IP     SFR 0xB8
  
  sbit   PT2      = 0xBD;    // Gives Timer 2 Interrupt Higher Priority
  sbit   PS       = 0xBC;    // Gives Serial Port Interrupt Higher Priority
  sbit   PT1      = 0xBB;    // Gives Timer 1 Interrupt Higher Priority
  sbit   PX1      = 0xBA;    // Gives INT1 Interrupt Higher Priority
  sbit   PT0      = 0xB9;    // Gives Timer 0 Interrupt Higher Priority
  sbit   PX0      = 0xB8;    // Gives INT0 Interrupt Higher Priority
  
      // T2CON  SFR 0xC8
  
  sbit   TF2      = 0xCF;    // Timer 2 Overflow
  sbit   EXF2     = 0xCE;    // Timer 2 External Flag
  sbit   RCLK     = 0xCD;    // Serial Port Receive Clock
  sbit   TCLK     = 0xCC;    // Serial Port Transmit Clock
  sbit   EXEN2    = 0xCB;    // Timer 2 External Mode Enable
  sbit   TR2      = 0xCA;    // Timer 2 Start/Stop
  sbit   C_T2     = 0xC9;    // Timer 2 Counter/Timer select
  sbit   CP_RL2   = 0xC8;    // Timer 2 Capture/Reload select
  
      // PSW    SFR 0xD0
  
  sbit   CY       = 0xD7;    // Carry flag
  sbit   AC       = 0xD6;    // Auxilliary Carry flag
  sbit   F0       = 0xD5;    // User Flag 0
  sbit   RS1      = 0xD4;    // Register R0-R7 Select 1
  sbit   RS0      = 0xD3;    // Register R0-R7 Select 0
  sbit   OV       = 0xD2;    // Overflow flag
  
  sbit   P        = 0xD0;    // Parity flag
  
      // P4     SFR 0xD8
  
  sbit   P4_3     = 0xDB;    // Port 4 bit 3
  sbit   P4_2     = 0xDA;    // Port 4 bit 2
  sbit   P4_1     = 0xD9;    // Port 4 bit 1
  sbit   P4_0     = 0xD8;    // Port 4 bit 0
  
      // ACC    SFR 0xE0
  
  sbit   ACC_7    = 0xE7;    // Accumulator bit 7
  sbit   ACC_6    = 0xE6;    // Accumulator bit 6
  sbit   ACC_5    = 0xE5;    // Accumulator bit 5
  sbit   ACC_4    = 0xE4;    // Accumulator bit 4
  sbit   ACC_3    = 0xE3;    // Accumulator bit 3
  sbit   ACC_2    = 0xE2;    // Accumulator bit 2
  sbit   ACC_1    = 0xE1;    // Accumulator bit 1
  sbit   ACC_0    = 0xE0;    // Accumulator bit 0
  
      // B      SFR 0xF0
  
  sbit   B_7      = 0xF7;    // B register bit 7
  sbit   B_6      = 0xF6;    // B register bit 6
  sbit   B_5      = 0xF5;    // B register bit 5
  sbit   B_4      = 0xF4;    // B register bit 4
  sbit   B_3      = 0xF3;    // B register bit 3
  sbit   B_2      = 0xF2;    // B register bit 2
  sbit   B_1      = 0xF1;    // B register bit 1
  sbit   B_0      = 0xF0;    // B register bit 0
  
  #endif
  