Міністерство освіти і науки України
Національний технічний Університет “ХПІ”
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “Обчислювальної техніки та програмування”
Звіт з лабораторної роботи №6
з курсу “Мікроконтролери та мікро ЕОМ”
Тема: “ Формування сигналів керування й індикації ”
Богачов О. С.
Перивірив:
Ліпчанський М. В.
Скородєлов В.В.
МЕТА: Набути навички складання функціональної схеми. Вивчити способи формування сигналів керування й індикації, навчитися формувати звукові та світлові сигнали на прикладі мікроконтролера PIC16F84A, розглянути використання динамічної індикації.
Приклад функціональної схеми пристрою.
ЗАВДАННЯ ПО ЛАБОРАТОРНІЙ РОБОТІ
1. На виводі RА3 мікроконтролера сформувати сигнал із частотою 600Гц і скважністю Q=2 при натиснутій кнопці.
2. На виводі RB2 мікроконтролера сформувати сигнал із частотою 2,8Гц і скважністю Q=2 при віджатій кнопці.
3. На дев'ятирозрядному семисегментному світлодіодному індикаторі за допомогою динамічної індикації із частотою 190 Гц відновлення всіх розрядів індикатора, відобразити групу й ініціали (14Б Б.A.С.).
Алгоритм програми1:
- Ініціалізуємо контролер. Настроюємо PORTB на вивід, RA1 – на ввід, дозволяємо переривання від таймера.
- Для того щоб сформувати частоту 600Гц (Т=77мкс) треба внести до таймеру початкове значення .18
- Очікуємо тереривання від таймера.
- Після того, як відбудеться переривання від таймера перевыряэмо чи була натиснута кнопка (RA1 = 1), якщо була натиснена змінюється значення RB3 на протележне.
Текст програми1:
; підключення файлу з описом стандартних констант і значень
#include p16f84.inc
; формування конфігураційного слова
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
; опис комірок пам'яті даних
cblock 0x0C ; починаючи з адреси 0x0C
W_TEMP ; збереження W при виклику переривання
STATUS_TEMP ; збереження STATUS при перериванні
endc
; опис констант
init_portа equ b'00000010' ; усі розряди на вивід
init_portb equ b'00000000' ; усі розряди на вивід
init_option equ b'00001000' ; TMR0 рахує CLKOUT/2
init_intcon equ b'10100000' ; переривання від TMR0
; початок програми
org 0 ; вектор скидання
bcf INTCON, GIE ; заборона всіх переривань
goto main ; перехід на початок основної програми
; оброблювач переривання
int_start
org 0x04 ; вектор переривання
movwf W_TEMP ; збереження W і STATUS
swapf STATUS, W
movwf STATUS_TEMP
btfsc INTCON,T0IF ; переривання від таймера?
goto tmr_int ; перехід на оброблювач переривання
; при переповненні таймера
movlw b'00100000' ; дозвіл переривань тільки від таймера
movwf INTCON
goto int_end ; перехід на закінчення оброблювача
; оброблювач переривання від таймера
tmr_int
bcf INTCON, T0IF ; очищення прапорця переповнення TMR0
call IntFreq ; відновлення стану індикатора
int_end ; закінчення оброблювача переривання
swapf STATUS_TEMP, W ; відновлення значень
movwf STATUS ; регістрів W і STATUS
swapf W_TEMP, F
swapf W_TEMP, W
movlw .18
movwf TMR0
retfie ; повернення з переривання
; підпрограма відновлення стану індикатора
IntFreq
movlw 0x01
xorwf PORTА,1
; movwf PORTB ; вивід поточного розряду
return
; підпрограма ініціалізації мікроконтролера
Init
bsf STATUS, RP0 ; вибір банку 1
movlw init_portb ; ініціалізація регістра TRISB
movwf TRISB^0x80
movlw init_option ; ініціалізація регістра OPTION
movwf OPTION_REG^80h
clrf STATUS ; вибір банку 0
movlw 0x08
movwf PORTА
movlw init_intcon ; ініціалізація регістра INTCON, movwf INTCON ; дозвіл переривань
movwf INTCON
return
; основна програма
main
call Init ; ініціалізація мікроконтролера
movlw .18
movwf TMR0
m1 goto m1
end ; кінець програми
Алгоритм програми2:
- Ініціалізуємо контролер. Настроюємо PORTB на вивід, RA3 – на ввід, дозволяємо переривання від таймера.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.