English
Language : 

S912XEG128J2MAA Datasheet, PDF (465/1324 Pages) Freescale Semiconductor, Inc – Microcontrollers
Chapter 10 XGATE (S12XGATEV3)
INIT_SCI
INIT_INT
INIT_XGATE
INIT_XGATE_BUSY_LOOP
;###########################################
;#
INITIALIZE S12XE CORE
#
;###########################################
SEI
MOVB #(RAM_START_GLOB>>12), RPAGE ;set RAM page
;###########################################
;#
INITIALIZE SCI
#
;###########################################
MOVW #(BUS_FREQ_HZ/(16*9600)), SCIBDH;set baud rate
MOVB #(TIE|TE), SCICR2;enable tx buffer empty interrupt
;###########################################
;#
INITIALIZE S12X_INT
#
;###########################################
MOVB #(SCI_VEC&$F0), INT_CFADDR
;switch SCI interrupts to XGATE
MOVB #RQST|$01, INT_CFDATA+((SCI_VEC&$0F)>>1)
;###########################################
;#
INITIALIZE XGATE
#
;###########################################
MOVW #XGMCTL_CLEAR, XGMCTL
;clear all XGMCTL bits
TST XGCHID
;wait until current thread is finished
BNE INIT_XGATE_BUSY_LOOP
LDX #XGIF
LDD #$FFFF
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
STD 2,X+
;clear all channel interrupt flags
CLR XGISPSEL
;set vector base register
MOVW #XGATE_VECTORS_XG, XGVBR
MOVW #$FF00, XGSWT ;clear all software triggers
INIT_XGATE_VECTAB_LOOP
;###########################################
;#
INITIALIZE XGATE VECTOR TABLE
#
;###########################################
LDAA #128
;build XGATE vector table
LDY #XGATE_VECTORS
MOVW #XGATE_DUMMY_ISR_XG, 4,Y+
DBNE A, INIT_XGATE_VECTAB_LOOP
COPY_XGATE_CODE
COPY_XGATE_CODE_LOOP
MOVW #XGATE_CODE_XG, RAM_START+(2*SCI_VEC)
MOVW #XGATE_DATA_XG, RAM_START+(2*SCI_VEC)+2
;###########################################
;#
COPY XGATE CODE
#
;###########################################
LDX #XGATE_DATA_FLASH
MOVW 2,X+, 2,Y+
MC9S12XE-Family Reference Manual Rev. 1.25
Freescale Semiconductor
465