/*----------------------------------------------------------------------------*/ #ifndef __MY1MCU51_H #define __MY1MCU51_H /*----------------------------------------------------------------------------*/ /* Macro Definitions - works on sdcc-3.0.0 & keil uvision4 c51 9.02 */ #ifdef USE_SDCC #define MY1SFR(NAME,ADDR) __sfr __at ADDR NAME #define MY1SBIT(NAME,ADDR) __sbit __at ADDR NAME #define INTERRUPT __interrupt #define NOP __asm__ ("nop") #else #define MY1SFR(NAME,ADDR) sfr NAME = ADDR #define MY1SBIT(NAME,ADDR) sbit NAME = ADDR #define INTERRUPT interrupt #define __bit bit #define __xdata xdata #define __code code #include #define NOP _nop_ () #endif /*----------------------------------------------------------------------------*/ #ifdef USE_SDCC_PRINTF /* SFR Definitions */ MY1SFR(SBUF,0x99); /* SFR Bit Definitions */ MY1SBIT(RI,0x98); /** SCON.0 */ MY1SBIT(TI,0x99); /** SCON.1 */ /* SDCC printf needs this to be defined */ void putchar(char c) { SBUF = c; while (!TI); TI = 0; } /* SDCC gets (no scanf) needs this to be defined */ char getchar(void) { char c; while(!RI); c = SBUF; RI = 0; return c; } #else /** revert printf_fast_f to printf if using keil? */ #define printf_fast_f printf #endif /* USE_SDCC_PRINTF */ /*----------------------------------------------------------------------------*/ /** SPECIAL FUNCTION REGISTER DECLARATIONS */ MY1SFR(P0 ,0x80); MY1SFR(SP ,0x81); MY1SFR(DPL ,0x82); MY1SFR(DPH ,0x83); MY1SFR(PCON,0x87); MY1SFR(TCON,0x88); MY1SFR(TMOD,0x89); MY1SFR(TL0 ,0x8A); MY1SFR(TL1 ,0x8B); MY1SFR(TH0 ,0x8C); MY1SFR(TH1 ,0x8D); MY1SFR(P1 ,0x90); MY1SFR(SCON,0x98); /**MY1SFR(SBUF,0x99);*/ MY1SFR(P2 ,0xA0); MY1SFR(IE ,0xA8); MY1SFR(P3 ,0xB0); MY1SFR(IP ,0xB8); MY1SFR(PSW ,0xD0); MY1SFR(ACC ,0xE0); MY1SFR(B ,0xF0); /*----------------------------------------------------------------------------*/ /** SFR BIT DECLARATIONS (BIT-ADDRESSABLE SFR) */ /* P0 */ MY1SBIT(P0_0,0x80); MY1SBIT(P0_1,0x81); MY1SBIT(P0_2,0x82); MY1SBIT(P0_3,0x83); MY1SBIT(P0_4,0x84); MY1SBIT(P0_5,0x85); MY1SBIT(P0_6,0x86); MY1SBIT(P0_7,0x87); /* TCON */ MY1SBIT(IT0 ,0x88); MY1SBIT(IE0 ,0x89); MY1SBIT(IT1 ,0x8A); MY1SBIT(IE1 ,0x8B); MY1SBIT(TR0 ,0x8C); MY1SBIT(TF0 ,0x8D); MY1SBIT(TR1 ,0x8E); MY1SBIT(TF1 ,0x8F); /* P1 */ MY1SBIT(P1_0,0x90); MY1SBIT(P1_1,0x91); MY1SBIT(P1_2,0x92); MY1SBIT(P1_3,0x93); MY1SBIT(P1_4,0x94); MY1SBIT(P1_5,0x95); MY1SBIT(P1_6,0x96); MY1SBIT(P1_7,0x97); /* SCON */ /**MY1SBIT(RI ,0x98);*/ /**MY1SBIT(TI ,0x99);*/ MY1SBIT(RB8 ,0x9A); MY1SBIT(TB8 ,0x9B); MY1SBIT(REN ,0x9C); MY1SBIT(SM2 ,0x9D); MY1SBIT(SM1 ,0x9E); MY1SBIT(SM0 ,0x9F); /* P2 */ MY1SBIT(P2_0,0xA0); MY1SBIT(P2_1,0xA1); MY1SBIT(P2_2,0xA2); MY1SBIT(P2_3,0xA3); MY1SBIT(P2_4,0xA4); MY1SBIT(P2_5,0xA5); MY1SBIT(P2_6,0xA6); MY1SBIT(P2_7,0xA7); /* IE */ MY1SBIT(EX0 ,0xA8); MY1SBIT(ET0 ,0xA9); MY1SBIT(EX1 ,0xAA); MY1SBIT(ET1 ,0xAB); MY1SBIT(ES ,0xAC); MY1SBIT(EA ,0xAF); /* P3 */ MY1SBIT(P3_0,0xB0); MY1SBIT(P3_1,0xB1); MY1SBIT(P3_2,0xB2); MY1SBIT(P3_3,0xB3); MY1SBIT(P3_4,0xB4); MY1SBIT(P3_5,0xB5); MY1SBIT(P3_6,0xB6); MY1SBIT(P3_7,0xB7); /* P3 - DUAL PURPOSE */ MY1SBIT(RXD ,0xB0); MY1SBIT(TXD ,0xB1); MY1SBIT(INT0,0xB2); MY1SBIT(INT1,0xB3); MY1SBIT(T0 ,0xB4); MY1SBIT(T1 ,0xB5); MY1SBIT(WR ,0xB6); MY1SBIT(RD ,0xB7); /* IP */ MY1SBIT(PX0 ,0xB8); MY1SBIT(PT0 ,0xB9); MY1SBIT(PX1 ,0xBA); MY1SBIT(PT1 ,0xBB); MY1SBIT(PS ,0xBC); /* PSW */ MY1SBIT(P ,0xD0); MY1SBIT(F1 ,0xD1); MY1SBIT(OV ,0xD2); MY1SBIT(RS0 ,0xD3); MY1SBIT(RS1 ,0xD4); MY1SBIT(F0 ,0xD5); MY1SBIT(AC ,0xD6); MY1SBIT(CY ,0xD7); /*----------------------------------------------------------------------------*/ /** INTERRUPT VECTOR */ #define IE0_VECTOR 0 #define TF0_VECTOR 1 #define IE1_VECTOR 2 #define TF1_VECTOR 3 #define SI0_VECTOR 4 /*----------------------------------------------------------------------------*/ #endif /* __MY1MCU51_H */ /*----------------------------------------------------------------------------*/