Добавил:
Макакаревич шатав Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

мпт 2 .docx

.pdf
Скачиваний:
0
Добавлен:
14.07.2025
Размер:
161.86 Кб
Скачать

Лабораторна робота № 2 Дії з портами мікроконтролера, логічні операції та обробка окремих бітів

Мета роботи: засвоїти систему команд мікроконтролерів PIC16xxx та дії із зовнішніми портами. ТЕОРЕТИЧНІ ВІДОМОСТІ

Однокристальні мікроконтролери сімейства PIC16ххх, зокрема PIC16F877, мають систему з 35 команд, кожна з яких має 14 бітів. Вони дозволяють складати ефективні програми. Коди команд при програмуванні заносяться у пам'ять програм. Вона відділена від однобайтових комірок оперативної пам'яті, які реалізовані регістрами (або інакше – файлами).

Розрізняють регістри спеціального і загального призначення. Усі регістри включно з портами введення-виведення розташовані у загальному адресному полі. Тобто ті команди, що звертаються до регістрів загального призначення, можуть так само звертатись до регістрів спеціального призначення або до зовнішніх портів. Регістри спеціального призначення та зовнішні порти мають сталі імена, які задані у файлі стандартних імен P16F877.INC. Наприклад, зовнішні порти А та В іменуються PORTA та PORTB, вказівник для непрямої адресації – FSR, регістр стану – STATUS, тощо.

Регістрам загального призначення розробник програми надає свої імена за допомогою директиви EQU (див. програму). Вона дозволяє іменувати константи та адреси, що будуть використані у програмі.

Константи можна подавати у двійковій, вісімковій, десятковій або шістнадцятковій системах

числення. Наприклад:

 

b'01110101'

– двійкове число;

o'174'

– вісімкове число;

d'186' або .186 – десяткове число;

h'E8' або 0xE8 – шістнадцяткове число. Лабораторна установка складається з таких частин:

1.Комп'ютер з середовищем розробки MPLAB v8.92.

2.Плата мікроконтролера, до якої приєднано елементарні пристрої введення – тумблери, з'єднані з портом B, пристрої виведення – світлодіоди, з'єднані з портом D.

3.Програматор Pickit 2 або Pickit 3.

4.Блок живлення плати розташовано в щиті.

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

1.Увійти у середовище MPLAB, обравши на робочому столі червоно-синю піктограму MPLAB IDE

.

2.Створити новий проєкт, обравши з меню Project – Project Wizard – Далее. У вікні, що з'являється, вибрати мікросхему (Device) PIC16F877 – Далее Далее. У пункті Create New Project File натиснути Browse – обрати папку D:\1Work і ввести ім'я проєкту, наприклад, 236.mcp, де 1 – номер лабораторної роботи, 3 – номер групи, 6 – номер студента за списком. Натиснути Далее Далее Готово.

3.Створити текстовий файл з тим же іменем і розширенням .asm. Для цього обрати мишкою меню File – Add New File to Project. Після появи з цим ім’ям задати вказане ім'я файлу (наприклад, 326.asm) і натиснути Save - Зберегти. У вікні 326.mcw з’явиться ім’я створеного файлу.

4.У вікні з ім’ям асемблерного файлу вести текст програми на асемблері сімейства контролерів РІС16 фірми Microchip.

5.При цьому рекомендується мітку, якщо вона є, завжди ставити з першої позиції рядка. Далі після табуляції ввести мнемоніку команди і знову після табуляції – операнди. Якщо операндів два, між ними ставиться кома. Слідом за командою в рядку можна розташувати коментар, якому має передувати символ "крапка з комою".

Текст програми:

;ЛАБОРАТОРНА РОБОТА 2 ; Дії з портами мікроконтролера, логічні операції

;та обробка окремих бітів.

LIST P=16F877 ;тип мікропроцесора

#INCLUDE "P16F877.INC" ;підключення файла

;стандартних імен

1

;директиву __CONFIG набрати в одному рядку, ;закінчуючи словом _LVP_OFF

__CONFIG _WDT_OFF & _BODEN_OFF &_XT_OSC & _LVP_OFF & _DEBUG_ON

COD

EQU

16

;тут замість "КОД" введіть дві

 

 

; останні цифри з імені проекту

org 0x000

 

;програмний лічильник (РС) = 0

nop

 

 

 

nop

 

 

 

clrf

PORTD

 

 

bsf

STATUS,RP0 ;банк регістрів 1

;111111111111111111111111111111111111111

movlw b'11101011'

;PORTA - режим введення,

movwf TRISA ;

крім RA4, RA2

clrf

TRISD ;PORTD - на виведення

movlw b'11111111'

;PORTB -

movwf TRISB

; режим введення,

movwf TRISC ;PORTC - на введення

movlw b'10000110' ;

 

 

movwf ADCON1

;порт А дискретний

bcf

STATUS,RP0 ;банк регістрів 0

;000000000000000000000000000000000000000

Main: movlw COD

 

;вивести COD у зачепку

movwf PORTD ;порту D

 

 

T0:

btfss PORTB,0

;якщо вимикач RB0 ввімкнутий,

;пропустити наступну команду

goto

 

T0

 

;а якщо ні, – виконати перехід

movlw b'10011000'

;

 

iorwf

PORTD,f

 

;логічне "АБО" з W та портом D

T1:

btfss PORTB,1

 

;/повторювати ці дві команди,

goto

 

T1

 

;/ поки вимкнений вимикач RB1

movlw b'11100111'

 

 

andwf

PORTD,f

 

; логічне "ТА" з W та портом D

T2:

btfss

PORTB,2

 

;\ повторювати ці дві команди,

goto

 

T2

 

;\ поки вимкнений вимикач RB2

movlw b'11100010'

 

 

xorwf

PORTD,f

 

;логічне "ВИКЛЮЧНЕ АБО" з W та

;портом D

 

 

 

 

T3:

btfss

 

PORTB,3

;далі написати коментар самостійно

goto

 

T3

 

;

 

bsf

 

PORTD,6

;

 

bcf

 

PORTD,1

;

 

T4:

btfss PORTB,4

;

 

goto

 

T4

 

;

 

movlw b'00101010';

 

 

movwf PORTD ;

 

 

 

T5:

btfsc PORTB,0

;

 

goto

 

T5

 

;

 

decf

 

PORTD,f

;

 

goto

 

T0

 

;

 

end

 

 

 

 

 

У програмі застосовуються такі види команд:

Команда

Коментар

movlw

k

;переслати число (літерал) у робочий регістр W

movwf

f

; переслати вміст робочого регістра W у регістр f

2

bcf

f, b

;занести 0 у біт номер b регістра f (b 0, 1… 7)

bsf

f, b

; занести 1 у біт номер b регістра f (b 0, 1… 7)

goto

k

;безумовний перехід на адресу k

clrf

f

;очистити регістр f

btfss

f, b

;якщо у регістрі f вказаний біт b = 1, пропустити наступну команду

 

 

 

btfsc

f, b

;якщо у регістрі f вказаний біт b = 0, пропустити наступну команду

 

 

 

iorwf

f,d

;побітне "ВКЛЮЧНЕ АБО" з регістрами W i f

 

 

 

andwf

f,d

; побітне "І" з регістрами W i f

 

 

 

xorwf

f,d

; побітне "ВИКЛЮЧНЕ АБО" з регістрами W i f

 

 

 

6.Записати програму на диск (File – Save).

7.Виконати компіляцію програми Project – Make (F10 або відповідна піктограма) – Absolute. Після цього на екрані з'являється вікно результатів компіляції (Output).

8.Якщо з'явились повідомлення про помилки (error), слід, ознайомившись з поясненням змісту помилки, двічі без паузи натиснути мишкою на цей рядок вікна Output. MPLAB зробить активним той рядок у тексті програми, де, ймовірно, зроблено помилку. Треба її виправити і далі так само й інші помилки. Потім повернутись до п. 7, поки не буде видано повідомлення "BUILD SUCCEEDED" ("Компіляція успішна"). При цьому створюється файл з тим же ім'ям і розширенням .hex. Закрити вікно Output.

9.Подумки аналізуючи програму, слід послідовно записати в табл. 2.1 стан світлодіодів RD7…RD0 після кожної заданої зміни стану вимикачів.

10.Обрати режим симуляції: Debugger – Select Tool – MPLAB SYM.

11.Створити вікно спостереження (View – Watch) Занести до нього ім’я регістра PORTB.

12.Відкрити вікно імітації зовнішніх пристроїв (меню: Debugger – Stimulus-New Workbook).

Узакладці Asynch у колонці Pin/ SFR додати імена зовнішніх пінів порту PORTB: RB0, RB1, …, RB4. Для кожного з них у стовпчику Action задати початковий стан Set Low, натискаючи при цьому у стовпчику Fire на відповідний символ «>» – виконати.

13.Виконати проєкт: F9 і зупинити F5. Звірити стан бітів порту D з передбаченими.

14.Послідовно задавати у вікні Stimulus стан пінів порту B згідно таблиці 2.1, підтверджуючи кожну зміну натисканням «>». Після кожної зміни виконати (F9) і зупиняти (F5) програму.

15.Звіряти стан порту D з передбаченими у п. 9 і у випадку неспівпадіння з'ясуйте, в чому причина невідповідності таблиці та стану світлодіодів.

2.1.Аналіз роботи програми

 

 

Вимикач

 

 

 

 

Світлодіод

 

 

 

Мітка

RB4

RB3

 

RB2

RB1

RB0

RD7

RD6

RD5

RD4

RD3

RD2

RD1

RD0

 

 

0

0

 

0

0

0

0

0

0

0

0

0

0

0

Т0

0

0

 

0

0

1

0

0

0

0

0

0

0

1

Т1

0

0

 

0

1

1

0

0

0

0

0

0

1

1

Т2

0

0

 

1

0

1

0

0

0

0

0

1

1

1

Т3

0

1

 

0

0

1

0

0

0

0

1

1

1

1

Т4

1

0

 

0

0

1

0

0

0

1

1

1

1

1

Т5

0

0

 

0

0

0

0

0

0

0

1

1

1

0

Т0

16.Приєднати програматор PICkit2 або PICkit3 до входу USB комп'ютера (до плати мікроконтролера він теж має бути приєднаний). Увімкнути живлення демоплати. У середовищі MPLAB обрати Debugger–Select Tool–PICkit 2 (або PICkit 3 – залежно від розташованого на робочому місці програматора). Якщо з'являється віконце з інформацією про небезпеку, що може статись, коли мікроконтролер розрахований на живлення 3,3 В, обрати OK. Прошити мікроконтролер,

натиснувши піктограму або в меню Debugger–Program. З комп'ютера виконати старт програми мікроконтролера або F9. Згідно з таблицею 2.1 встановлювати стан вимикачів, що

3

з'єднані з PORTB, та визначати стан світлодіодів RD7…RD0, які керовані програмою через PORTD. Звірити дані з таблицею 2.1. Якщо результати не збігаються, з'ясувати причину.

ЗМІСТ ЗВІТУ Звіт має містити: назву та мету лабораторної роботи, скорочений порядок виконання

лабораторної роботи, текст програми з коментарем, таблицю станів вимикачів та світлодіодів після їх кожної зміни, висновки, що порівнюють результати дослідів, перелік імен регістрів спеціального призначення, що використовуються у дослідженій програмі, формат та опис дії кожного виду команд, що вперше зустрічаються у дослідженій програмі мікроконтролера, відповіді на контрольні запитання.

КОНТРОЛЬНІ ЗАПИТАННЯ

1.З яких основних блоків складається лабораторна установка?

2.Як здійснити програмування мікроконтролера?

3.Як виконуються логічні команди iorwf f,d, andwf f,d, xorwf f,d ?

4.Які команди дозволяють здійснити керування окремим бітом регістра чи зовнішнього порту?

5.Як у програмі передбачити опитування стану вхідного біту зовнішнього порту?

6.Для чого призначений файл P16F877.INC?

4

Соседние файлы в предмете Основи електроніки та Мікропроцесорної техніки