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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.