- •Література
- •Інформаційні ресурси
- •Використання mplab для складання та налагодження програм мікроконтролера
- •Теоретичні відомості
- •Порядок виконання лабораторної роботи
- •Лабораторна робота № 21 Дії з портами мікроконтролера, логічні операції та обробка окремих бітів
- •Теоретичні відомості
- •21.1. Аналіз роботи програми
- •Лабораторна робота № 22 Створення програмної затримки часу за допомогою циклів
- •Теоретичні відомості
- •22.1. Результати аналізу програми
- •Лабораторна робота № 23 Створення затримки часу за допомогою переривань від таймера
- •23.2. Варіанти задання коефіцієнтів ділення переддільника
- •23.2. Алгоритм управління світлодіодами з затримкою від таймера tmr0
- •23.3. Результати аналізу програми
- •Використання енергонезалежної пам'яті даних
- •У регістрі eecon1 розміщені такі біти керування:
- •24.1. Блок-схема алгоритму обміну з eeprom
- •Використання клавіатури з мікроконтролером
- •Теоретичні відомості
- •25.1. Таблиця результатів тестування
- •Виведення цифрової інформації на семисегментні індикатори
- •Основи використання mplab-icd пояснено далі в ході роботи.
- •Закрити вікно icd Options ().
- •Дослідження мікроконтролерного модуля аналого-цифрового перетворювача
- •Закрити вікно icd Options().
- •27.1. Результати вимірів і обчислень
- •Мікроконтролерне дослідження дренькоту контактів
- •Результати вимірів кількості замикань контактів
21.1. Аналіз роботи програми
Вимикач |
Світлодіод |
Мітка | |||||||||||
RA4 |
RA3 |
RA2 |
RA1 |
RA0 |
RB7 |
RB6 |
RB5 |
RB4 |
RB3 |
RB2 |
RB1 |
RB0 | |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
Т0 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
Т1 |
0 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
Т2 |
0 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
Т3 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
Т4 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
Т5 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
Т0 |
Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою.
Після програмування, яке може тривати декілька секунд, відтиснути перемикач на лабораторній установці, щоб включити режим роботи. При цьому виключиться світлодіод "Prog" і зразу почне виконуватися програма, занесена у мікроконтролер.
З аналізу програми можна зрозуміти, що після ініціалізації контролер зациклюється на опитування стану вимикача RA0. Запишіть у таблицю стан світлодіодів на цьому етапі у двійковій системі. Далі ввімкніть вимикач RA0, запишіть стан світлодіодів. Увімкніть вимикач RA1 і знову запишіть стан світлодіодів і т.д. згідно з табл. 2.1.
Звірте записи стану світлодіодів з передбаченими у п. 7 і у випадку неспівпадіння з'ясуйте, в чому причина невідповідності таблиці та стану світлодіодів.
ЗМІСТ ЗВІТУ
Звіт має містити: назву та мету лабораторної роботи, скорочений порядок виконання лабораторної роботи, текст програми з коментарем і станом світлодіодів після їх кожної зміни, перелік імен регістрів спеціального призначення, що використовуються у дослідженій програмі, формат та опис дії кожного виду команд, що вперше зустрічаються у дослідженій програмі мікроконтролера.
КОНТРОЛЬНІ ЗАПИТАННЯ
З яких основних блоків складається лабораторна установка?
Як здійснити програмування мікроконтролера?
Як виконуються логічні команди iorwf f,d, andwf f,d, xorwf f,d ?
Які команди дозволяють здійснити керування окремим бітом регістра чи зовнішнього порту?
Для чого призначений файл P16F628.INC?
Лабораторна робота № 22 Створення програмної затримки часу за допомогою циклів
Мета роботи: засвоїти метод створення затримок часу з використанням вкладених циклів
Теоретичні відомості
Алгоритми управління і контролю, як правило, потребують створення затримок часу. Для цього при програмуванні мікроконтролерів використовують два способи:
програмну затримку за рахунок багатократного повторення команд з використанням вкладених циклів;
використання таймерів, вбудованих у мікросхему контролера.
При програмній затримці команди у вкладеному (внутрішньому) циклі повторюються стільки разів, скільки передбачено в його лічильнику. За цей час лічильник зовнішнього циклу змінюється тільки на одиницю. Тому для оцінки загального часу затримки треба множити час виконання внутрішнього циклу на число, занесене у лічильник зовнішнього циклу. У пропонованій нижче програмі для затримки часу використовується три цикли, вкладених один в інший.
ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ
У середовищі MPLAB створити у папці D:\ 1Work новий проект з іменем 22ГБ (Г – номер групи, Б – номер бригади), обравши у
меню Project-New Project.
У вікні Edit Project додати новий файл на асемблері 22ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням .asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням .asm (File – New), записавши його у папку 1Work (File - Save As …).
Зарисувати алгоритм (рис. 22.1) і ввести текст програми на асемблері.
Записати програму на диск (File – Save).
Виконати компіляцію програми (Project – Make Project або крайня права піктограма у вигляді зеленої лійки). Після цього на екрані з'являється вікно результатів компіляції (Build Results).
Якщо з'явилось повідомлення про помилки (error), слід, ознайомившись з поясненням змісту помилки, виконати мишкою подвійний клік на цьому рядку вікна Build Results. MPLAB зробить активним той рядок у тексті програми, де, ймовірно, зроблено помилку. Слід виправити її і далі так само й інші помилки. Потім повернутись до п. 5, поки не буде видано повідомлення "Build completed successfully" (компіляцію завершено успішно). При цьому створюється файл з тим же ім'ям і розширенням .hex.
Створити вікно спостереження (Window – Watch Windows – New Watch Window …), включивши до нього регістри PORTB, HI, MID, LO.
Встановити у програмі точку зупинки на команді call SEC. Для цього, навівши курсор на рядок цієї команди, натиснути праву клавішу мишки та обрати в контекстному меню Break Point(s) (Точка(и) зупинки). Рядок виділяється червоним кольором. Так само встановити точки зупинки на командах
goto LOOP
goto SEC3
goto SEC2
goto SEC1
Текст програми:
;******************************************************
;ЛАБОРАТОРНА РОБОТА 22
;Почергове включення світлодіодів
;******************************************************
LIST P=16F628
#INCLUDE "P16F628.INC"
;директиву __CONFIG набрати в одному рядку,
;закінчуючи словом _LVP_OFF
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _LVP_OFF
HI EQU 0x20 ;змінна зовнішнього циклу
MID EQU 0x21 ;змінна середнього циклу
LO EQU 0x22 ;змінна внутрішнього циклу
COD EQU БР ;тут замість слова БР слід ввести
;номер бригади!
org 0x000 ; (РС)=0
movlw 0x07 ;Відключити компаратори і включити
movwf CMCON ;біти порту А у дискретний режим
bsf STATUS, RP0 ;Обрати банк регістрів 1
movlw 0x3F ;Усі біти порту А - на введення
movwf TRISA
clrf TRISB ;Усі біти порту В - у режим виведення
bcf STATUS, RP0 ;Обрати банк регістрів 0
clrf PORTB ;очистити порт В (вимкнути світлодіоди)
bsf STATUS, C ;встановити біт переносу С
LOOP: rlf PORTB,f ;зсув вліво вмісту PORTВ
call SEC ;виклик підпрограми затримки
goto LOOP ;перехід на повторення дій
;п/п затримки часу
SEC: movlw .42 ;далі написати коментар самостійно!
movwf HI
SEC1: movlw .46
movwf MID
SEC2: movlw COD*.25
movwf LO
SEC3: decfsz LO,f
goto SEC3
decfsz MID,f
goto SEC2
decfsz HI,f
goto SEC1
return
end
Зробити скидання (F6) і пуск програми (F9). Виконання припиниться на команді call SEC. Далі буде здійснено виклик підпрограми затримки часу. Щоб визначити цей час, слід вивести на екран вікно віртуального секундоміра (Window – Stopwatch) і обнулити його (Zero). Записати дані в табл. 22.1. У подальшому виконувати програму до чергової точки зупинки (F9) і заповнювати графи таблиці. Треба пам'ятати, що симулятор комп'ютера виконує програму приблизно у 300 разів повільніше, ніж реальний мікроконтролер.
Наближено розрахувати час виконання підпрограми затримки. Наприклад, для варіанта COD = 10:
Частота тактового генератора f = 4 МГц.
Період тактового сигналу Тп = 1 / Тп = 1 / 4 МГц = 0,25 мкс.
Час виконання команди без переходів і пропусків становить 4 такти
Тк = 4·0,25 мкс = 1 мкс.
Команди з переходами виконуються вдвічі довше (2 мкс).
Час виконання команд тіла внутрішнього циклу (decfsz LO,f та goto SEC3) становить Ттв = 1+2 = 3 мкс.
Час виконання внутрішнього циклу
Твн = 25·COD·Ттв = 25·10·3 = 750 мкс.
Час виконання середнього циклу
Тс = 46·Твн = 46·750 = 34500 мкс.
Час виконання зовнішнього циклу (всієї підпрограми затримки)
Тз = 42·Тс = 42·34500 = 1449000 мкс = 1,449 с.
Підключити лабораторну установку до LPT-порту комп'ютера і до живлення. Встановити перемикач у положення "Програмування" (при цьому світиться світлодіод Prog), а вимикачі, що підключені до портів, усі вимкнути.