…
TRISB EQU 0x86 ; адреса регістру керування портом В
; | |
movlw | b‘00001111‘ |
; | | | | | | | | | |
; └┴┴┴─── розряди 3-0 порту B на введення | |
;└┴┴┴─────── розряди 7-4 порту B на вивод | |
movf | TRISB ; конфігурування порту B |
… | ; продовження програми |
Приклад програми. Вводу інформації із порту A та запис її в
комірку пам'яті даних з адресою 0x10.
…
PORTA EQU 0x05 ; адреса регістру порту введення/виводу MEM EQU 0x10 ; адреса регістру у пам'яті даних movf PORTA, 0 ; введення із порту A в регістр W movwf MEM ; запис в комірку пам'яті даних
… ; продовження програми
Приклад програми. Виводу молодшої тетради із комірки пам'яті
даних з адресою 0x10 в старші розряди порту B.
…
PORTB EQU 0x06 ; адреса регістру порту введення/виводу MEM EQU 0x10 ; адреса регістру у пам'яті даних swapf MEM, 0 ; обмін тетрад місцями та запис у W movwf PORTB ; вивод із регістру W у порт B
… ; продовження програми
File –> New – створення нового вікна для набору тексту програми.
Набір тексту програми.
File –> Save As ... – збереження тексту програми у файлі з розширенням .asm.
Options –> Development Mode – вибір типу мікроконтролера(PIC16F877) і режиму (Simulator).
Project –> Build –.Якщо є помилки – виправлення помилок і перехід до компіляції програми.
Debug –> Simulator Stimulus –> Clock Stimulus ... – задання зовнішніх сигналів на входи портів введення/виводу. Window –> Special Function Registers – відкриття вікна регістрів спеціального призначення. Debug –> Run –> Reset – скидання мікроконтролера.Debug –> Run –> Step – покрокове виконання програми.
File –> Exit – вихід із програми.Мета.
Індивідуальне завдання.
Лістинг програми (файл .lst) із докладним коментуванням виконання програми.
Короткий опис програми.Методика тестування програми і вміст .sti файлу.
Результати виконання програми. Висновки.
Лабораторна робота 2
Вивчити основні режими функціонування таймера, способи й особливості його ініціалізації, варіанти використання і настроювання попереднього дільника, функціонування сторожового таймера.
2.1 Зробити ініціалізацію таймера, зробити конфігурацію елементів схеми таймера відповідно до варіанта завдання.
2.1.1 Визначити значення біта T0CS (біт 5 у регістрі OPTION).
2.1.2 Визначити значення біта T0SE (біт 4 у регістрі OPTION).
2.1.3 Визначити значення біта PSA (біт 3 у регістрі OPTION).
2.1.4 Визначити значення бітів PS2 – PS0 (біти 2 – 0 у регістрі OPTION).
2.2 Зробити ділення зовнішньої частоти F, що надходить на вивід RA4/T0CKI мікроконтролера PIC16F877 з коефіцієнтом ділення К1.
Отриману частоту вивести на вивід RB0 мікроконтролера.
2.3 Оцінити максимально можливу вхідну частоту F.
2.4 Визначити період скидання сторожового таймера при використанні попереднього дільника з коефіцієнтом ділення K2.
2.5 Проаналізувати функціонування сторожового таймера в режимі SLEEP.
3.1. Для парних номерів за списком журналу групи рахунковий перепад – фронт імпульсу.
3.2. Для непарних номерів за списком журналу групи рахунковий перепад – спад імпульсу.
3.3. Коефіцієнт розподілу частоти К1 = C + I + N, де C – номер групи, I – індекс групи (1 для «1», 2 для «2» і т.д.), N – номер студента за списком журналу групи.
3.4. Коефіцієнт ділення попереднього дільника K2 = 2n, при n = N mod 8, де N – номер студента за списком журналу групи.
Приклад програми. Конфігурація схеми таймера за наступними вихідними даними: тактування таймера виробляється від зовнішнього джерела тактових імпульсів по задньому фронту із використанням попереднього дільника з коефіцієнтом ділення 1:64.
…
movlw b‘00110101‘
; | | | | | | | |
; | | | | |└┴┴─── коефіцієнт поперед.дільника 1:64
; | | | |└────── попередній дільник підключений до
; | | | | каналу таймера
; | | | └─────── тактування по задньому фронту
; └──── тактування від зовнішнього генератора ; └┴───────── у даній роботі не мають значення
movwf OPTION_REG ; конфігурування схеми таймера
… ; продовження програми
Приклад програми. Підрахунок 10 тактових імпульсів за допомогою таймера, за умови, що таймер сконфігурований заздалегідь.
…
bcf INTCON, GIE ; заборона переривань bcf INTCON, T0IF ; скидання прапорця переповнення
; таймера | |
movlw | .256-10 ; формування константи для |
movwf | TMR0 ; ініціалізації таймера |
m1 btfss | INTCON, T0IF ; очікування переповнення таймера |
goto m1 | ; перехід, якщо таймер не переповнений |
… ; продовження програми
Зауваження. Імена регістрів TMR0 (адреса 0x01), INTCON (адреса 0x0B), і біт T0IF(2), GIE(7), доступні при підключенні заголовного файлу P16F877.INC, або повинні бути описані в описовій секції програми.
Приклад програми. Визначення скидання мікроконтролера за сигналом сторожового таймера. …
btfsc STATUS,-TO ; перевірка прапорця спрацьовування WDT goto res ; перехід, якщо не скидання від WDT brfss STATUS,-PD ; перевірка прапорця спрацьовування WDT goto WDT_RES ; перехід на підпрограму обробки
; скидання за сигналом WDT res
… ; продовження програми
Зауваження. Для можливості функціонування сторожового таймера в пакеті MPLAB, необхідно зробити його настроювання: меню Options–> Processor Setup–>Hardware–>WDT Chip Reset Enable (для пакета MPLAB ver. 4.12).
Імена регістру STATUS (адреса 0x03), і біт -TO(4), -PD(3) доступні при підключенні заголовного файлу P16F877.INC, або повинні бути описані в описовій секції програми.
4 Зміст звіту 4.1 Тема.
4.2 Мета.
4.3 Індивідуальне завдання.
4.4 Структурна схема таймера та сторожового таймера.
4.5 Пояснення до схеми.
4.6 Лістинг програми (файл .lst) із докладним коментуванням виконання програми.
4.7 Короткий опис програми.
4.8 Методика тестування програми і вміст .sti файлу.
4.9 Результати виконання програми. 4.10 Висновки.
Лабораторна робота 3
Вивчити способи формування часових інтервалів різної тривалості, організацію сторінкової пам'яті програм і даних.
2.1 На виводі RB1 мікроконтролера сформувати імпульс тривалістю t1.
2.1.1 Реалізувати часову затримку заданої тривалості.
2.1.2 Спираючись на знання, отримані в лабораторній роботі 1 на виводі RB1 мікроконтролера сформувати імпульс заданої тривалості.
2.2 На виводі RB2 мікроконтролера сформувати імпульс тривалістю t2.
2.2.1 Реалізувати часову затримку заданої тривалості без використання таймера у вигляді підпрограми і розташувати її за адресою 0x123 у пам'яті програм.
2.2.2 Спираючись на знання, отримані в лабораторній роботі 1 на виводі RB2 мікроконтролера, сформувати імпульс заданої тривалості. Виклик підпрограм робити явно.
2.3 На виводі RB3 мікроконтролера сформувати імпульс тривалістю t3.