При необходимости измерения временных интервалов большей длительности можно программным способом подсчитывать число переполнений от таймера, т.е. расширять его разрядность за счет рабочего регистра или ячейки резидентной памяти данных.
3.4. Вывод управляющих сигналов
3.4.1. Формирование статических сигналов
Для управления исполнительным устройством, работающим по принципу включено/выключено, на соответствующей выходной линии порта необходимо сформировать статический сигнал 1 или 0, что реализуется командами установки, сброса или инверсии бита порта (OUT) [1].
В случае параллельного управления группой автономных исполнительных устройств, подключенных к выходному порту, формируется не двоичное управляющее воздействие, а управляющее слово, каждому из разрядов которого ставится в соответствие 1 или 0 в зависимости от того, какие исполнительные устройства должны быть включены, а какие выключены.
Управляющие слова удобно формировать командами логических операций над содержимым порта [1]. Командой XRL осуществляется инверсия тех битов, которые в маске заданы единицей. Команда ORL используется для установки битов управляющего слова. Команда ANL используется для сброса битов.
Для формирования сложных последовательностей управляющих слов обычно используют табличный способ, при котором все возможные слова упакованы в таблицу, а прикладная программа вычисляет адрес требуемого слова, выбирает его из таблицы и передаёт в порт.
3.4.2. Формирование импульсных сигналов
Импульс. Его можно получить последовательной выдачей сигналов, включая и отключая (PULS), с промежуточным вызовом подпрограммы временной задержки:
Длительность импульса определяется временной задержкой, реализуемой подпрограммой DELAY.
Генерация меандра. В этом случае можно воспользоваться подпрограммой задержки, равной половине периода сигнала:
Бесконечный периодический сигнал формируется в линии 3 порта 1. На остальных линиях сигналы остаются неизменными.
Формирование апериодических управляющих сигналов. Последователь-
ность импульсных сигналов с произвольной длительностью и скважностью может быть получена аналогичным образом, то есть путём чередования процедур выдачи значения 0 или 1 и вызова подпрограмм временных задержек заданных длительностей.
3.5. Работа с последовательным портом
Последовательный порт микроконтроллера может использоваться в виде регистра сдвига для расширения ввода-вывода или в качестве UART с фиксированной или переменной скоростью последовательного обмена и возможностью дуплексного включения [1]. То есть через порт можно передавать и принимать данные одновременно. Порт может принимать очередной байт даже в том случае, если уже принятый до этого байт не был прочитан из регистра приёмника. Однако если до окончания приёма находящийся в регистре приёмника байт не будет прочитан, принятый байт теряется. Программный доступ к регистрам приёмника и передатчика осуществляется обращением к регистру специальных функций SBUF.
Ниже приведён пример фрагмента программы (UART), принимающей из последовательного порта байт и отправляющей его назад в последовательный порт, настроенный на 8-битный режим со скоростью передачи 2400 бод при тактовой частоте микроконтроллера 12 МГц.
3.6. Средства ProView для отладки взаимодействия с объектами
управления
Интегрированная среда ProView фирмы Franklin Software Inc. имеет несколько окон, предназначенных для отладки взаимодействия микроконтроллера с объектами управления [3-4]. Окно Main Registers (Рис. 1), где доступны регистр масок прерывания IE, блокировка прерываний EA, порты P0 – P3, регистр управления/статуса таймера TCON, регистры таймеров THL0 и THL1, а также регистр управления мощностью PCON.
Кроме того, через пункт Hardware меню View (Рис. 2) можно открыть окна контроллера прерываний, таймеров, параллельных портов и последовательного порта.
В информационном окне контроллера прерываний (Рис. 3) указывается статус и приоритет всех источников прерывания.
В строке состояния (Рис. 4) при выполнении программы в пошаговом режиме или в режиме анимации показывается текущее реальное время.
В окнах таймеров (Рис. 5) доступно содержимое 16-битного тайме-
ра/счётчика THLx, регистра режима работы таймера/счётчика TMOD, регистра управления/статуса таймера TCON, флаг переполнения таймера TFx, бит управления таймера TRx. Здесь же указывается состояние и режим работы таймера.
В окнах параллельных портов (Рис. 6) доступно содержимое регистра-
защёлки LATCH и отдельных линий порта. Состояние линий порта может быть изменено с помощью мыши.
В окне последовательного порта UART (Рис. 7) отображается содержимое буфера передатчика Buffer, режим работы и скорость. В буфер приёмника Input может быть введена последовательность байтов. Информация может быть представлена в символьном виде ASCII или в шестнадцатеричной форме HEX. Буфер очищается с помощью кнопки Reset Buffer.
При отладке программы часто возникает необходимость приостановить ее выполнение на определенной команде.
Breakpoints – это маркеры в вашей программе, которые заставляют отладчик остановить ее выполнение в “реальном масштабе времени”. Вы можете установить маркеры на любых командах программы (Рис. 8). Когда отладчик WinSim51 доходит до маркера, выполнение программы будет приостановлено, и управление возвращено Вам. В этом случае Вы можете сами принять решение о дальнейшем продолжении работы программы. Breakpoints устанавливаются через пункт Toggle breakpoint из меню Debug (Рис. 9) или из контекстного меню, которое вызывается нажатием правой кнопки мыши в окне с исходным текстом или кодом программы
(Рис. 10).
4. ЛАБОРАТОРНЫЕ ЗАДАНИЯ
С помощью пакета ProView выполните отладку подготовленных при выпол-
нении домашнего задания программ:
1. Подпрограмма обработки внешнего прерывания уровня 0 (SUBIN0).
2. Ожидание импульсного сигнала (WAITIMP).
3. Устранение дребезга контактов на основе счетчика (DBNC).
4. Подсчёт числа импульсов между двумя событиями (CNTEVNT).
5. Подсчёт числа импульсов за заданный промежуток времени на основе двух
таймеров/счётчиков (CNTTIME).
6. Ожидание заданного кода (WTCODE).
7. Опрос группы двоичных датчиков с передачей управления прикладным программам (GOCODE).
8. Опрос группы импульсных датчиков (KBRD).
9. Формирование временной задержки длительностью 100 мкс программным
способом (DELAY).
10. Формирование временной задержки длительностью 1 с программным способом (DLY1).
11. Формирование временной задержки с помощью таймера (TIMER).
12. Измерение временных интервалов программным способом (MSCONT).
13. Измерение временных интервалов на основе таймера (MSTIMER).
14. Формирование статических сигналов (OUT).
15. Генерация бесконечной последовательности импульсов скважностью 2.
16. Программа работы с последовательным портом (UART).
Используйте оптимизированные варианты программ и их отладочные дополнения.
Для отладки каждой из программ:
• создайте файл проекта задачи, создайте файл исходного текста программы
на языке ассемблера, и добавьте его к проекту;
• выполните трансляцию исходного текста и исправьте возможные синтакси-
ческие ошибки;
• запустите отладчик;
• в случае необходимости задайте начальные значения регистров и памяти;
• осуществите пробный пуск программы на контрольном примере в соответ-
ствии с разработанной методикой отладки;
• убедитесь в полной работоспособности программы;
• после устранения всех ошибок и отладки выполните генерацию листинга
программы, который включите в отчёт о выполнении работы.
5. СОДЕРЖАНИЕ ОТЧЁТА
Отчёт о лабораторной работе должен содержать:
• титульный лист;
• цель и задачи работы;
• краткое, но точное описание методики отладки каждой из программ;
• листинги с исходными текстами и объектным кодом отлаженных программ с дополнениями, обеспечивающими тестирование и отладку;
• перечень выявленных в примерах ошибок;
• выводы по работе.
БИБЛИОГРАФИЧЕСКИЙ СРИСОК
1. Сташин В.В., Урусов А.В., Мологонцева О.Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. М.: Энергоатомиздат, 1990. - 224с.
2. Микропроцессорные системы: Учебное пособие для вузов / Е. К. Александров и др.; Под общ. ред. Д. В. Пузанкова.- СПб.: Политехника, 2002.- 935с.
3. Бродин В.Б., Шагурин И.И. Микроконтроллеры. Архитектура, программирование, интерфейс. – М.: Издательство ЭКОМ, 1999. – 400с.