Freescale Semiconductor, Inc.
STA
LDA
CMP
BNE
LDA
STA
JSR
BRA
LDA
ADD
CMP
BHS
LDA
STA
JSR
JSR
CLR
CLR
CLR
CLR
CLR
CLR
BRA
PTEMPLO
HOLD_CNT
#$00
NON–CRASH
PTEMPLO
MAXACC
ADTOLCD
NON–CRASH
ZERO_ACC
#$0E
PTEMPLO
NO_INFLATE
#$FF
; Check if the hold time of crash data
; is up
; If yes, display the current acceleration
; value
CRASH
; If the crash is more than 7g
; 7g = 0E H * 0.5
; activate the LED
PLMA
NO_INFLATE
NON–CRASH
MAXVALUE
ADTOLCD
SHIFT_CNT
AVE_CNT1
AVE_CNT2
AVERAGE_L
AVERAGE_M
AVERAGE_H
REPEAT
; Display the peak acceleration
; Repeat the whole process
******************************************
*
*
*
*
*
*
*
*
Delay Subroutine
(162 * 0.7725 ms = 0.125 sec)
******************************************
DLY20
STA
LDA
TEMP1
#!162
; 1 unit = 0.7725 ms
OUTLP
INNRLP
CLRX
DECX
BNE
INNRLP
DECA
BNE
LDA
OUTLP
TEMP1
RTS
******************************************
*
*
*
*
*
*
*
*
*
*
Reading the ADC data X times
and take the average
X is defined by DIV_HI and DIV_LO
******************************************
READAD
LDA
STA
CLR
CLR
CLR
CLRX
CLR
TXA
CMP
BEQ
BRA
INC
LDA
CMP
BEQ
BRA
TXA
CMP
BEQ
BRCLR
LDA
ADD
STA
CLRA
ADC
STA
CLRA
ADC
STA
INCX
BRA
CLR
#$25
ADSTAT
PRESHI2
PRESHI
PRESLO
; AD status = 25H
; Clear the memory
ADCOUNTER
LOOP128
#$FF
INC_COUNT
CONT
ADCOUNTER
ADCOUNTER
DIV_HI
CHECK_X
ENDREAD
INC_COUNT
CONT
; If ADCOUNTER = X
; Clear bit = 0
; Branch to END100
CHECK_X
ENDREAD
DIV_LO
END128
7,ADSTAT,ENDREAD ; Halt here till AD read is finished
ADDATA
PRESLO
PRESLO
; Read the AD register
; PRES = PRES + ADDATA
PRESHI
PRESHI
PRESHI2
PRESHI2
; Increase the AD counter by 1
; Branch to Loop128
; Reset the right shift counter
LOOP128
RSHIFT
END128
Motorola Sensor Device Data
www.motorola.com/semiconductors
Go to: www.freescale.com
2–73
For More Information On This Product,