Міністерство освіти і науки України
Національний технічний Університет “ХПІ”
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “Обчислювальної техніки та програмування”
Звіт з лабораторної роботи №3
з курсу “Мікроконтролери та мікро ЕОМ”
Тема: “Формування часових інтервалів. Сторінкова організація пам'яті.”
Богачов О. С.
Перивірив:
Ліпчанський М. В.
Скородєлов В.В.
Лабораторна робота №3
Тема: Формування часових інтервалів. Сторінкова організація пам'яті.
Мета роботи: Вивчити способи формування часових інтервалів різної тривалості, організацію сторінкової пам'яті програм і даних.
Індивідуальне завдання:
1) На виході RB1 МК сформувати імпульс тривалістю t1=4.
1.1 Реалізувати часову затримку заданої тривалості.
1.2 Спираючи на знання, отримані в л/р №1 на виході RB1 МК сформувати імпульс заданої тривалості.
2) На виході RB2 МК сформувати імпульс тривалістю t2=20.
2.1 Реалізувати часову затримку заданої тривалості без використання таймера у виді підпрограми і розмістити її за адресою 0x123 у пам'яті програм.
2.2 Спираючи на знання, отримані в л/р №1 на виході RB2 МК сформувати імпульс заданої тривалості. Виклик підпрограми здійснювати явно.
3) На виході RB3 МК сформувати імпульс тривалістю t3= 33600.
3.1 Реалізувати часову затримку заданої тривалості з використанням таймера у виді підпрограми і розмістити її за адресою 0x234 у пам'яті програм.
3.2 Спираючи на знання, отримані в л/р №1 на виході RB3 МК сформувати імпульс заданої тривалості. Виклик підпрограми здійснювати не явно.
t1 = [(N mod 5) + 1] · tц, де N – номер студента за списком журналу групи, tц – тривалість командного циклу.
t2 = (C + I · N) · tц, де C – номер групи, I – індекс групи, N – номер студента за списком журналу групи, tц – тривалість командного циклу.
t3 = 20 · C · I · N · tц, де C – номер групи, I – індекс групи, N – номер студента за списком журналу групи, tц – тривалість командного циклу.
Для парних номерів за списком журналу групи формувати позитивний імпульс на виводах мікроконтролера (_éù_), а для непарних номерів – негативний імпульс (ù_é).
Хід виконання роботи:
1. Запуск пакета MPLAB
2. File -> New – створення нового вікна
3. Набір тексту програми (приведений нижче)
4. Options -> Development mode – вибрати тип Processor – 16F84A
5. Project -> Build Node – компіляція
6. Window -> Special Function Register, ... – вибрати необхідні для перегляду результату вікна
7. Window -> Stopwatch... – для спостереження за тривалістю імпульсу
8. Скидання (F6)
9. Трасування програми (F7)
Хід роботи:
Затримку реалізовано за допомогою пустих команд nop але за рахунок часу потрібного на виконання команди сбросу сигналу на rb1 nop буде на 1 менше ніж час затримки у циклах.
Одна затримка на декремент лічильника , друга на встановленя константи лічильника таймера(очікування переповнення таймеру та перехід у цикл).
Явний виклик процедури – сall мітка підпрограми.Програма по заданій адресі пишеться за допомогою org<зсув>.
Неявний виклик підпрограми виконується у 4 такта : старша адреса у регістр PC\ATH , молодша адреса в PCL і перехід.Поверненя з підпрограмми – RETURN .
Рис.1. Алгоритм виконання завдання
Текст програми має наступний вигляд:
list p=16C84
#include P16C84.INC
MEM EQU 0x1F ; адреса регістру у пам'яті даних
VDEL EQU 0x0c ; t2
CDEL EQU 0x02 ; t2
EDEL EQU 0x0d ; t3
DDEL EQU 0x69 ; t3
FDEL EQU 0x02 ; t3
main
; вводу/виводу
movlw b'11111111'
tris PORTB ; конфігурування порту B
movlw b'00000000'
tris PORTA ; конфігурування порту A
; … ; продовження програми
bsf PORTB, 1
nop
nop
nop
nop
bcf PORTB, 1
bsf PORTB, 1
call proc2
bcf PORTB, 1
bsf PORTB, 1
call proc3
bcf PORTB, 1
proc2 ; підпрограма proc2
movlw 0x01 ; запис старших розрядів
movwf PCLATH ; у регістр PCLATH
movlw 0x23 ; запис молодших розрядів
movwf PCL ; у регістр PCL і перехід за адресою 0x123
;…
org 0x123 ; розміщення підпрограми з адреси 0x123
movlw CDEL ;[1] запис константи
movwf VDEL ;[1] у лічильник
m1 decfsz VDEL, 1 ;[1] зменшення значення лічильника
;[2] якщо VDEL = 0 пропуск наступної команди
goto m1 ;[2] перехід, якщо VDEL ? 0
;… ; продовження програми
return ; повернення з підпрограми в основну програму
proc3 ; підпрограма proc3
movlw 0x02 ; запис старших розрядів
movwf PCLATH ; у регістр PCLATH
movlw 0x34 ; запис молодших розрядів
movwf PCL ; у регістр PCL і перехід за адресою 0x234
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.