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

23.2. Алгоритм управління світлодіодами з затримкою від таймера tmr0

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

;******************************************************

;ЛАБОРАТОРНА РОБОТА 23

;Затримка часу з використанням переривання від таймера TMR0

;******************************************************

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

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

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

;директиву __CONFIG набрати в одному рядку,

;закінчуючи словом _LVP_OFF

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _LVP_OFF

COUNT EQU 0x24

Br EQU БР ;тут замість БР введіть номер бригади

org 0x0 ; (РС) = 0

goto main ;Безумовний перехід

org h'4'

inttmr: movlw .10*Br ;початок п/п переривання

movwf TMR0 ; 10*Br --> TMR0

bcf INTCON,T0IF ;0 --> T0IF

decfsz COUNT,f ;(COUNT)-1 і пропустити, якщо = 0

vert: retfie ;вертання з п/п переривань (GIE = 0)

movlw .3

movwf COUNT ;відновити лічильник COUNT

rrf PORTB,f ;зсув вправо порта В

switch: retfie ;вертання з п/п переривань (GIE = 0)

main: ;ініціалізація:

movlw 0x07 ;Відключити компаратори і включити

movwf CMCON ;біти порту А у дискретний режим

movlw b'10000000'

movwf PORTB ;вивести байт у зачепку порту В

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

clrf TRISB ;Усі біти порту В - на виведення

movlw 0xFF ;Усі біти порту A

movwf TRISA ; - на введення

movlw b'00000111' ;включити до таймера TMR0

;переддільник та встановити

movwf OPTION_REG ; його коефіцієнт ділення Кп = 256

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

movlw .10*Br

movwf TMR0 ; 10*Br --> TMR0

movlw .3

movwf COUNT ;3 --> COUNT

pochat: bsf INTCON,T0IE ;дозвіл переривання таймера 0

bsf INTCON,GIE ;глобальний дозвіл переривань

bcf STATUS,C ; 0 --> C

loop: goto loop ;зациклення

end

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

Команда

Коментар

movlw k

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

movwf f

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

bcf f, b

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

bsf f, b

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

rrf f, d

;зсув вмісту регістра f вліво

decfsz f,d

;зменшити на 1 вміст регістра f і пропустити наступну ;команду, якщо отримано 0

retfie

;вертання з підпрограми, при цьому стає: GIE = 1

clrf f

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

goto k

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

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

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

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

  4. Встановити точки зупинки на командах з мітками inttmr, vert, switch, pochat. Для цього встановити курсор на потрібний рядок, натиснути праву клавішу мишки та обрати Break Point(s) (команда виділяється кольором).

  5. Здійснити симуляцію виконання програми до мітки pochat, натиснувши кнопку зеленого світлофора або клавішу F9.

  6. Визначити точний час між викликами підпрограми переривання і переключеннями світлодіодів (тобто зміною стану порту В). Для цього створити вікно секундоміра: Window – Stopwatch. Скинути його лічильник (клавіша Zero). Записати мітку зупинки, значення регістрів з вікна Watch і секундоміра у табл. 23.3. Далі продовжувати виконання програми (F9) і після кожної зупинки заповнювати табл. 23.3. Визначити за даними таблиці час між викликами підпрограми переривання ТTMR0 та між моментами переключення світлодіодів Трс.

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

  8. Згорнути вікно MPLAB і на робочому столі зробити подвійний клік на синій піктограмі програматора "ProPic2". Обрати тип мікроконтролера PIC16F628 (у верхній правій частині вікна ProPic2 виділено синім кольором). Стандартним шляхом відкрити створений вами файл з розширенням .hex.

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

  10. Після завершення програмування переключити перемикач на режим роботи. Візуально визначити час між моментами переключення світлодіодів Твіз і обчислити відносну похибку:

.

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