
2–75
Motorola Sensor Device Data
For More Information On This Product,
Go to: www.freescale.com
BEQ NEWMAX1 ; Branch if the Holdtime is due
LDA MAXACC ; otherwise use the current value
BRA NEWMAX2
NEWMAX1 LDA #$C8 ; Hold time = 200 * 15 ms = 3 sec
STA HOLD_CNT ; Reload the hold time for the next
CLR HOLD_DONE ; maximum value
LDA #$FF
STA START_TIME ; Start to count down the hold time
LDA PTEMPLO ; Take the current value as maximum
NEWMAX2 STA MAXACC
RTS
******************************************
* *
* This subroutine is to convert *
* the AD data to the LCD *
* Save the data to be diaplayed *
* in MAXACC *
* *
******************************************
ADTOLCD SEI ; Disable the Timer Interrupt !!
LDA #$00 ; Load 0000 into the memory
STA DECHI
LDA #$00
STA DECLO
LDA MAXACC
LDX #5
MUL ; Acceleration = AD x 5
ADD DECLO ; Acceleration is stored as DECHI
STA DECLO ; and DECLO
STA ACCLO ; Temporary storage
LDA #$00 ; Assume positive deceleration
STA SIGN ; ”00” positive ; ”01” negative
CLRA
TXA
ADC DECHI
STA DECHI
STA ACCHI ; Temporary storage
LDA DECLO
SUB DCOFFSETLO ; Deceleration = Dec – DC offset
STA DECLO
LDA DECHI
SBC DCOFFSETHI
STA DECHI
BCS NEGATIVE ; Branch if the result is negative
BRA SEARCH
NEGATIVE LDA DCOFFSETLO ; Acceleration = DC offset – Dec
SUB ACCLO
STA DECLO
LDA DCOFFSETHI
SBC ACCHI
STA DECHI
LDA #$01 ; Assign a negative sign
STA SIGN
SEARCH CLRX ; Start the search for hundred digit
LOOP100 LDA DECLO ; Acceleration = Acceleration – 100
SUB HUNDREDLO
STA DECLO
LDA DECHI
SBC HUNDREDHI
STA DECHI
INCX ; X = X + 1
BCC LOOP100 ; if acceleration >= 100, continue the
DECX ; loop100, otherwise X = X – 1
LDA DECLO ; Acceleration = Acceleration + 100
ADD HUNDREDLO
STA DECLO
LDA DECHI
ADC HUNDREDHI
STA DECHI
TXA ; Check if the MSD is zero
AND #$FF
BEQ NOZERO ; If MSD is zero, branch to NOZERO
LDA $0300,X ; Output the first second digit
STA PORTC
BRA STARTTEN
NOZERO LDA #$00 ; Display blank if MSD is zero
STA PORTC
F
Freescale Semiconductor, Inc.
n
.