Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовой проект / КР1816ВЕ48..doc
Скачиваний:
135
Добавлен:
21.02.2014
Размер:
229.38 Кб
Скачать

4. Память микроконтроллера.

Память программ и память данных в МК48 физически и логически разделены. Память программ реализована в резидентном ЭСППЗУ (электрически стираемое/программируемое постоянное запоминающее устройство) ёмкостью 1 Кбайт. Максимальное адресное пространство, отводимое для программ, составляет 4 Кбайта. Однако старший бит (12) счётчика команд (СК) не инкрементируется в процессе счёта. Поэтому после выполнения инструкции по адресу 7FFh он перейдёт в состояние 000h. Состояние старшего бита СК может быть изменено командами SEL MB0, SEL MB1. Таким образом, вся РПП разделена на 2 банка по 2 Кбайта. Кроме того, РПП также разделена на страницы по 256 байт в каждой. Это связанно с тем, что в командах условного перехода для определения адреса используется только 1 байт.

В РПП имеется 3 специализированных адреса:

    • адрес 0, к которому передаётся управление сразу после снятия сигнала СБР (системный сброс МК);

    • адрес 3, по которому расположен вектор прерывания от внешнего источника;

    • адрес 7, по которому расположен вектор прерывания от таймера/счётчика.

Резидентная память данных (РПД) ёмкостью 64 байта имеет в своём составе два банка рабочих регистров 0-7 и 24-31 по восемь регистров в каждом. Наличие двух банков регистров бывает удобно при написании подпрограмм, например, обработчиков прерываний. Дело в том, что в стеке микроконтроллера сохраняются только флаги процессора и адрес возврата. Содержимое же аккумулятора и регистров остаётся неизменным. Поэтому в самом начале подпрограммы возможно переключиться на второй банк регистров и не мучится с их временным сохранением.

Ячейки РПД с адресами 8-23 адресуются указателем стека слова состояния программы (ССП) и могут быть использованы в качестве 8-уровнего стека.

5. Организация ввода/вывода информации.

Для связи МК с объектом управления, для ввода и вывода информации используются 27 линий. Эти линии сгруппированы в три порта по 8 линий в каждом и могут быть использованы для ввода, вывода или ввода/вывода через двунаправленные линии. Кроме портов ввода/вывода имеются 3 линии, сигналы на которых могут изменять ход программы по командам условного перехода: линия ЗПР используется для ввода в МК сигнала запроса прерывания от внешнего источника; линия Т0 используется для ввода тестирующего сигнала от двоичного датчика объекта управления; кроме того, под управлением программы (по команде ENT0 CLK) по этой линии из МК может выдаваться сигнал синхронизации (2 МГц); линия Т1 используется в качестве счётчика внешних событий (по команде STRT CNT). К последней линии (Т1), как и к линии Т0, может подсоединяться двоичный датчик, но если при использовании линии Т0 подсчёт импульсов необходимо производить программным способом, то при подаче импульсов на Т1 значение таймера/счётчика инкрементируется аппаратно.

6. Управление микроконтроллером.

Начало работы. После подачи напряжения электропитания необходимо произвести системный сброс микроконтроллера. Для этого необходимо на вход СБР подать уровень логического нуля продолжительностью не менее 50мс. Для этой цели обычно используют конденсатор ёмкостью 1мкФ, соединяющий вход СБР с общим проводом.

Сигнал СБР производит следующие действия: сбрасывает счётчик команд и указатель стека, устанавливает порт BUS в высокоимпедансное состояние, порты Р1 и Р2 в состояние FFh, выбирает банк регистров 0 и банк памяти 0, запрещает прерывания, останавливает таймер и выдачу синхросигнала на вывод Т0, сбрасывает флаги TF, F0,F1.

Флаг

Описание

A

Перенос

AC

Дополнительный перенос

TF

Переполнение таймера/счётчика

F0,F1

Флаги пользователя

DBF

Банк памяти

BS

Банк регистров

После снятия сигнала СБР МК начинает выполнять команду по адресу 000h.

Таймер/счётчик. Внутренний 8-битный двоичный суммирующий счётчик можно использовать для формирования временных задержек и для подсчёта внешних событий. Содержимое таймера/счётчика можно прочитать (MOV A,T) или изменить (MOV T,A). Две команды STRT T и STRT CNT настраивают и запускают таймер/счётчик в режиме таймера или в режиме счётчика соответственно. Остановить работу таймера/счётчика можно командой STOP TCNT. Из максимального значения FFh таймер/счётчик переходит в начальное состояние 00h. При этом устанавливается в 1 флаг переполнения TF, который может вызвать прерывание, если оно разрешено командой EN TCNTI. Прерывание от таймера/счётчика может быть запрещено командой DIS TCNTI, но при этом флаг переполнения может быть опрошен по команде условного перехода JTF. При переходе к подпрограмме обработки прерывания от таймера/счётчика флаг переполнения сбрасывается.

В режиме таймера на вход таймера/счётчика через делитель частоты на 32 поступают основные синхросигналы машинного цикла САВП (строб адреса внешней памяти, 400 КГц), и таймер увеличивает своё состояние на 1 через каждые 80 мкс (12,5 КГц).

В режиме счётчика событий внутренний счётчик увеличивает своё состояние на 1 каждый раз, когда сигнал на входе Т1 переходит из состояния 1 в состояние 0. Минимально возможное время между двумя входными сигналами равно 7.5 мкс (3 машинных цикла при использовании резонатора на 6 МГц).

Прерывания. МК48 поддерживает два прерывания: от внешнего источника и от внутреннего таймера/счётчика. Суть любого прерывания заключается в том, что МК сохраняет в стеке адрес возврата и флаги процессора, после чего в счётчик команд (СК) заносится число 3 или 7 (внешнее/внутреннее прерывание). По этим адресам в РПП должны располагаться подпрограммы обработки прерывания. Обычно по этим адресам находятся команды длинного безусловного перехода (JMP) к началу подпрограммы. В конце подпрограммы должна стоять команда RETR.

Линия запроса прерывания от внешнего источника ЗПР проверяется каждый машинный цикл, но передача управления к ячейку 3 выполняется только по завершению цикла команды. Режим прерывания может быть запрещён или разрешён командами DIS I и EN I (Disable/Enable Interrupt). Так как вход ЗПР может быть проверен по команде условного перехода JNI, то при запрещённом режиме прерывания вход ЗПР может быть использован в качестве дополнительного тестирующего входа подобно входам Т0 и Т1.

Очень часто одной внешней линии на запрос прерывания оказывается недостаточно. В этом случае возможно создать двухуровневую систему прерываний от внешних источников. Для этого надо разрешить прерывания от таймера, загрузить в него число FFh и перевести его в режим подсчёта внешних событий, фиксируемых на входе Т1. Переход сигнала Т1 из состояния 1 в состояние 0 приведёт к переполнению таймера/счётчика и генерации флага переполнения TF, что приведёт к прерыванию по вектору 7. В случае одновременного запроса прерываний от внешнего источника и запроса от флага переполнения таймера приоритет остаётся за источником, воздействующим на вход ЗПР.

Соседние файлы в папке курсовой проект