Порядок проведения лабораторной работы. 1. Создайте новый проект и, пользуясь рассмотренными выше примерами, напишите и введите программу

1. Создайте новый проект и, пользуясь рассмотренными выше примерами, напишите и введите программу.

2. Откомпилируйте проект и перейдите к режиму симуляции.

3. Откройте окна регистров специальных функций и ОЗУ данных.

5. Выполняя в пошаговом режиме (F7) проанализируйте содержимое регистров STATUS, FSR и содержимое порта PORTB.

6. Задавая воздействие с помощью стимулов, проведите имитацию нажатия кнопки на <RB3>.

7. Убедитесь в изменении хода выполнения программы, после имитации нажатия кнопки.

 

Примечание:

1. При переходе, в пошаговом режиме, к команде вызова подпрограммы нажмите клавишу (F8), которая позволит выполнить подпрограмму за один шаг. В противном случае, если вы уже вошли в тело подпрограммы, придётся нажать клавишу (F7) более 20000 раз.

2. В теле подпрограммы DELAY_SCAN задайте значения TMP0 и TMP1 например как 02h, что позволит пронаблюдать работу подпрограммы задержки за много меньшее число тактов.

3. Для симуляции подачи сигналов на входы микроконтроллера в MPLAB предусмотрена возможность задавать асинхронные и синхронные воздействия на выводы микроконтроллера (стимулы). Для работы с асинхронными стимулами предназначено окно асинхронных стимулов, изображенное на рисунке 3.18. Открыть его можно выбором пункта Asynchronous Stimulus подменю Simulator Stimulus меню Debug. Окно состоит из ряда кнопок, которого можно запрограммировать для управления любыми выводами микроконтроллера. Для присвоения кнопке вывода микроконтроллера, нажмите правую клавишу мыши, выберите пункт Assign Pin, в появившемся окне выберете нужный вам вывод контроллера, дважды нажмите левую клавишу мыши. Например, для присвоения кнопке четвёртого вывода порта В, необходимо дважды нажать по пункту RB3. С помощью этих кнопок допустимо менять состояние выводов посредством опций (появляющихся при нажатии правой клавиши мыши):

Pulse – подать импульс длительностью в один цикл команды;

Low – установить низкий уровень сигнала;

High – установить высокий уровень;

Toggle – переключить уровень.

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

 

 

 

Рисунок 3.18 Окно асинхронных стимулов

 

Для отображения времени исполнения программы и количества циклов предназначено окно секундомера (пункт Stopwatch… меню Windows). Удобно использовать данное окно при пошаговом выполнении программы. В поле «Cycles» указывается число выполненных циклов, в поле «Time» – время выполнения, в поле «Processor Frequency» – тактовая частота микроконтроллера. Кнопка «Zero» предназначена для сброса таймера секундомера, опция «Clear On Reset» предназначена для разрешения сброса таймера при сбросе микроконтроллера.

 

 

Рисунок 3.19 Окно секундомера

 

4. Пример программы приведён: LAB-Элат \ Lab_Digital \ Mps_2\ Примеры \ scan.asm.

 

3.6.5 Контрольные вопросы:

1. Определите, на ячейку с каким адресом осуществится переход при выполнении команды goto $-12 и goto $-.12 если org 0x40.

2. Какие из рассмотренных команд передачи управления относятся к командам перехода по условию?

3. Какие команды перехода воздействуют на флаги?


3.7 Лабораторная работа № 7 «МОДУЛЬ ТАЙМЕРА TMR0»

Цель работы

Изучить особенности использования таймера для формирования программно-независимых временных задержек и подсчёта внешних событий.

Краткие сведения

Для формирования временных задержек чаще всего используется режим таймера, при котором счётчик увеличивает своё состояние с каждым машинным циклом команды (Fosc/4).

Если коэффициента пересчёта 8-разрядного счётчика таймера не хватает, то возможно использование предделителя.

Предделитель представляет собой такой же 8-разрядный счётчик, но включенный перед счётчиком таймера.

Выбор режима таймера, наличие предделителя и его коэффициент деления определяется регистром OPTION_REG (рисунок3.20).

Когда бит T0CS сброшен в '0' (OPTION_REG<5>), TMR0 работает от внутреннего сигнала.

Предделитель может быть включен или выключен в зависимости от состояния бита PSA (OPTION_REG<3>).