Version 1.0.11 (Sept 19, 2004)
Dallas DS5000 MCON Register declarations corrected by Radek Zadera / a2i@swipnet.se
+ Version 1.0.12 (March 2, 2005)
+ Infineon SAB80C509 Register declarations added Thomas Boje / thomas@boje.name
+
Adding support for additional microcontrollers:
-----------------------------------------------
MICROCONTROLLER_DS8XC520 Dallas DS87C520 and DS83C520 microcontrollers
MICROCONTROLLER_P80C552 Philips P80C552
MICROCONTROLLER_P89C668 Philips P89C668
+ MICROCONTROLLER_SAB80C509 Infineon / Siemens SAB80C509
MICROCONTROLLER_SAB80515 Infineon / Siemens SAB80515 & SAB80535
MICROCONTROLLER_SAB80515A Infineon / Siemens SAB80515A
MICROCONTROLLER_SAB80517 Infineon / Siemens SAB80517
// end of definitions for the Philips P89C668
+// definitions for the Infineon / Siemens SAB80509
+#ifdef MICROCONTROLLER_SAB80509
+#ifdef MICROCONTROLLER_DEFINED
+#define MCS51REG_ERROR
+#endif
+#ifndef MICROCONTROLLER_DEFINED
+#define MICROCONTROLLER_DEFINED
+#endif
+#ifdef MCS51REG_ENABLE_WARNINGS
+#warning Selected HW: Infineon / Siemens SAB80509
+#endif
+// 8051 register set without IP
+#define P0
+#define SP
+#define DPL
+#define DPH
+#define PCON__SMOD__PDS__IDLS__x__x__x__PD__IDL
+#define TCON
+#define TMOD
+#define TL0
+#define TL1
+#define TH0
+#define TH1
+#define WDTREL
+#define P1
+#define XPAGE
+#define S0CON__SM0__SM1__SM20__REN0__TB80__RB80__TI0__RI0
+#define IEN2__SAB80517
+
+#define P2
+#define IE__EA_WDT_ET2_ES_ET1_EX1_ET0_EX0
+#define IP0__x__WDTS__IP0_5__IP0_4__IP0_3__IP0_2__IP0_1__IP0_0
+
+#define P3
+#define SYSCON
+#define IEN1__EXEN2__SWDT__EX6__EX5__EX4__EX3__EX2__EADC
+#define IP1__x__x__IP1_5__IP1_4__IP1_3__IP1_2__IP1_1__IP1_0
+
+#define IRCON
+#define CCEN
+#define CCL1
+#define CCH1
+#define CCL2
+#define CCH2
+#define CCL3
+#define CCH3
+#define CCL4
+#define CCH4
+#define CC4EN
+#define S0RELH
+#define S0RELL
+#define S1BUF
+#define S1CON_AT_0X9B
+#define S1RELH
+#define S1RELL
+#define T2CON__T2PS__I3FR__I2FR__T2R1__T2R0__T2CM__T2I1__T2I0
+
+#define PSW
+#define CMEN
+#define CMH0
+#define CML0
+#define CMH1
+#define CML1
+#define CMH2
+#define CML2
+#define CMH3
+#define CML3
+#define CMH4
+#define CML4
+#define CMH5
+#define CML5
+#define CMH6
+#define CML6
+#define CMH7
+#define CML7
+#define CMSEL
+#define CRCL
+#define CRCH
+#define CTCOM_AT_0XE1
+#define CTRELH
+#define CTRELL
+#define TL2
+#define TH2
+#define ADCON0
+#define ADCON1
+#define ADDATH
+#define ADDATL
+
+#define P4_AT_0XE8
+#define DPSEL
+#define ARCON
+#define MD0
+#define MD1
+#define MD2
+#define MD3
+#define MD4
+#define MD5
+#define S0BUF
+
+#define ACC
+
+#define B
+
+#define P5_AT_0XF8
+#define P6_AT_0XFA
+#define P7
+#define P8
+
+#define COMSETL
+#define COMSETH
+#define COMCLRL
+#define COMCLRH
+#define SETMSK
+#define CLRMSK
+#define SYSCON1
+#define FMODE
+#define PRSC
+#define CT1COM
+#define IEN3
+#define IRCON2
+#define EICC1
+#define CC1
+#define CC2
+#define CC3
+#define CC4
+#define CCR
+#define T2
+#define P9_AT_0XF9
+#endif
+// end of definitions for the Infineon / Siemens SAB80509
+
+
// definitions for the Infineon / Siemens SAB80515 & SAB80535
#ifdef MICROCONTROLLER_SAB80515
#ifdef MICROCONTROLLER_DEFINED
sfr at 0xDF C1TMA1 ; // DS80C390 specific
#endif
+#ifdef CC1
+#undef CC1
+sfr at 0xC2 CC1;
+#endif
+
+#ifdef CC2
+#undef CC2
+sfr at 0xC4 CC2;
+#endif
+
+#ifdef CC3
+#undef CC3
+sfr at 0xC6 CC3;
+#endif
+
+#ifdef CC4
+#undef CC4
+sfr at 0xCE CC4;
+#endif
+
#ifdef CC4EN
#undef CC4EN
sfr at 0xC9 CC4EN ; // compare/capture 4 enable register SAB80517 specific
sbit at 0xC7 CF ;
#endif
+#ifdef CCR
+#undef CCR
+sfr at 0xCA CCR;
+#endif
+
#ifdef CH_AT_0XF9
#undef CH_AT_0XF9
sfr at 0xF9 CH ;
sfr at 0xE9 CL ;
#endif
+#ifdef CLRMSK
+#undef CLRMSK
+sfr at 0xA6 CLRMSK;
+#endif
+
#ifdef CMEN
#undef CMEN
sfr at 0xF6 CMEN ; // compare enable register SAB80517 specific
sfr at 0xF7 CMSEL ; // compare input select SAB80517
#endif
+#ifdef COMCLRH
+#undef COMCLRH
+sfr at 0xA4 COMCLRH;
+#endif
+
+#ifdef COMCLRL
+#undef COMCLRL
+sfr at 0xA3 COMCLRL;
+#endif
+
+#ifdef COMSETH
+#undef COMSETH
+sfr at 0xA2 COMSETH;
+#endif
+
+#ifdef COMSETL
+#undef COMSETL
+sfr at 0xA1 COMSETL;
+#endif
+
#ifdef COR
#undef COR
sfr at 0xCE COR ; // Dallas DS80C390 specific
sfr at 0xC2 CRCLOW ; // DS5001 specific
#endif
+#ifdef CT1COM
+#undef CT1COM
+sfr at 0xBC CT1COM;
+#endif
+
#ifdef CTCOM_AT_0XE1
#undef CTCOM_AT_0XE1
sfr at 0xE1 CTCON ; // com.timer control register SAB80517
sfr at 0xD3 EETIM ;
#endif
+#ifdef EICC1
+#undef EICC1
+sfr at 0xBF EICC1;
+#endif
+
#ifdef EIE__x__x__x__EWDI__EX5__EX4__EX3__EX2
#undef EIE__x__x__x__EWDI__EX5__EX4__EX3__EX2
sfr at 0xE8 EIE ;
sfr at 0xD6 FDATA ;
#endif
+#ifdef FMODE
+#undef FMODE
+sfr at 0xB3 FMODE;
+#endif
+
#ifdef IE__EA__x__x__ES__ET1__EX1__ET0__EX0
#undef IE__EA__x__x__ES__ET1__EX1__ET0__EX0
sfr at 0xA8 IE ;
sfr at 0x9A IEN2 ; // interrupt enable register 2 SAB80517
#endif
+#ifdef IEN3
+#undef IEN3
+sfr at 0xBE IEN3;
+#endif
+
#ifdef IP__x__x__x__PS__PT1__PX1__PT0__PX0
#undef IP__x__x__x__PS__PT1__PX1__PT0__PX0
sfr at 0xB8 IP ;
sfr at 0xD1 IRCON1 ; // interrupt control register - SAB80515 specific
#endif
+#ifdef IRCON2
+#undef IRCON2
+sfr at 0xBF IRCON2;
+#endif
+
#ifdef MA
#undef MA
sfr at 0xD3 MA ; // DS80C390
sfr at 0xDD P8 ; // Port 6 - SAB80517 specific
#endif
+#ifdef P9_AT_0XF9
+#undef P9_AT_0XF9
+sfr at 0xF9 P9;
+#endif
+
#ifdef PCON__SMOD__x__x__x__x__x__x__x
#undef PCON__SMOD__x__x__x__x__x__x__x
sfr at 0x87 PCON ;
#define CD1 0x80
#endif
+#ifdef PRSC
+#undef PRSC
+sfr at 0xB4 PRSC;
+#endif
+
#ifdef PSW
#undef PSW
sfr at 0xD0 PSW ;
sbit at 0xC7 SM0_FE_1 ;
#endif
+#ifdef SETMSK
+#undef SETMSK
+sfr at 0xA5 SETMSK;
+#endif
+
#ifdef SP
#undef SP
sfr at 0x81 SP ;
#define TG47 0x80
#endif
+
#ifdef SYSCON
#undef SYSCON
sfr at 0xB1 SYSCON ; // XRAM Controller Access Control
#define SYSCON_EALE 0x20
#endif
+#ifdef SYSCON1
+#undef SYSCON1
+sfr at 0xB2 SYSCON1;
+#endif
+
+#ifdef T2
+#undef T2
+sfr at 0xCC T2;
+#endif
+
#ifdef T2CON__TF2__EXF2__RCLK__TCLK__EXEN2__TR2__C_T2__CP_RL2
#undef T2CON__TF2__EXF2__RCLK__TCLK__EXEN2__TR2__C_T2__CP_RL2
sfr at 0xC8 T2CON ;
#define TF2_VECTOR 7 // 0x3B (Timer 2)
#endif
+#ifdef MICROCONTROLLER_SAB80509
+#define RI0_VECTOR 4 // 0x23 serial port 0
+#define TI0_VECTOR 4 // 0x23 serial port 0
+#define TF2_VECTOR 5 // 0x2B timer 2
+#define EX2_VECTOR 5 // 0x2B external interrupt 2
+ // 0x33
+ // 0x3B
+#define IADC_VECTOR 8 // 0x43 A/D converter interrupt
+#define IEX2_VECTOR 9 // 0x4B external interrupt 2
+#define IEX3_VECTOR 10 // 0x53 external interrupt 3
+#define IEX4_VECTOR 11 // 0x5B external interrupt 4
+#define IEX5_VECTOR 12 // 0x63 external interrupt 5
+#define IEX6_VECTOR 13 // 0x6B external interrupt 6
+ // 0x73 not used
+ // 0x7B not used
+#define SI1_VECTOR 16 // 0x83 serial port 1
+#define RI1_VECTOR 16 // 0x83 serial port 1
+#define TI1_VECTOR 16 // 0x83 serial port 1
+ // 0x8B not used
+#define ICM_VECTOR 18 // 0x93 compare registers CM0-CM7
+#define CTF_VECTOR 19 // 0x9B compare time overflow
+#define ICS_VECTOR 20 // 0xA3 compare register COMSET
+#define ICR_VECTOR 21 // 0xAB compare register COMCLR
+#define ICC_VECTOR 26 // 0xD3 compare event interrupt ICC10-ICC17
+#define CT1_VECTOR 27 // 0xDB compare timer 1 oveflow
+#endif
+
#ifdef MICROCONTROLLER_SAB80515
#define TF2_VECTOR 5 // 0x2B timer 2
#define EX2_VECTOR 5 // 0x2B external interrupt 2