
3–403
Motorola Sensor Device Data
For More Information On This Product,
Go to: www.freescale.com
jmp MANCALIB
skip02: jmp TEST
;__________________________________________________________
;__________________________________________________________
CALIB: 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
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 contains 16–bit add–up of those 256 values
do256: lda #$C9
jsr lcdcmdo ;position LCD cursor at the right spot
lda CNT
deca
jsr lcdbyto ;display current iteration $FF downto $00
lda #’:’
jsr lcdchro
jsr adcbyti ;get reading
add RA
sta RA
lda RB
adc #$00
sta RB ;add into RB:RA (16 bit add)
jsr lcdbyto ;show RB
lda RA
jsr lcdbyto ;then RA
dbnz CNT,do256 ;and do 256x
lsl RA ;get bit7 into carry
bcc nochg ;if C=0 then no need to round up
inc RB ;otherwise round up
nochg: lda RB ;we can discard RA: average value is in RB
ldhx #N1 ;point to flash location
jsr wrflash ;burn it in!
ldhx #msg05c ;ask for 160mm
jsr lcdstro
waitPB2: brset 2,porta,waitPB2 ;wait for ENT
ldhx #msg05d ;2nd point cal: show values
jsr lcdstro
clr CNT ;ditto as 1st point cal
clr RB
clr RA
do256b: lda #$C9
jsr lcdcmdo
lda CNT
deca
jsr lcdbyto
lda #’:’
jsr lcdchro
jsr adcbyti
add RA
sta RA
lda RB
adc #$00
sta RB
F
Freescale Semiconductor, Inc.
n
.