- •3. Методические указания к лабораторным работам
- •3.1 Лабораторная работа № 1 «интегрированная среда разработки программ для микроконотроллеров piCmicro mplab ide 5.61»
- •3.1.1 Цель работы
- •3.1.2 Содержание лабораторной работы
- •3.1.3 Порядок проведения лабораторной работы
- •Графическое меню проектирования
- •3.1.4 Контрольные вопросы
- •3.2 Лабораторная работа № 2 «абсолютная адресация в командах пересылки данных»
- •3.2.1 Цель работы
- •3.2.2 Краткие сведения из теории
- •3.2.2.1 Регистры port а и trisa
- •3.2.2.2 Регистры portb и trisb
- •3.2.3 Содержание лабораторной работы
- •3.2.4 Порядок проведения лабораторной работы
- •3.2.5 Контрольные вопросы
- •3.3 Лабораторная работа № 3 «косвенная адресация в командах пересылки данных»
- •3.3.1 Цель работы
- •3.3.2 Краткие сведения
- •3.3.3 Содержание лабораторной работы
- •3.3.4 Порядок проведения лабораторной работы
- •3.3.5 Контрольные вопросы
- •3.4 Лабораторная работа № 4 «изучение команд арифметических операций»
- •3.4.1 Цель работы
- •3.4.2 Краткие сведения
- •3.4.3 Содержание лабораторной работы
- •3.4.4 Порядок проведения лабораторной работы
- •3.4.5 Контрольные вопросы
- •3.5 Лабораторная работа № 5 «изучение команд логической обработки и маскирования данных»
- •3.5.1 Цель работы
- •3.5.2 Краткие сведения
- •3.5.3 Содержание лабораторной работы
- •3.5.4 Порядок проведения лабораторной работы
- •3.5.5 Контрольные вопросы:
- •3.6 Лабораторная работа № 6 «команды передачи управления»
- •3.6.1 Цель работы
- •3.6.2 Краткие сведения
- •3.6.3 Содержание лабораторной работы
- •3.6.4 Порядок проведения лабораторной работы
- •3.6.5 Контрольные вопросы:
- •3.7 Лабораторная работа № 7 «модуль таймера tmr0»
- •3.7.1 Цель работы
- •3.7.2 Краткие сведения
- •3.7.3 Содержание лабораторной работы
- •3.7.4 Порядок проведения лабораторной работы
- •3.7.5 Контрольные вопросы:
- •3.8 Лабораторная работа № 8 «изучение способов обработки прерываний»
- •3.8.1 Цель работы
- •3.8.2 Краткие сведения
- •3.8.2.1 Прерывание по переполнению tmr0
- •3.8.2.2 Внешнее прерывание с входа rb0/int
- •3.8.2.3 Прерывание по изменению уровня сигнала на входах rb7:rb4
- •3.8.3 Содержание лабораторной работы
- •3.8.4 Порядок проведения лабораторной работы
- •3.8.5 Контрольные вопросы:
- •4. Список рекомендуемой литературы
3.6.5 Контрольные вопросы:
1. Определите, на ячейку с каким адресом осуществится переход при выполнении команды goto $-12 и goto $-.12 если org 0x40.
2. Какие из рассмотренных команд передачи управления относятся к командам перехода по условию?
3. Какие команды перехода воздействуют на флаги?
3.7 Лабораторная работа № 7 «модуль таймера tmr0»
3.7.1 Цель работы
Изучить особенности использования таймера для формирования программно-независимых временных задержек и подсчёта внешних событий.
3.7.2 Краткие сведения
Для формирования временных задержек чаще всего используется режим таймера, при котором счётчик увеличивает своё состояние с каждым машинным циклом команды (Fosc/4).
Если коэффициента пересчёта 8-разрядного счётчика таймера не хватает, то возможно использование предделителя.
Предделитель представляет собой такой же 8-разрядный счётчик, но включенный перед счётчиком таймера.
Выбор режима таймера, наличие предделителя и его коэффициент деления определяется регистром OPTION_REG (рисунок 3.20).
Когда бит T0CS сброшен в '0' (OPTION_REG<5>), TMR0 работает от внутреннего сигнала.
Предделитель может быть включен или выключен в зависимости от состояния бита PSA (OPTION_REG<3>).
Регистр OPTION_REG (адрес 81 h или 181 h)
R/W–1 |
R/W–1 |
R/W–1 |
R/W–1 |
R/W–1 |
R/W–1 |
R/W–1 |
R/W–1 |
–RBPU |
INTEDG |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 |
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит З |
Бит 2 |
Бит 1 |
Бит 0 |
Рисунок 3.20
Выбор коэффициент деления определяется значением битов OPTION_REG<2>, OPTION_REG<1>, OPTION_REG<0> (таблица 3.12).
Таблица 3.12
PS2: PS1: PS0: |
Коэф. делен. |
Значение |
|
000 |
1:2 |
001 |
1:4 |
010 |
1:8 |
011 |
1:16 |
100 |
1:32 |
101 |
1:64 |
110 |
1:128 |
111 |
1:256 |
Когда бит T0CS установлен в '1' (OPTION_REG<5>), TMR0 работает от внешнего источника тактового сигнала с входа RA4/T0CKI. Активный фронт внешнего тактового сигнала выбирается битом T0SE в регистре OPTION_REG<4> (T0SE = 0 – активным является передний фронт сигнала).
Более подробное описание работы таймера-0 приведено в разделе 1.10.
Рассмотрим формирование временной задержки в 20ms, оформив её в виде подпрограммы DELAY_SCAN, как в Лабораторной работе № 6.
DELAY_SCAN:
bcf STATUS,RP0 ; Банк 0
bcf STATUS,RP1 ;
bcf INTCON,T0IF ; снять флаг прерывания
movlw 64h ; загрузить TMR0 = 64h(100)
movf TMR0 ;
bsf STATUS,RP0 ; Банк 1
bcf STATUS,RP1 ;
movlw b’00000110’ ; TMR0 от внутреннего сигнала
movf OPTION_REG ; предделитель 1:128
bcf STATUS,RP0 ; Банк 0
bcf STATUS,RP1 ;
bsf INTCON,T0IE ; запуск TMR0
btfsz INTCON,T0IF ; ожидание флага переполнения
goto $-1 ;
return
При Fтакт = 4 МГц частота машинного цикла равна 1 МГц, что составляет Tтакт = 1 μs.
Общее время задержки, составляет:
-
Команда
Назначение
Время выполнения
call DELAY_SCAN
Вызов собственно п/п
2 μs
bcf STATUS,RP0 ..
!
… bsf INTCON,T0IE
Первые 12 команд
12*(1 μs)
btfsz INTCON,T0IF
Проверка условия (1 μs)
Здесь считает таймер
goto $-1
Переход если ложно (2 μs)
nop
Когда истинно то goto пропускается
1 μs
return
Собственно выход из п/п
2 μs
Итого: 20ms (20000μs - 17 μs) = Tтакт *128*N. Время цикла таймера после предделителя составляет 128 μs.
N = 156, что возможно при загрузке в TMR0 значения: 256-100(64h).
