
3–231
Motorola Sensor Device Data
For More Information On This Product,
  Go to: www.freescale.com
099A 3D 50     TST    $50          if ( digit[0] == 0 )   /* leading zero suppression */
099C 26 04     BNE    $09A2       
099E 3F 02     CLR    $02            portc = 0;
09A0 20 07     BRA    $09A9            else
09A2 BE 50     LDX    $50               portc = ( lcdtab[digit[0]] );     /* 100’s digit */
09A4 D6 08 00  LDA    $0800,X     
09A7 B7 02     STA    $02         
09A9 3D 50     TST    $50                if ( digit[0] == 0 && digit[1] == 0 )
09AB 26 08     BNE    $09B5       
09AD 3D 51     TST    $51         
09AF 26 04     BNE    $09B5       
09B1 3F 01     CLR    $01                  portb=0;
09B3 20 07     BRA    $09BC                  else
09B5 BE 51     LDX    $51                      portb = ( lcdtab[digit[1]] );      /* 10’s digit */
09B7 D6 08 00  LDA    $0800,X     
09BA B7 01     STA    $01         
09BC BE 52     LDX    $52                      porta = ( lcdtab[digit[2]]+1 ); /* 1’s digit + decimal point */
09BE D6 08 00  LDA    $0800,X     
09C1 4C        INCA               
09C2 B7 00     STA    $00         
09C4 9A        CLI                 CLI;
09C5 CD 08 17  JSR    $0817                    delay();
09C8 81        RTS                 }
                                   /****************************************************************/
                                   void display_psi(void)
                                   /* At power–up it is assumed that the pressure port of the sensor
                                      is open to atmosphere. The code in initio() delays for the
                                      sensor and power to stabilize. One hundred A/D conversions are
                                      averaged and divided by 100. The result is called xdcr_offset.
                                      This routine calls the A/D routine which performs one hundred
                                      conversions, divides the result by 100 and returns the value.
                                      If the value returned is less than or equal to the xdcr_offset,
                                      the value of xdcr_offset is substituted. If the value returned
                                      is greater than xdcr_offset, xdcr_offset is subtracted from the
                                      returned value. That result is multiplied by a constant to yield
                                      pressure in PSI * 10 to yield a ”decimal point”.
                                   */
                                   {
                                    while(1)
                                      {
09C9 3F 59     CLR    $59          slope = 64;
09CB A6 40     LDA    #$40        
09CD B7 5A     STA    $5A         
09CF B6 03     LDA    $03               k = portd & 0xc0;  /* this lets us ”rubber” the slope to closer fit
09D1 A4 C0     AND    #$C0        
09D3 B7 62     STA    $62         
                                                              the slope of the sensor */
09D5 A1 80     CMP    #$80               if ( k == 0x80 )    /* J2 removed, J1 installed */
09D7 26 06     BNE    $09DF       
09D9 3F 59     CLR    $59                  slope = 65;
09DB A6 41     LDA    #$41        
09DD B7 5A     STA    $5A         
09DF B6 62     LDA    $62                   if ( k == 0x40 ) /* J1 removed, J2 installed */
F
Freescale Semiconductor, Inc.
n
.