hc12.h include file which defines all the registers in the HC12

/*
 * C include file for EE 308
 * Spring, 2001
 */

#ifndef __HC12_H
#define __HC12_H    1

/* base address of register block, change this if you relocate the register
 * block. 
 */

#define _BASE    0x0000

#define PORTA  (* (unsigned char *)(_BASE+0x00))	
#define PORTB  (* (unsigned char *)(_BASE+0x01))	
#define DDRA   (* (unsigned char *)(_BASE+0x02))	
#define DDRB   (* (unsigned char *)(_BASE+0x03))	
#define PORTE  (* (unsigned char *)(_BASE+0x08))	
#define DDRE   (* (unsigned char *)(_BASE+0x09))	
#define PEAR   (* (unsigned char *)(_BASE+0x0a))	
#define MODE   (* (unsigned char *)(_BASE+0x0b))	
#define PUCR   (* (unsigned char *)(_BASE+0x0c))	
#define RDRIV  (* (unsigned char *)(_BASE+0x0d))	

#define INITRM (* (unsigned char *)(_BASE+0x10))	
#define INITRG (* (unsigned char *)(_BASE+0x11))	
#define INITEE (* (unsigned char *)(_BASE+0x12))	
#define MISC   (* (unsigned char *)(_BASE+0x13))	
#define RTICTL (* (unsigned char *)(_BASE+0x14))	
#define RTIFLG (* (unsigned char *)(_BASE+0x15))	
#define COPCTL (* (unsigned char *)(_BASE+0x16))	
#define COPRST (* (unsigned char *)(_BASE+0x17))	
#define ITST0  (* (unsigned char *)(_BASE+0x18))	
#define ITST1  (* (unsigned char *)(_BASE+0x19))	
#define ITST2  (* (unsigned char *)(_BASE+0x1a))	
#define ITST3  (* (unsigned char *)(_BASE+0x1b))	
#define INTCR  (* (unsigned char *)(_BASE+0x1e))	
#define HPRIO  (* (unsigned char *)(_BASE+0x1f))	

#define BRKCT0 (* (unsigned char *)(_BASE+0x20))	
#define BRKCT1 (* (unsigned char *)(_BASE+0x21))	
#define BRKA   (* (unsigned int  *)(_BASE+0x22))	
#define BRKD   (* (unsigned int  *)(_BASE+0x24))	

#define PWCLK  (* (unsigned char *)(_BASE+0x40))	
#define PWPOL  (* (unsigned char *)(_BASE+0x41))	
#define PWEN   (* (unsigned char *)(_BASE+0x42))	
#define PWPRES (* (unsigned char *)(_BASE+0x43))	
#define PWSCAL0 (* (unsigned char *)(_BASE+0x44))	
#define PWSCNT0 (* (unsigned char *)(_BASE+0x45))	
#define PWSCAL1 (* (unsigned char *)(_BASE+0x46))	
#define PWSCNT1 (* (unsigned char *)(_BASE+0x47))	
#define PWCNT0 (* (unsigned char *)(_BASE+0x48))	
#define PWCNT1 (* (unsigned char *)(_BASE+0x49))	
#define PWCNT2 (* (unsigned char *)(_BASE+0x4a))	
#define PWCNT3 (* (unsigned char *)(_BASE+0x4b))	
#define PWPER0 (* (unsigned char *)(_BASE+0x4c))	
#define PWPER1 (* (unsigned char *)(_BASE+0x4d))	
#define PWPER2 (* (unsigned char *)(_BASE+0x4e))	
#define PWPER3 (* (unsigned char *)(_BASE+0x4f))	
#define PWDTY0 (* (unsigned char *)(_BASE+0x50))	
#define PWDTY1 (* (unsigned char *)(_BASE+0x51))	
#define PWDTY2 (* (unsigned char *)(_BASE+0x52))	
#define PWDTY3 (* (unsigned char *)(_BASE+0x53))	
#define PWCTL  (* (unsigned char *)(_BASE+0x54))	
#define PWTST  (* (unsigned char *)(_BASE+0x55))	
#define PORTP  (* (unsigned char *)(_BASE+0x56))	
#define DDRP   (* (unsigned char *)(_BASE+0x57))	

#define ATDCTL0 (* (unsigned char *)(_BASE+0x60))	
#define ATDCTL1 (* (unsigned char *)(_BASE+0x61))	
#define ATDCTL2 (* (unsigned char *)(_BASE+0x62))	
#define ATDCTL3 (* (unsigned char *)(_BASE+0x63))	
#define ATDCTL4 (* (unsigned char *)(_BASE+0x64))	
#define ATDCTL5 (* (unsigned char *)(_BASE+0x65))	
#define ATDSTAT (* (unsigned int  *)(_BASE+0x66))	
#define ATDTEST (* (unsigned int  *)(_BASE+0x68))	
#define PORTAD  (* (unsigned char *)(_BASE+0x6f))	
#define ADR0H   (* (unsigned char *)(_BASE+0x70))	
#define ADR1H   (* (unsigned char *)(_BASE+0x72))	
#define ADR2H   (* (unsigned char *)(_BASE+0x74))	
#define ADR3H   (* (unsigned char *)(_BASE+0x76))	
#define ADR4H   (* (unsigned char *)(_BASE+0x78))	
#define ADR5H   (* (unsigned char *)(_BASE+0x7a))	
#define ADR6H   (* (unsigned char *)(_BASE+0x7c))	
#define ADR7H   (* (unsigned char *)(_BASE+0x7e))	

#define TIOS   (* (unsigned char *)(_BASE+0x80))	
#define CFORC  (* (unsigned char *)(_BASE+0x81))	
#define OC7M   (* (unsigned char *)(_BASE+0x82))	
#define OC7D   (* (unsigned char *)(_BASE+0x83))	
#define TCNT   (* (unsigned int  *)(_BASE+0x84))	
#define TSCR   (* (unsigned char *)(_BASE+0x86))	
#define TQCR   (* (unsigned char *)(_BASE+0x87))	
#define TCTL1  (* (unsigned char *)(_BASE+0x88))	
#define TCTL2  (* (unsigned char *)(_BASE+0x89))	
#define TCTL3  (* (unsigned char *)(_BASE+0x8a))	
#define TCTL4  (* (unsigned char *)(_BASE+0x8b))	
#define TMSK1  (* (unsigned char *)(_BASE+0x8c))	
#define TMSK2  (* (unsigned char *)(_BASE+0x8d))	
#define TFLG1  (* (unsigned char *)(_BASE+0x8e))	
#define TFLG2  (* (unsigned char *)(_BASE+0x8f))	
#define TC0    (* (unsigned int  *)(_BASE+0x90))	
#define TC1    (* (unsigned int  *)(_BASE+0x92))	
#define TC2    (* (unsigned int  *)(_BASE+0x94))	
#define TC3    (* (unsigned int  *)(_BASE+0x96))	
#define TC4    (* (unsigned int  *)(_BASE+0x98))	
#define TC5    (* (unsigned int  *)(_BASE+0x9a))	
#define TC6    (* (unsigned int  *)(_BASE+0x9c))	
#define TC7    (* (unsigned int  *)(_BASE+0x9e))	
#define PACTL  (* (unsigned char *)(_BASE+0xa0))	
#define PAFLG  (* (unsigned char *)(_BASE+0xa1))	
#define PACNT  (* (unsigned int  *)(_BASE+0xa2))	
#define TIMTST (* (unsigned char *)(_BASE+0xad))	
#define PORTT  (* (unsigned char *)(_BASE+0xae))	
#define DDRT   (* (unsigned char *)(_BASE+0xaf))	

#define SC0BDH (* (unsigned char *)(_BASE+0xc0))	
#define SC0BDL (* (unsigned char *)(_BASE+0xc1))	
#define SC0CR1 (* (unsigned char *)(_BASE+0xc2))	
#define SC0CR2 (* (unsigned char *)(_BASE+0xc3))	
#define SC0SR1 (* (unsigned char *)(_BASE+0xc4))	
#define SC0SR2 (* (unsigned char *)(_BASE+0xc5))	
#define SC0DRH (* (unsigned char *)(_BASE+0xc6))	
#define SC0DRL (* (unsigned char *)(_BASE+0xc7))	

#define SP0CR1 (* (unsigned char *)(_BASE+0xd0))	
#define SP0CR2 (* (unsigned char *)(_BASE+0xd1))	
#define SP0BR  (* (unsigned char *)(_BASE+0xd2))	
#define SP0SR  (* (unsigned char *)(_BASE+0xd3))	
#define SP0DR  (* (unsigned char *)(_BASE+0xd5))	
#define PORTS  (* (unsigned char *)(_BASE+0xd6))	
#define DDRS   (* (unsigned char *)(_BASE+0xd7))	
#define PURDS  (* (unsigned char *)(_BASE+0xdb))	

#define EEMCR   (* (unsigned char *)(_BASE+0xf0))	
#define EEPROT  (* (unsigned char *)(_BASE+0xf1))	
#define EETST   (* (unsigned char *)(_BASE+0xf2))	
#define EEPROG  (* (unsigned char *)(_BASE+0xf3))	
#define FEELCK  (* (unsigned char *)(_BASE+0xf4))	
#define FEEMCR  (* (unsigned char *)(_BASE+0xf5))	
#define FEETST  (* (unsigned char *)(_BASE+0xf6))	
#define FEECTL  (* (unsigned char *)(_BASE+0xf7))	
#define BCR1    (* (unsigned char *)(_BASE+0xf8))	
#define BSVR    (* (unsigned char *)(_BASE+0xf9))	
#define BCR2    (* (unsigned char *)(_BASE+0xfa))	
#define BDR     (* (unsigned char *)(_BASE+0xfb))	
#define BARD    (* (unsigned char *)(_BASE+0xfc))	
#define DLCSCR  (* (unsigned char *)(_BASE+0xfd))	
#define PORTDLC (* (unsigned char *)(_BASE+0xfe))	
#define DDRDLC  (* (unsigned char *)(_BASE+0xff))	

#define enable()   _asm(" cli");
#define disable()  _asm(" sei");
#endif