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

5 Разработка алгоритма работы и управляющей программы генератора

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

Пример.

Согласно заданию программируемый генератор формирует дискретные сигналы, соответствующие последовательности символов *ПРИМЕР*. Предусмотрено несколько режимов работы устройства, сопровождающихся соответствующей индикацией. Блок-схема алгоритма работы генератора приведена на рисунке 5.1.

Рисунок 5.1 - Блок-схема алгоритма работы генератора сигналов

Микроконтроллер выполняет управляющую программу, размещенную во внешней памяти программ. Так как область младших адресов памяти программ отведена под обработку прерываний, основная программа размещается по адресу 40h.

Пример блок-схемы алгоритма работы управляющей программы генератора приведен на рисунке 5.2.

При получении сигнала «Reset» генератор переходит в режим «Сброс». Производится инициализация микроконтроллера: загрузка начальных значений регистров-указателей и счетчиков, настройка системы прерываний и таймеров. Индикация режима производится светодиодами, подключенными к линиям Р1.2 и Р1.3, поочередно зажигающимися на 0,4 с в течение 1,6 с. Таким образом, всего осуществляется 4 цикла индикации, для подсчета которых используется регистр R2.

Затем генератор переходит в режим «Ожидание», производится опрос сигнала «Start», подаваемого на линию Р1.1 микроконтроллера. Индикация режима производится светодиодом, подключенным к линии Р1.4.

Если на линию Р1.1 подается уровень логического нуля генератор переводится в режим «Пуск», включается таймер Т0 и начинается формирование дискретных сигналов Q1-Q8.

Если на линии Р1.1 устанавливается уровень логической единицы, таймер выключается, формирование выходных сигналов прекращается и генератор снова переводится в режим «Ожидание».

В каждом цикле выдачи дискретных сигналов в порт вывода последовательно записываются 8 кодовых комбинаций. Кодовая таблица сигналов хранится во внешней памяти данных по адресу 9000h.

Кодовые комбинации на входах порта вывода обновляются каждые 0,1 мс. Для обеспечения заданной длительности используется таймер/счетчик Т0, работающий в режиме восьмиразрядного таймера с автоперезагрузкой. Перед первым пуском таймера в регистр TH0 записывается число 38h, которое автоматически перезагружается в регистр TL0 при переполнении таймера. Для выбора режима работы таймера в регистре TMOD устанавливаются соответствующие значения битов C/T, М0 и М1. Для включения таймера в регистре TCON устанавливается бит TR0.

Чтение кодовых комбинаций из памяти, их запись в порт вывода и организация нового цикла выдачи сигналов выполняются при обработке запроса прерывания от таймера Т0. Для разрешения прерывания от таймера Т0 необходимо в регистре IE установить бит ЕТ0 и снять блокировку всех прерываний, установив бит ЕА.

Для обслуживания прерывания таймера Т0 в ячейку памяти программ с адресом h записывается код команды безусловного перехода к подпрограмме обработки прерывания TIMER.

Чтение кодовой таблицы производится с использованием косвенной адресации через регистр-указатель данных DPTR. Регистр общего назначения R3 используется как счетчик, для контроля количества кодовых комбинаций, записанных в порт вывода. После выдачи последней кодовой комбинации регистр-указатель DPTR и регистр-счетчик R3 загружаются начальными значениями.

Адрес порта вывода дискретных сигналов AB00h принадлежит внешней памяти данных. Запись в порт вывода текущей кодовой комбинации производится с использованием косвенной адресации. Порт Р2 используется для адресации старшего байта адреса, а регистр R0, как регистр-указатель младшего байта адреса.

Пример блок-схемы алгоритма работы подпрограммы обработки прерывания таймера приведен на рисунке 5.3.

На рисунке 5.4 приведены примеры блок-схем алгоритмов работы подпрограмм формирования временных интервалов 400, 100 и 1 мс.

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

Создание и отладка рабочей программы генератора производится при помощи интегрированной среды разработки программного обеспечения Keil mVision.

Таблица 5.1 – Назначение переменных, меток и регистров, используемых в программе

Имя

Значение

Назначение

ADR_ TABLE

9000h

начальный адрес кодовой таблицы сигналов

CODE_NUMB

8d

количество кодовых комбинаций в таблице

BLINK

4H

количество циклов индикации светодиодов в режиме «Сброс»

PORT_L

00h

младший байт адреса порта вывода дискретных сигналов

PORT_H

0ABh

старший байт адреса порта вывода дискретных сигналов

TimeR_X

38H

уставка таймера, соответствует длительности 0,1 мс при 24 МГц

KN_START

P1.4

проверка сигнала "START"

Метка

Назначение

BEGIN

инициализация микроконтроллера

RESET

перевод генератора в режим «Сброс»

DELAY

вызов подпрограммы формирования временного интервала 400мс

wait

перевод генератора в режим «Ожидание»

OPROS

опрос кнопки «START», ожидание прерывания таймера Т0

START

перевод генератора в режим «Пуск»

TIMER

вход в подпрограмму обработки прерывания таймера Т0

NEXT_CODE

выход из подпрограммы обработки прерывания таймера Т0

MS_400

подпрограмма формирования временного интервала 400 мс

MS_100

подпрограмма формирования временного интервала 100 мс

MS_1

подпрограмма формирования временного интервала 1 мс

M1

вызов подпрограммы задержки MS_100

М2

вызов подпрограммы задержки MS_1

М3

цикл формирования задержки 1 мс

TABLE

размещение таблицы кодовых комбинаций

Регистр

Назначение

R0

указатель младшего байта адреса порта вывода

R2

счетчик количества циклов индикации в режиме «Сброс»

R3

счетчик количества кодовых комбинаций, выданных в порт вывода

R4

счетчик количества циклов вызова подпрограммы MS_400

R5

счетчик количества циклов вызова подпрограммы MS_1

R6

счетчик количества машинных циклов подпрограммы MS_1

порт Р1

Назначение

Р1.1

место подключения кнопки «START», проверка сигнала «START»

P1.2

место подключения VD1, индикация режима «Сброс»

Р1.3

место подключения VD2, индикация режима «Сброс»

P1.4

место подключения VD3, индикация режима «Ожидание»

P1.5

место подключения VD4, индикация режима «Пуск»

После проверки работоспособности программы и ее соответствия заданию в пояснительной записке приводятся:

  • листинг программы, содержащий результаты компиляции

(см. файл *.lst в директории проекта);

  • загрузочный файл программы (см. файл *.hex в директории проекта).

Рисунок 5.2 - Блок-схема алгоритма работы управляющей программы генератора

Рисунок 5.3 - Блок-схема алгоритма работы подпрограммы обработки прерывания таймера

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