AN1950
Sensors
Freescale Semiconductor 17
uPB2: bclr 4,porta ;***ENT*** confirms menu choice
bclr 5,porta ;LEDs off
lda RA ;get menu choice
bne SelIN
SelCM: ldhx #$A014 ;initialize default units to cm ($A0=cm, $3F=in)
sthx UnitType ;UnitType set to $A0; UnitDiv set to $14
ldhx #$039E
sthx UnitEmpt ;UnitEmpt set to $03; UnitFull set to $9E
lda #$01
jsr lcdcmdo ;clear LCD
ldhx #msg03a
jsr lcdstro ;and show choice selection to be cm
jsr del1s ;wait 1s
jmp LEVEL ;let's do LEVEL now...
SelIN: ldhx #$3F08 ;initialize default units to in ($A0=cm, $3F=in)
sthx UnitType ;UnitType set to $3F; UnitDiv set to $08
ldhx #$033D
sthx UnitEmpt ;UnitEmpt set to $03; UnitFull set to $3D
lda #$01
jsr lcdcmdo ;clear LCD
ldhx #msg03b
jsr lcdstro ;and show choice selection to be in
jsr del1s ;wait 1s
jmp LEVEL ;let's do LEVEL now...
;__________________________________________________________
;__________________________________________________________
;__________________________________________________________
;********************************************************************
;********************************************************************
;******** GENERAL Routines ******************************************
;********************************************************************
;********************************************************************
;-------- INITIALIZATION Routines -----------------------------------
; ALLINIT: initializes HC08, sets I/O, resets LCD and LEDs
; -------
ALLINIT: bset 0,config1 ;disable COP
mov #$38,ddra ;PTA0=MPAK,PTA1=SEL,PTA2=ENT,PTA3=E,PTA4=RS,PTA5=clk
mov #$30,adiclk ;ADC clock /2
bclr 3,porta ;E=0
bclr 4,porta ;grn=OFF; RS=0
bclr 5,porta ;red=OFF; CLK=0
rts
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; WARMUP: waits half a second while it flashes LEDs, and allows LCD to get ready
; ------
WARMUP: bclr 4,porta
bclr 5,porta ;LEDs off
lda #$0A ;prepare to do this 10x
tenx: jsr del25ms ;delay
bclr 4,porta
bset 5,porta ;alternate on/off
jsr del25ms
bset 4,porta
bclr 5,porta ;and off/on
dbnza tenx ;10 times so the LCD can get ready (slow startup)
jsr lcdinit ;now initialize it