hc11.h
C Language Include File for EE 308


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

#ifndef __HC11_H
#define __HC11_H    1

/* base address of register block, change this if you relocate the register
 * block. This is from an A8. May need to be changed for other HC11 members
 * or if you relocate the IO base address.
 */

#define _IO_BASE    0x1000
#define PORTA   (*(unsigned char  *)(_IO_BASE + 0x00))
#define PIOC    (*(unsigned char  *)(_IO_BASE + 0x02))
#define PORTC   (*(unsigned char  *)(_IO_BASE + 0x03))
#define PORTB   (*(unsigned char  *)(_IO_BASE + 0x04))
#define PORTCL  (*(unsigned char  *)(_IO_BASE + 0x05))
#define DDRC    (*(unsigned char  *)(_IO_BASE + 0x07))
#define PORTD   (*(unsigned char  *)(_IO_BASE + 0x08))
#define DDRD    (*(unsigned char  *)(_IO_BASE + 0x09))
#define PORTE   (*(unsigned char  *)(_IO_BASE + 0x0A))
#define CFORC   (*(unsigned char  *)(_IO_BASE + 0x0B))
#define OC1M    (*(unsigned char  *)(_IO_BASE + 0x0C))
#define OC1D    (*(unsigned char  *)(_IO_BASE + 0x0D))
#define TCNT    (*(unsigned short *)(_IO_BASE + 0x0E))
#define TIC1    (*(unsigned short *)(_IO_BASE + 0x10))
#define TIC2    (*(unsigned short *)(_IO_BASE + 0x12))
#define TIC3    (*(unsigned short *)(_IO_BASE + 0x14))
#define TOC1    (*(unsigned short *)(_IO_BASE + 0x16))
#define TOC2    (*(unsigned short *)(_IO_BASE + 0x18))
#define TOC3    (*(unsigned short *)(_IO_BASE + 0x1A))
#define TOC4    (*(unsigned short *)(_IO_BASE + 0x1C))
#define TOC5    (*(unsigned short *)(_IO_BASE + 0x1E))
#define TCTL1   (*(unsigned char  *)(_IO_BASE + 0x20))
#define TCTL2   (*(unsigned char  *)(_IO_BASE + 0x21))
#define TMSK1   (*(unsigned char  *)(_IO_BASE + 0x22))
#define TFLG1   (*(unsigned char  *)(_IO_BASE + 0x23))
#define TMSK2   (*(unsigned char  *)(_IO_BASE + 0x24))
#define TFLG2   (*(unsigned char  *)(_IO_BASE + 0x25))
#define PACTL   (*(unsigned char  *)(_IO_BASE + 0x26))
#define PACNT   (*(unsigned char  *)(_IO_BASE + 0x27))
#define SPCR    (*(unsigned char  *)(_IO_BASE + 0x28))
#define SPSR    (*(unsigned char  *)(_IO_BASE + 0x29))
#define SPDR    (*(unsigned char  *)(_IO_BASE + 0x2A))
#define BAUD    (*(unsigned char  *)(_IO_BASE + 0x2B))
#define SCCR1   (*(unsigned char  *)(_IO_BASE + 0x2C))
#define SCCR2   (*(unsigned char  *)(_IO_BASE + 0x2D))
#define SCSR    (*(unsigned char  *)(_IO_BASE + 0x2E))
#define SCDR    (*(unsigned char  *)(_IO_BASE + 0x2F))
#define ADCTL   (*(unsigned char  *)(_IO_BASE + 0x30))
#define ADR1    (*(unsigned char  *)(_IO_BASE + 0x31))
#define ADR2    (*(unsigned char  *)(_IO_BASE + 0x32))
#define ADR3    (*(unsigned char  *)(_IO_BASE + 0x33))
#define ADR4    (*(unsigned char  *)(_IO_BASE + 0x34))
#define BPROT   (*(unsigned char  *)(_IO_BASE + 0x35))
#define EPROG   (*(unsigned char  *)(_IO_BASE + 0x36))
#define OPTION  (*(unsigned char  *)(_IO_BASE + 0x39))
#define COPRST  (*(unsigned char  *)(_IO_BASE + 0x3A))
#define PPROG   (*(unsigned char  *)(_IO_BASE + 0x3B))
#define HPRIO   (*(unsigned char  *)(_IO_BASE + 0x3C))
#define INIT    (*(unsigned char  *)(_IO_BASE + 0x3D))
#define TEST1   (*(unsigned char  *)(_IO_BASE + 0x3E))
#define CONFIG  (*(unsigned char  *)(_IO_BASE + 0x3F))

/* These are the locations of the interrupt vectors defined by BUFFALO.
 * For example, to use the SCI interrupt, do the following before
 * enabling interrupts:
 *      
 *      SCI_JMP = JMP_OP_CODE;
 *      SCI_VEC =  sci_isr;
 *
 * where sci_isr() is the SCI interupt service routine:
 *
 *      #pragma interrupt_handler sci_isr
 *      void sci_isr(void)
 *      {
 *          interrupt-handling code
 *      }
 */

#define JMP_OP_CODE 0x7E;

#define SCI_JMP     (* (unsigned char *) 0x00C4)
#define SCI_VEC     (* (void     (**)()) 0x00C5)
#define SPI_JMP     (* (unsigned char *) 0x00C7)
#define SPI_VEC     (* (void     (**)()) 0x00C8)
#define PAIE_JMP    (* (unsigned char *) 0x00CA)
#define PAIE_VEC    (* (void     (**)()) 0x00CB)
#define PAO_JMP     (* (unsigned char *) 0x00CD)
#define PAO_VEC     (* (void     (**)()) 0x00CE)
#define TOF_JMP     (* (unsigned char *) 0x00D0)
#define TOF_VEC     (* (void     (**)()) 0x00D1)
#define TOC5_JMP    (* (unsigned char *) 0x00D3)
#define TOC5_VEC    (* (void     (**)()) 0x00D4)
#define TOC4_JMP    (* (unsigned char *) 0x00D6)
#define TOC4_VEC    (* (void     (**)()) 0x00D7)
#define TOC3_JMP    (* (unsigned char *) 0x00D9)
#define TOC3_VEC    (* (void     (**)()) 0x00DA)
#define TOC2_JMP    (* (unsigned char *) 0x00DC)
#define TOC2_VEC    (* (void     (**)()) 0x00DD)
#define TOC1_JMP    (* (unsigned char *) 0x00DF)
#define TOC1_VEC    (* (void     (**)()) 0x00E0)
#define TIC3_JMP    (* (unsigned char *) 0x00E2)
#define TIC3_VEC    (* (void     (**)()) 0x00E3)
#define TIC2_JMP    (* (unsigned char *) 0x00E5)
#define TIC2_VEC    (* (void     (**)()) 0x00E6)
#define TIC1_JMP    (* (unsigned char *) 0x00E8)
#define TIC1_VEC    (* (void     (**)()) 0x00E9)
#define RTI_JMP     (* (unsigned char *) 0x00EB)
#define RTI_VEC     (* (void     (**)()) 0x00EC)
#define IRQ_JMP     (* (unsigned char *) 0x00EE)
#define IRQ_VEC     (* (void     (**)()) 0x00EF)
#define XIRQ_JMP    (* (unsigned char *) 0x00F1)
#define XIRQ_VEC    (* (void     (**)()) 0x00F2)
#define SWI_JMP     (* (unsigned char *) 0x00F4)
#define SWI_VEC     (* (void     (**)()) 0x00F5)
#define ILLOP_JMP   (* (unsigned char *) 0x00F7)
#define ILLOP_VEC   (* (void     (**)()) 0x00F8)
#define COP_JMP     (* (unsigned char *) 0x00FA)
#define COP_VEC     (* (void     (**)()) 0x00FB)
#define CLM_JMP     (* (unsigned char *) 0x00FD)
#define CLM_VEC     (* (void     (**)()) 0x00FE)

#define enable()    asm("   cli")
#define disable()   asm("   sei")

#endif


Bill Rison, <rison@ee.nmt.edu >
Fri Feb 6 1998
© 1998, New Mexico Tech