
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
.