Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
chart-export-handler
/
Projet
/
Example
/
HC12
/
D256
/
CML-12SDP256
:
CML12S.ASM
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
;* 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