movlw b'11101110' ;все разряды PORTB кроме RB0 и RB4
TRIS PORTB ;на ввод
return
Convert
delay call Delay30us ;задержка 30 мкс
bsf ADCON0,GO_DONE ;запуск АЦП (начать перобразование)
m1 btfsc ADCON0,GO_DONE ;ожидаем конца переобразования
goto m1
movf ADRES,W ;копируем полученный результат в W
return
Delay30us ;подпрограмма реализующая задержку 30 мкс
nop
nop
nop
nop
return
proc_B ;подпрограмма выполняющая декпемент 16-розрядно счетчика
decfsz counter_l ;декремент младшего байта счетчика
goto m2 ;переход если нет переполнения
decf counter_h ;декремент старшего байта счетчика
m2 movf counter_l,0
return
proc_E ;подпрограмма формирующая импульс ti=5*tц
bcf PORTB,0 ;сброс RB0
bsf PORTB,0 ;установка RB0
nop ;пустая команда
nop ;пустая команда
nop ;пустая команда
nop ;пустая команда
nop ;пустая команда
bcf PORTB,0 ;сброс RB0
return
analog ;вызов подпрограммы формирующей на RB4 сигнал
;с периодом Т=32 мсек и числом уровней квантования 256
movlw .255
movwf an2
n3 decfsz an2
goto n1
goto n2
n1 bcf PORTB,4 ;сброс RB4
call t_32mc ;задежка 32 мсек
bsf PORTB,4 ;установка RB4
call t_32mc ;задежка 32 мсек
goto n3
n2 return
t_32mc ;подпрграмма формирующая задержку 32 мсек
movlw .45
movwf an1
k2 decfsz an1
goto m4
goto m5
m4 movlw .241
movwf del
m3 decfsz del
goto m3 ;переход если нет переполнения
goto k2
m5 return
END ;конец программы
Тект файлу лістинга цієї програми має наступний вигляд:
MPASM 02.20 Released LAB6.ASM 5-25-2004 19:46:50 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 list p=16с71 ;определение типа мк
00002 #include P16c71.inc ;подключение файла p16с71.inc
00001 LIST
00002 ; P16C71.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00142 LIST
0000000C 00003 counter_l EQU 0x0c ;младший байт 16-розрядного счетчика
0000000D 00004 T_U1 EQU 0x0d ;ячейка в которой будет сохранено значение первого аналогового сигнала
0000000E 00005 del EQU 0x0e ;дополнительная ячейка
0000000F 00006 T_U2 EQU 0x0f ;ячейка в которой будет сохранено значение второго аналогового сигнала
00000010 00007 counter_h EQU 0x10 ;старший байт 16-розрядного счетчика
00000011 00008 test EQU 0x11 ;дополнительная ячейка
00000012 00009 an1 EQU 0x12 ;дополнительная ячейка
00000013 00010 an2 EQU 0x13 ;дополнительная ячейка
00011
0000 138B 00012 bcf INTCON, GIE ;запрет прерываний
0001 2802 00013 goto start
00014
0002 2011 00015 start call initAD ;вызов подпрограммы
0003 201A 00016 call Convert ;вызов подпрограммы
0004 008D 00017 movwf T_U1 ;сохраняем значени первого аналогового сигнала
0005 201A 00018 call Convert ;вызов подпрограммы
0006 008F 00019 movwf T_U2 ;сохраняем значени второго аналогового сигнала
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.