Міністерство освіти і науки України
Національний технічний Університет “ХПІ”
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “Обчислювальної техніки та програмування”
Звіт з лабораторної роботи №7
з курсу “Мікроконтролери та мікро ЕОМ”
Тема: “Ввід і вивід аналогових сигналів
у мікроконтролерах сімейства PIC16Cxx”
Богачов О. С.
Перивірив:
Ліпчанський М. В.
Скородєлов В.В.
Індивідуальнезавдання:
1. Введення аналогих сигналів.
1.1. Ввести сигнал з двох аналогових датчиків А1, А2.
1.2. Проаналізувати сигнал та виконати наступні дії:
Якщо А1<А2, тоді читаємо восьмирозрядне число з порту В, та записуємо його у комірку пам’яті (0х20) даних.
Якщо А1³А2, тоді декрементуємо значення комірки пам’яті (0х20) даних.
1.3. Виведення аналогових сигналів. На виводі RB1 сформувати сигнал з періодом Т=2мс, і числом рівнів квантування N=128.
Алгоритм програми:
1. Настоюємо АЦП мікроконтролера. Вибираємо з якого каналу отримувати аналоговий сигнал (початково з АN2,а потім з AN3), а також внутрішній генератор.
2. Настроюємо переривання від АЦП. Для цього скидаємо флаг закінчення переривання та встановлюємо флаг який дозволяє переривання від АЦП, ті флаг який дозволяє переривання.
3. Робимо затримку 30 мкс.
4. Встановлюємо біт запуска АЦП, та очикуємо коли буде закінчено перетворення аналогового сигналу
5. Після перетворення сигналу результат записуємо у r_AN2(3).
6. Після того, як було перетворено 2 аналогових сигнали перевіряємо їх відношення одне до одного та виконуємо ту або інакшу дію.
7. переходимо до пункту 1.
Для подання сигналів використовується файл (an.reg)який містить:
17
27
39
20
55
55
Текст програми:
; підключення файлу з описом стандартних констант і значень
#include p16c71.inc
cblock 0x0C
r_AN2 ;1ый результат АЦП преобразования
r_AN3 ;2ой результат АЦП преобразования
flag ;записывать в r_AN1 или r_AN2?
cycl ;для временной задержки
ah
al
endc
goto main
int_point org 0x04
btfsc ADCON0,ADIF; прерывавние по окончанию АЦП преобразования
call EndPr ;вызов обработчика
retfie ;возврат с прерывания
EndPr
movf ADRES,0
bcf ADCON0,ADIF ;сброс флага конца АЦП преобразования
return
initAD
movlw 0xFF
tris PORTB
; настройка каналов АЦП
movlw b'00000000' ;AN0-AN7 - аналоговые входы
movwf ADCON1^80
movlw b'11010001' ;внутрений RC генератор, выбор канала AN2.
movwf ADCON0
btfsc flag,0
bsf ADCON0,3 ;выбор канала AN3
return
setInt
bcf ADCON0,ADIF ;сбросить флаг окончания прерывания
bsf INTCON,ADIE ;разрешить прерывание от АЦП
bsf INTCON,GIE ;разрешить прерывание
return
Delay30us
movlw 9
movwf cycl
m_del decfsz cycl,1
goto m_del
return
wait_res
m1 btfsc ADCON0,GO_DONE ;
goto m1
return
case_r
btfss flag,0
call r_AN2c
btfsc flag,0
call r_AN3s
movlw 0x01
xorwf flag,1 ;инвертируем 0ой бит в flag
return
r_AN3s
movwf r_AN3
bsf flag,1
return
r_AN2c
movwf r_AN2
bcf flag,1
return
compare
movf r_AN3,0
subwf r_AN2,0 ;r_AN2-r_AN3
btfsc STATUS,C ;если r_AN2 < r_AN3
goto decrem
read
movf PORTB,0
movwf 0x20
goto ex
decrem
movlw 0x20
movwf FSR
movf FSR,0
decf W,0
movwf 0x20
ex return
SHIM
movlw 0xFD;
tris PORTB
movlw .128
movwf ah
movwf al
bcf INTCON,GIE;
movlw b'00010010' ; 1:8, по пер.фронту, от внешн.ист.сигн
; делитель работает с TMR0
bsf STATUS, RP0 ; вибір банку 1
movwf OPTION_REG ; запис у регістр OPTION
bcf STATUS, RP0 ; вибір банку 0
movlw 0xFD
andwf PORTB,1
msh
movlw 6
movwf TMR0;
bcf INTCON,T0IF; сброс флага переполнения
movlw 0x02
xorwf PORTB,1
mmh decfsz al,1
goto mmh
movlw 0x02
xorwf PORTB,1
mmcl btfss INTCON,T0IF
goto mmcl
decf ah,1
movf ah,0
movwf al
decfsz ah,1
goto msh
return
org 60h
main
clrf flag
loop call initAD
call setInt
call Delay30us
ares
bsf ADCON0,GO_DONE ;бит запуска АЦП
call wait_res
call case_r
btfsc flag,1 ;если было преобразовано 2а числа
call compare ;тогда сравниваем числа
call SHIM
goto loop
END
Висновок: за допомогою АЦП можна перетворити аналоговий сигнал у цифровий кід. АЦП перетворення здійснюється за 5мкс. Цифрове значення можна записати у пам’ять мікроконтролера, або порівняти його з іншим числом. Цифрове значення можна представити у вигляді аналогового сигнала використовуя ШІМ
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.