- •Література
- •Інформаційні ресурси
- •Використання 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. Результати вимірів і обчислень
- •Мікроконтролерне дослідження дренькоту контактів
- •Результати вимірів кількості замикань контактів
24.1. Блок-схема алгоритму обміну з eeprom
3. Зарисувати алгоритм і ввести текст програми на асемблері.
Записати програму на диск (File – Save).
Виконати компіляцію програми (Project – Make Project або кнопка у вигляді зеленої лійки). Після цього на екрані з'являється вікно результатів компіляції (Build Results). Ознайомитись з повідомленнями про можливі помилки (error) і виправити їх. Потім повернутись до п. 4, 5, поки не буде видано повідомлення "Build completed successfully" (компіляцію завершено успішно).
Розрахувати в зошиті середнє значення масиву з округленням до найближчого цілого і перевести його у двійкову систему.
Підключити лабораторну установку до LPT1 порту комп'ютера і джерела живлення. Встановити перемикач режимів у положення "Програмування" (при цьому світиться світлодіод Prog), а всі вимикачі, що підключені до портів, вимкнути.
Згорнути вікно MPLAB і на робочому столі зробити подвійний клік на синій піктограмі програматора "ProPic2". Перевірити у вікні ProPic2, чи вірно задано тип мікроконтролера (має бути PIC16F628). Стандартним шляхом відкрити створений при компіляції hex файл з ім'ям вашого проекту.
Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою. Після завершення програмування переключити перемикач на режим роботи. Увімкнути на мить вимикач RA0. При цьому виконається підрахунок середнього, його запам'ятовування в EEPROM і сигналізація про завершення (горить світлодіод RA2).
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 h'A0' ;старший байт суми
LO EQU h'A2' ;молодший байт суми
FIRST EQU h'12' ;адреса початку масиву даних
COUNT EQU h'70' ;лічильник в області рентгенівської пам'яті
_N EQU h'08' ;кількість даних
org h'2100'+FIRST ;область EEPROM пам'яті
radix dec ;директива встановлення десяткової
;системи за замовчуванням
; далі у директиві DE (запис в EEPROM при програмуванні) ;ввести у десятковій системі 8 чисел
;розрахованих за формулами:
;для і=1...7 х(і)=2і№бригади - №групи,
;для і=8 х(8)=125 - 10№бригади
;замінити наведені далі числа даними свого варіанта
DE 5,11,17,23,29,35,41,105
radix hex ;далі шістнадцяткова система за
; замовчуванням
org h'000' ;Після включення живлення і скидання(РС)=0
nop
goto main ;Безумовний перехід
intrrpt: org h'4' ;переривання не використовуються
retfie
main: movlw 0x07 ;Відключити компаратори і включити
movwf CMCON ;біти порту А у дискретний режим
bsf STATUS, RP0 ;Обрати банк регістрів 1
movlw b'00010001' ;\порт А: біти 4, 0 - на введення
movwf TRISA ;\інші - на виведення
movlw h'FF' ;/Усі біти порту В -
movwf TRISB ;/на введення
bcf STATUS, RP0 ;Обрати банк регістрів 0
clrf PORTA ;очистити порт A (вимкнути світлодіоди)
OPYTTUMB: btfsc PORTA, 4 ;якщо RA4 = 0, пропустити команду
goto PEREVREZ ;інакше перейти на мітку PEREVREZ
btfss PORTA, 0 ;якщо RA0 = 0, пропустити команду
goto OPYTTUMB ;інакше – повторити опитування
bsf STATUS, RP0 ; Обрати банк регістрів 1
clrf LO ;очищення
clrf HI ;накопичувача суми
movlw _N ;кількість елементів масиву -
movwf COUNT ;в лічильник COUNT
movlw FIRST ;адреса першого
movwf EEADR ; доданка - в EEADR
Next: bsf EECON1, RD ;команда читання з EEPROM
movf EEDATA, w ;отримане число – в W
addwf LO, f ;\ Накопичення
clrw
btfsc EEDATA, 7
movlw h'FF'
btfsc STATUS, C ;\
incf HI, f ;\ суми в HI:LO
addwf HI,f
incf EEADR, f ;перейти до наступної комірки EEPROM
decfsz COUNT, f ;якщо додано всі дані, пропустити
goto Next ;інакше – перейти до наступного доданка
rrf HI, f ;/ Зсув суми в HI:LO
rrf LO, f ;/
rrf HI, f ;/ на 3 розряди вправо
rrf LO, f ;/
rrf HI, f ;/
rrf LO, f ;/ (тобто ділення на 8)
btfsc STATUS, C ;округлення
incf LO, f ;до цілого
movf LO, W ;підготовка
movwf EEDATA ;до запису
bsf EECON1, WREN ;
bcf INTCON, GIE ;середнього
movlw h'55' ;
movwf EECON2 ; значення
movlw h'AA' ;
movwf EECON2 ;в EEPROM
bsf EECON1, WR ;команда запису в EEPROM
bsf INTCON, GIE ; глобальний дозвіл переривань
bcf STATUS, RP0 ; Обрати банк регістрів 0
bsf PORTA,2 ;сигналізація запису в EEPROM
Stop: goto Stop ; зациклення
PEREVREZ: bsf STATUS, RP0 ; Обрати банк регістрів 1
movlw FIRST + _N ;/адресу розміщення середнього
movwf EEADR ;/в EEPROM занести в EEADR
bsf EECON1, RD ;команда читання з EEPROM
movf EEDATA, w ;отримане значення – в W
bcf STATUS, RP0 ; Обрати банк регістрів 0
xorwf PORTB, w ;порівняння коду вимикачів з W
btfss STATUS, Z ;якщо вони однакові, пропустити
goto false ;якщо ні - перейти до сигналізації помилки
true: bsf PORTA, 3 ;сигнал про вірний результат
goto Stop ; зациклення
false: bsf PORTA, 1 ; сигнал про помилку
goto Stop ; зациклення
end
Виключити живлення (інформація в EEPROM зберігається) і знову ввімкнути. Встановити вимикачами RB7-RB0 двійковий код розрахованого середнього (RB7 – старший розряд). Увімкнути на мить вимикач RA4. Якщо світиться світлодіод RA3, розрахункове значення збіглося з отриманим мікроконтролером. Якщо горить RA1, зроблено помилку, потрібно перевірити власні розрахунки, текст програми, виправити помилки і повторити дії п.п. 4-11.
ЗМІСТ ЗВІТУ
Звіт має містити: назву та мету лабораторної роботи, скорочений порядок виконання лабораторної роботи, алгоритм і програму з коментарем, перелік імен регістрів спеціального призначення, що використовуються у дослідженій програмі, формат та опис дії кожного виду команд, що вперше зустрічаються у дослідженій програмі мікроконтролера, розрахунки і результати спостережень.
КОНТРОЛЬНІ ЗАПИТАННЯ
Які особливості EEPROM пам'яті?
Які регістри спеціального призначення необхідно використати при обміні даними з EEPROM ?
У чому особливості запису даних в EEPROM ?
Як виконати читання даних з EEPROM ?
Як організуються цикли ?
В якому банку знаходяться регістри, що обслуговують обмін з EEPROM пам'яттю?
Лабораторна робота №25