AN1950
Sensors
Freescale Semiconductor 9
warm: brclr 1,porta,PB1 ;check for SEL
brclr 2,porta,PB2 ;or for ENT
bclr 4,porta ;otherwise
bset 5,porta ;turn on "SEL" LED
jsr del100ms ;delay
bset 4,porta ;toggle LEDs
bclr 5,porta ;"ENT" now on: means choice is SEL ***or*** ENT
jsr del100ms ;delay and repeat until SEL or ENT
bra warm
PB1: inc RA ;***SEL*** toggles menu choices
lda RA
cmp #$02 ;menu choices are $00 and $01
bne PB1ok
clr RA ;back to $00 when all others have been offered
PB1ok: bclr 4,porta
bclr 5,porta ;LEDs off
jsr del100ms ;wait a little bit
brclr 1,porta,PB1ok ;make sure they let go of SEL
bra luke
PB2: bclr 4,porta ;***ENT*** confirms menu choice
bclr 5,porta ;LEDs off
lda RA ;get menu choice
bne skip00
jmp LEVEL ;do ===LEVEL=== if choice=$01
skip00: jmp UNITS ;do ===UNITS=== if choice=$00
;__________________________________________________________
;__________________________________________________________
CALIB: lda #$01
jsr lcdcmdo
clr ram0
ldhx #msg05 ;===CALIB=== 2-point calibration
jsr lcdstro ;Calibration current values
lda N1 ;0mm
jsr lcdbyto
lda #'/'
jsr lcdchro
lda N2 ;160mm
jsr lcdbyto
bset 4,porta
bset 5,porta ;LEDs on
lego1: brclr 1,porta,lego1
lego2: brclr 2,porta,lego2
bclr 4,porta
bclr 5,porta ;LEDs off when both SEL & ENT are released
jsr del1s
jsr del1s ;wait 2s
ldhx #msg05a
jsr lcdstro ;show instructions
waitPB1: brset 2,porta,no2 ;if ENT is not pressed, skip
jmp nocalib ;if ENT is pressed then cancel calibration
no2: brclr 1,porta,do1st ;if SEL is pressed then do 1st point cal
bra waitPB1 ;otherwise wait for SEL or ENT
do1st: ldhx #msg05b ;1st point cal: show values
jsr lcdstro
clr CNT ;CNT will count 256 A/D readings
clr RB
clr RA ;RB:RA will contain 16-bit add-up of those 256 values