Page 214 - Programming Microcontrollers in C
P. 214

Analog-to-Digital Converter Operation   199

                   011D BE 58 LDX $58 adc_data[j]>>= 1;
                   011F E6 50 LDA $50,X
                   0121 44        LSRA
                   153
                   0122 BE 58 LDX $58
                   0124 E7 50 STA $50,X
                   0126 B6 58 LDA $58 adc_data[j]+=
                                           read_adc(j)>>1;
                   0128 CD 01 43 JSR $0143
                   012B 44        LSRA
                   012C BE 58 LDX $58
                   012E EB 50 ADD $50,X
                   0130 E7 50 STA $50,X

                                           #asm


                   0132 BE 58 ldx j
                   0134 B6 58 lda j
                   0136 CD 01 43 jsr read_adc
                   0139 EB 50 add adc_data,x
                   013B 46        rora
                   013C E7 50 sta adc_data,x
                              #endasm

                                           }
                   013E 3C 58 INC $58
                   0140 20 C4 BRA $0106
                   0142 81        RTS      }

                                            unsigned int read_adc(int k)
                   0059                    {
                   0143 B7 59 STA $59
                   0145 B6 09 LDA $09  AD_CTST&=~0X7;
                   0147 A4 F8 AND #$F8
                   0149 B7 09 STA $09
                   014B B6 09 LDA $09  AD_CTST |=k;
                   014D BA 59 ORA $59
                   014F B7 09 STA $09
   209   210   211   212   213   214   215   216   217   218   219