/*H***************************************************************************
* NAME: T8XC5121.h           
*----------------------------------------------------------------------------
* PURPOSE: inlcude file for KEIL
*****************************************************************************/
#ifndef _T8XC5121_H_

#define _T8XC5121_H_

/*_____IT  D E F I N I T I O N _____________________________________________*/
#define IRQ_INT0	0
#define IRQ_TIMER0	1
#define IRQ_INT1	2
#define IRQ_TIMER1	3
#define IRQ_UART	4

#define IRQ_SCI 	10 

/*_____ SFR D E F I N I T I O N _____________________________________________*/

  #define Sfr(x, y)	  	sfr x = y
  #define Sbit(x, y, z)   sbit x = y^z
  #define Sfr16(x,y)	sfr16 x = y

/*----------------------------------------*/
/* Include file for 8051 SFR Definitions  */
/*----------------------------------------*/

/*  BYTE Register  */
Sfr (P0 , 0x80);	

Sbit (P0_7  , 0X80  , 7);
Sbit (P0_6  , 0X80  , 6);
Sbit (P0_5  , 0X80  , 5);
Sbit (P0_4  , 0X80  , 4);
Sbit (P0_3  , 0X80  , 3);
Sbit (P0_2  , 0X80  , 2);
Sbit (P0_1  , 0X80  , 1);
Sbit (P0_0  , 0X80  , 0);


Sfr (P1 , 0x90);	

Sbit (P1_7, 0x90, 7);
Sbit (P1_6, 0x90, 6);
Sbit (P1_5, 0x90, 5);
Sbit (P1_4, 0x90, 4);
Sbit (P1_3, 0x90, 3);
Sbit (P1_2, 0x90, 2);
Sbit (P1_1, 0x90, 1);
Sbit (P1_0, 0x90, 0);

Sfr (P2 , 0xA0);	

Sbit (P2_7 , 0xA0, 7);
Sbit (P2_6 , 0xA0, 6);
Sbit (P2_5 , 0xA0, 5);
Sbit (P2_4 , 0xA0, 4);
Sbit (P2_3 , 0xA0, 3);
Sbit (P2_2 , 0xA0, 2);
Sbit (P2_1 , 0xA0, 1);
Sbit (P2_0 , 0xA0, 0);

Sfr (P3 , 0xB0);	

Sbit (P3_7 , 0xB0, 7);
Sbit (P3_6 , 0xB0, 6);
Sbit (P3_5 , 0xB0, 5);
Sbit (P3_4 , 0xB0, 4);
Sbit (P3_3 , 0xB0, 3);
Sbit (P3_2 , 0xB0, 2);
Sbit (P3_1 , 0xB0, 1);
Sbit (P3_0 , 0xB0, 0);

Sbit (RD , 0xB0, 7);
Sbit (WR , 0xB0, 6);
Sbit (T1 , 0xB0, 5);
Sbit (T0 , 0xB0, 4);
Sbit (INT1, 0xB0, 3);
Sbit (INT0, 0xB0, 2);
Sbit (TXD , 0xB0, 1);
Sbit (RXD , 0xB0, 0);

Sfr (PSW , 0xD0);	

Sbit (CY  , 0xD0, 7);
Sbit (AC  , 0xD0, 6);
Sbit (F0  , 0xD0, 5);
Sbit (RS1 , 0xD0, 4);
Sbit (RS0 , 0xD0, 3);
Sbit (OV  , 0xD0, 2);
Sbit (UD  , 0xD0, 1);
Sbit (P   , 0xD0, 0);

Sfr (SP , 0x81);	
Sfr (DPL , 0x82);	
Sfr (DPH , 0x83);	
Sfr (PCON , 0x87);	
Sfr (ACC , 0xE0);	
Sfr (B , 0xF0);	


/*------------------ CLOCK registers ---------------------*/
Sfr (CKCON , 0x8F);
Sfr (CKCON0 , 0x8F);
#define B_CKCONX2 1            	/* For SFR at address != X0/X8 */

Sfr (CKRL , 0x97);
Sfr (CKCON1   , 0xAF);	
#define MSK_CKCON1_SCX2    0x08

Sfr (DCCKPS , 0xBF);

/*------------------ TIMERS registers ---------------------*/
Sfr (TCON , 0x88);
Sbit (TF1 , 0x88, 7);
Sbit (TR1 , 0x88, 6);
Sbit (TF0 , 0x88, 5);
Sbit (TR0 , 0x88, 4);
Sbit (IE1 , 0x88, 3);
Sbit (IT1 , 0x88, 2);
Sbit (IE0 , 0x88, 1);
Sbit (IT0 , 0x88, 0);
	
Sfr (TMOD , 0x89);	
Sfr (TL0 , 0x8A);	
Sfr (TL1 , 0x8B);	
Sfr (TH0 , 0x8C);	
Sfr (TH1 , 0x8D);	
Sfr (WDTRST , 0xA6);
Sfr (WDTPRG , 0xA7);	

/*------------------- UART registers ------------------------*/
Sfr (SIOCON , 0x91);	

Sfr (SCON , 0x98);	
Sbit (SM0  , 0x98, 7);
Sbit (FE   , 0x98, 7);
Sbit (SM1  , 0x98, 6);
Sbit (SM2  , 0x98, 5);
Sbit (REN  , 0x98, 4);
Sbit (TB8  , 0x98, 3);
Sbit (RB8  , 0x98, 2);
Sbit (TI   , 0x98, 1);
Sbit (RI   , 0x98, 0);

Sfr (SBUF , 0x99);
Sfr (BRL , 0x9A);
Sfr (BDRCON , 0x9B);	
Sfr (SADEN , 0xB9);	
Sfr (SADDR , 0xA9);	

/*-------------------- RAM ROM registers ------------*/
Sfr (RCON  , 0xD1);	
Sfr (AUXR  , 0x8E);	
Sfr (AUXR1  , 0xA2);	

/*-------------------- IT registers -----------------------*/

Sfr (IEN0   , 0xA8);	
Sfr (IEN1   , 0xB1);	
#define MSK_IEN1_ESCI   0x08

Sfr (IPL1  , 0xB2);	
Sfr (IPH1  , 0xB3);
Sfr (IPH0  , 0xB7);
#define B_IPHS  4	/* For SFR adresses 0-4 */ 
#define B_IPHT1 3
#define B_IPHX1 2
#define B_IPHT0 1
#define B_IPHX0 0
	
Sfr (IPL  , 0xB8);			/* IP */
Sfr (IPL0  , 0xB8);

Sbit (IPLS   , IPL, 4);
Sbit (IPLT1  , IPL, 3);
Sbit (IPLX1  , IPL, 2);
Sbit (IPLT0  , IPL, 1);
Sbit (IPLX0  , IPL, 0);

Sfr (ISEL  , 0xBA);	
#define MSK_ISEL_CPLEV    0x80
#define MSK_ISEL_PRESIT   0x20
#define MSK_ISEL_RXIT     0x10
#define MSK_ISEL_OELEV    0x08
#define MSK_ISEL_OEEN     0x04
#define MSK_ISEL_PRESEN   0x02
#define MSK_ISEL_RXEN     0x01

/*  IEN0  */
Sbit (EA   , 0xA8, 7);
Sbit (ES   , 0xA8, 4);
Sbit (ET1  , 0xA8, 3);
Sbit (EX1  , 0xA8, 2);
Sbit (ET0  , 0xA8, 1);
Sbit (EX0  , 0xA8, 0);

/*  IPL0  */
Sbit (PS   , 0xB8, 4);
Sbit (PT1  , 0xB8, 3);
Sbit (PX1  , 0xB8, 2);
Sbit (PT0  , 0xB8, 1);
Sbit (PX0  , 0xB8, 0);

/*-------------------- SCI registers -----------------------*/

Sfr (SCTBUF  , 0xAA);	
Sfr (SCRBUF  , 0xAA);	
Sfr (SCSR  , 0xAB);
#define MSK_SCSR_REPSEL  0x10
#define MSK_SCSR_ALTKPS1 0x08
#define MSK_SCSR_ALTKPS0 0x04
#define MSK_SCSR_SCCLK1  0x02
#define MSK_SCSR_SCRS    0x01

Sfr (SCCON  , 0xAC);	
#define MSK_SCCON_CLK     0x80
#define MSK_SCCON_CARDC8  0x20
#define MSK_SCCON_CARDC4  0x10
#define MSK_SCCON_CARDIO  0x08
#define MSK_SCCON_CARDCLK 0x04
#define MSK_SCCON_CARDRST 0x02
#define MSK_SCCON_CARDVCC 0x01
	
Sfr (SCETU0  , 0xAC);
#define MSK_SCETU0_ETU7 0x80
#define MSK_SCETU0_ETU6 0x40
#define MSK_SCETU0_ETU5 0x20
#define MSK_SCETU0_ETU4 0x10
#define MSK_SCETU0_ETU3 0x08
#define MSK_SCETU0_ETU2 0x04
#define MSK_SCETU0_ETU1 0x02
#define MSK_SCETU0_ETU0 0x01

Sfr (SCISR  , 0xAD);	
#define MSK_SCISR_SCTBE 0x80
#define MSK_SCISR_CARDIN 0x40
#define MSK_SCISR_ICARDOVF 0x20
#define MSK_SCISR_VCARDOK 0x10
#define MSK_SCISR_SCWTO   0x08
#define MSK_SCISR_SCTC    0x04
#define MSK_SCISR_SCRC    0x02
#define MSK_SCISR_SCPE    0x01
	
Sfr (SCETU1  , 0xAD);	
#define MSK_SCETU1_COMP  0x80
#define MSK_SCETU1_ETU10 0x40
#define MSK_SCETU1_ETU9  0x20
#define MSK_SCETU1_ETU8  0x10

Sfr (SCIIR  , 0xAE);	
#define MSK_SCIIR_SCTBI    0x80
#define MSK_SCIIR_ICARDERR 0x20
#define MSK_SCIIR_VCARDERR 0x10
#define MSK_SCIIR_SCWTI    0x08
#define MSK_SCIIR_SCTI     0x04
#define MSK_SCIIR_SCRI     0x02
#define MSK_SCIIR_SCPI     0x01

Sfr (SCIER  , 0xAE);	
#define MSK_SCIER_ESCTBI   0x80
#define MSK_SCIER_ICARDER  0x20
#define MSK_SCIER_EVCARDER 0x10
#define MSK_SCIER_ESCWT    0x08
#define MSK_SCIER_ESCTI    0x04
#define MSK_SCIER_ESCRI    0x02
#define MSK_SCIER_ESCPI    0x01

Sfr (SCWT0  , 0xB4);	
Sfr (SCGT0  , 0xB4);	
Sfr (SCWT1  , 0xB5);	
Sfr (SCGT1  , 0xB5);	
Sfr (SCWT2  , 0xB6);	
Sfr (SCICR  , 0xB6);	
#define MSK_SCICR_RESET    0x80
#define MSK_SCICR_CARDDET  0x40 
#define MSK_SCICR_VCARD1   0x20 
#define MSK_SCICR_VCARD0   0x10 
#define MSK_SCICR_UART     0x08 
#define MSK_SCICR_WTEN     0x04 
#define MSK_SCICR_CREP     0x02 
#define MSK_SCICR_CONV     0x01 

/*-------------------- LED registers -----------------------*/
Sfr (LEDCON   , 0xF1);	


#endif