Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
knigaEMTmikroprotsesori.doc
Скачиваний:
16
Добавлен:
10.03.2016
Размер:
1.33 Mб
Скачать

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

  1. Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою.

  2. Після програмування, яке може тривати декілька секунд, відтиснути перемикач на лабораторній установці, щоб включити режим роботи. При цьому виключиться світлодіод "Prog" і зразу почне виконуватися програма, занесена у мікроконтролер.

  3. З аналізу програми можна зрозуміти, що після ініціалізації контролер зациклюється на опитування стану вимикача RA0. Запишіть у таблицю стан світлодіодів на цьому етапі у двійковій системі. Далі ввімкніть вимикач RA0, запишіть стан світлодіодів. Увімкніть вимикач RA1 і знову запишіть стан світлодіодів і т.д. згідно з табл. 2.1.

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

ЗМІСТ ЗВІТУ

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

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

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

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

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

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

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

Лабораторна робота № 22 Створення програмної затримки часу за допомогою циклів

Мета роботи: засвоїти метод створення затримок часу з використанням вкладених циклів

Теоретичні відомості

Алгоритми управління і контролю, як правило, потребують створення затримок часу. Для цього при програмуванні мікроконтролерів використовують два способи:

  1. програмну затримку за рахунок багатократного повторення команд з використанням вкладених циклів;

  2. використання таймерів, вбудованих у мікросхему контролера.

При програмній затримці команди у вкладеному (внутрішньому) циклі повторюються стільки разів, скільки передбачено в його лічильнику. За цей час лічильник зовнішнього циклу змінюється тільки на одиницю. Тому для оцінки загального часу затримки треба множити час виконання внутрішнього циклу на число, занесене у лічильник зовнішнього циклу. У пропонованій нижче програмі для затримки часу використовується три цикли, вкладених один в інший.

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

  1. У середовищі MPLAB створити у папці D:\ 1Work новий проект з іменем 22ГБ (Г – номер групи, Б – номер бригади), обравши у

меню Project-New Project.

  1. У вікні Edit Project додати новий файл на асемблері 22ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням .asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням .asm (File – New), записавши його у папку 1Work (File - Save As …).

  2. Зарисувати алгоритм (рис. 22.1) і ввести текст програми на асемблері.

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

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

  2. Якщо з'явилось повідомлення про помилки (error), слід, ознайомившись з поясненням змісту помилки, виконати мишкою подвійний клік на цьому рядку вікна Build Results. MPLAB зробить активним той рядок у тексті програми, де, ймовірно, зроблено помилку. Слід виправити її і далі так само й інші помилки. Потім повернутись до п. 5, поки не буде видано повідомлення "Build completed successfully" (компіляцію завершено успішно). При цьому створюється файл з тим же ім'ям і розширенням .hex.

  3. Створити вікно спостереження (Window – Watch Windows – New Watch Window …), включивши до нього регістри PORTB, HI, MID, LO.

  4. Встановити у програмі точку зупинки на команді 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

  1. Зробити скидання (F6) і пуск програми (F9). Виконання припиниться на команді call SEC. Далі буде здійснено виклик підпрограми затримки часу. Щоб визначити цей час, слід вивести на екран вікно віртуального секундоміра (WindowStopwatch) і обнулити його (Zero). Записати дані в табл. 22.1. У подальшому виконувати програму до чергової точки зупинки (F9) і заповнювати графи таблиці. Треба пам'ятати, що симулятор комп'ютера виконує програму приблизно у 300 разів повільніше, ніж реальний мікроконтролер.

  2. Наближено розрахувати час виконання підпрограми затримки. Наприклад, для варіанта 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 с.

  1. Підключити лабораторну установку до LPT-порту комп'ютера і до живлення. Встановити перемикач у положення "Програмування" (при цьому світиться світлодіод Prog), а вимикачі, що підключені до портів, усі вимкнути.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]