File "CML12S.ASM"
Full Path: /home/analogde/www/chart-export-handler/Projet/Example/HC12/D256/CML-12SDP256/CML12S.ASM
File size: 4.68 KB
MIME-type: text/x-c
Charset: utf-8
;* Example CML12SDP256 initialization code...
; PLL, EEDIV and FEDIV register settings are for 4MHz crystal oscillator
;
;******************************************************************
; Define DP256 registers
REGBS EQU $0000 ; define register base address for include file
#include DP256REG.ASM
;******************************************************************
; Define clock timing based constants...
EEDIV equ $15 ; ECLKDIV value, 4Mhz osc clock, 190Khz
FEDIV equ $15 ; FCLKDIV value, 4Mhz osc clock, 190Khz
* 8Mhz Eclock constants...
BAUD EQU $34 ; 9600 baud setting for SCI port
;BAUD EQU $1A ; 19,2K baud setting for SCI port
CLKX EQU $01 ; SYNR setting 8MHz
;* 16Mhz Eclock constants...
;BAUD EQU $68 ; 9600 baud setting for SCI port
;BAUD EQU $34 ; 19,2K baud setting for SCI port
;CLKX EQU $03 ; SYNR setting 16MHz
;* 24Mhz Eclock constants...
;BAUD EQU $9c ; 9600 baud setting
;BAUD EQU $4E ; 19,2K baud setting
;CLKX EQU $05 ; SYNR setting for 24MHz
; Define Ram use....
;..................................................................
; Define Ram based Interrupt vector table for AutoStart...
; HC12 DP256 table...
ORG $3F8A
V_TBL:
VSRV RMB 2 ; RESERVED, VECTOR SERVICE VARIABLE
VPWME RMB 2 ; 8C PWM Emergency shutdown
VPTPI RMB 2 ; 8E Port P input
VC4TX RMB 2 ; 90 CAN4 Transmit
VC4RX RMB 2 ; 92 CAN4 Receive
VC4ERR RMB 2 ; 94 CAN4 Error
VC4WU RMB 2 ; 96 CAN4 wakeup
VC3TX RMB 2 ; 98 CAN3 Transmit
VC3RX RMB 2 ; 9A CAN3 Receive
VC3ERR RMB 2 ; 9C CAN3 Error
VC3WU RMB 2 ; 9E CAN3 wakeup
VC2TX RMB 2 ; A0 CAN2 Transmit
VC2RX RMB 2 ; A2 CAN2 Receive
VC2ERR RMB 2 ; A4 CAN2 Error
VC2WU RMB 2 ; A6 CAN2 wakeup
VC1TX RMB 2 ; A8 CAN1 Transmit
VC1RX RMB 2 ; AA CAN1 Receive
VC1ERR RMB 2 ; AC CAN1 Error
VC1WU RMB 2 ; AE CAN1 wakeup
VC0TX RMB 2 ; B0 CAN0 Transmit
VC0RX RMB 2 ; B2 CAN0 Receive
VC0ERR RMB 2 ; B4 CAN0 Error
VC0WU RMB 2 ; B6 CAN0 wakeup
VFEE RMB 2 ; B8 Flash
VEEP RMB 2 ; BA EEprom
VSPI2 RMB 2 ; BC SPI2
VSPI1 RMB 2 ; BE SPI1
VI2C RMB 2 ; C0 IIC
VBDLC RMB 2 ; C2 BDLC
VCRGC RMB 2 ; C4 CRG self clock
VCRGL RMB 2 ; C6 CRG Lock
VPABO RMB 2 ; C8 Pulse count B overflow
VMCNT RMB 2 ; CA Modulus counter
VPTHI RMB 2 ; CC Port H input
VPTJI RMB 2 ; CE Port J input
VADC1 RMB 2 ; D0 ADC1
VADC0 RMB 2 ; D2 ADC0
VSCI1 RMB 2 ; D4 SCI1
VSCI0 RMB 2 ; D6 SCI0
VSPI0 RMB 2 ; D8 SPI0
VPAAI RMB 2 ; DA Pulse count A input
VPAAO RMB 2 ; DC Pulse count A overflow
VTOF RMB 2 ; DE Timer overflow
VTC7 RMB 2 ; E0 TC7
VTC6 RMB 2 ; E2 TC6
VTC5 RMB 2 ; E4 TC5
VTC4 RMB 2 ; E6 TC4
VTC3 RMB 2 ; E8 TC3
VTC2 RMB 2 ; EA TC2
VTC1 RMB 2 ; EC TC1
VTC0 RMB 2 ; EE TC0
VRTI RMB 2 ; F0 RTI
VIRQ RMB 2 ; F2 IRQ
VXIRQ RMB 2 ; F4 XIRQ
VSWI RMB 2 ; F6 SWI
VTRAP RMB 2 ; F8 TRAP
VCOP RMB 2 ; FA COP
VCLM RMB 2 ; FC Clock
ENDVECT EQU *
;..................................................................
; Define Stack location, under vector table...
STACK EQU $3F8A ; top of ram under Interrupt vectors
;..................................................................
; Define user variables here...
;******************************************************************
; Define Program start location, flash memory...
ORG $4000
; Program start-up example .....
RESET:
sei ; Interrupts off! in case of trap here
;* enable bus controls and set memory map, COMMENT OUT for Single chip mode...
; movw #$0CE0,PEAR ; EXPANDED WIDE BUS ON,
;* ; PE4=E, PE3=LSTRB, PE2=R/W
; If single chip, COMMENT OUT
; If expanded, Set flash memory map and if external bus on, enable stretch
; movb #$0F,MISC ; Expanded = Low Flash off, ext. mem stretch = 3
; movb #$01,EBICTL ; Expanded = stretch on
LDS #STACK ; initialize the stack pointer
CLR COPCTL ; COP TIMER OFF
;* set eeprom clock...
movb #EEDIV,ECLKDIV ; set EE clock divider
;* set flash clock for programming...
movb #FEDIV,FCLKDIV ; set Flash clock divider
;* enable PLL ...
movb #CLKX,SYNR ; set Eclock frequency
;* wait for PLL lock...
PLL_Wait:
ldaa CRGFLG ; get PLL flags
bita #$08 ; test for lock
beq PLL_Wait ; wait for lock
movb #$80,CLKSEL ; PLL on...
; Initialize Interrupt vectors....
MOVW #RESET,VCLM ; set clock fail to Reset vector
; Set all other not applied interrupt vectors
; to Reset or Monitor may trap as an
; unscheduled interrupt and application
; will not recover without user intervention
MOVW #IRQ_SRV,VIRQ ; Example set IRQ vector
; add other initialization as needed by application...
; Start user program...
MAIN:
; Dummy IRQ interrupt service for example...
IRQ_SRV:
RTI