Вивчення принципу роботи аналого-цифрового перетворювача на прикладі мікроконтролера PIC16C71, страница 3

0007 1003           00020         bcf STATUS,0            ;Сarry=0

0008 020D           00021         subwf T_U1,0            ;T_U1-W

0009 1C03           00022         btfss STATUS,0          ;проверяем Сarry=1

000A 280E           00023         goto k                  ;если да переход на подрограмму В

000B 2025           00024         call proc_B             ;есле нет переход на подрограмму Е

000C 280F           00025         goto k1

000D 280F           00026         goto k1

000E 202A           00027 k       call proc_E

000F 2033           00028 k1      call analog      ;вызов подпрограммы формирующей на RB4 сигнал

                    00029                                 ;с периодом Т=32 мсек и числом уровней квантования 256

0010 2802           00030         goto start              ;зацикливаем программу

                    00031

                    00032

0011 1683           00033 initAD  bsf STATUS,RP0          ;выбор банка 1

0012 3000           00034         movlw b'00000000'       ;RA3-RA0 - аналоговие выводы

0013 0088           00035         movwf ADCON1           

0014 1283           00036         bcf STATUS,RP0          ;выбор банка 0

0015 30C1           00037         movlw b'11000001'       ;RC-генератор для АЦП

0016 0088           00038         movwf ADCON0            ;канал 0, вкл. АЦП

0017 30EE           00039         movlw b'11101110'       ;все разряды PORTB кроме RB0 и RB4

MPASM 02.20 Released             LAB6.ASM   5-25-2004  19:46:50         PAGE  2

LOC  OBJECT CODE     LINE SOURCE TEXT

  VALUE

0018 0066           00040         TRIS PORTB              ;на ввод

0019 0008           00041         return                 

                    00042

001A                00043 Convert

001A 2020           00044 delay   call Delay30us          ;задержка 30 мкс

001B 1508           00045         bsf ADCON0,GO_DONE      ;запуск АЦП (начать перобразование)

001C 1908           00046 m1      btfsc ADCON0,GO_DONE    ;ожидаем конца переобразования 

001D 281C           00047         goto m1

001E 0809           00048         movf ADRES,W            ;копируем полученный результат в W

001F 0008           00049         return

                    00050

0020                00051 Delay30us               ;подпрограмма реализующая задержку 30 мкс

0020 0000           00052         nop

0021 0000           00053         nop

0022 0000           00054         nop

0023 0000           00055         nop

0024 0008           00056         return

                    00057

0025                00058 proc_B         ;подпрограмма выполняющая декпемент 16-розрядно счетчика       

0025 0B8C           00059         decfsz counter_l        ;декремент младшего байта счетчика

0026 2828           00060         goto m2                 ;переход если нет переполнения

0027 0390           00061         decf counter_h          ;декремент старшего байта счетчика

0028 080C           00062 m2      movf counter_l,0

0029 0008           00063         return

                    00064

002A                00065 proc_E          ;подпрограмма формирующая импульс ti=5*tц

002A 1006           00066         bcf PORTB,0             ;сброс RB0

002B 1406           00067         bsf PORTB,0             ;установка RB0

002C 0000           00068         nop                     ;пустая команда

002D 0000           00069         nop                     ;пустая команда

002E 0000           00070         nop                     ;пустая команда

002F 0000           00071         nop                     ;пустая команда

0030 0000           00072         nop                     ;пустая команда

0031 1006           00073         bcf PORTB,0             ;сброс RB0

0032 0008           00074         return

                    00075

0033                00076 analog          ;вызов подпрограммы формирующей на RB4 сигнал

                    00077                 ;с периодом Т=32 мсек и числом уровней квантования 256

0033 30FF           00078         movlw .255