Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСы (МПС).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

23. Разработать функциональную схему мп – системы сбора четырех аналоговых сигналов. Составить программу. Тип контроллера выбирает студент.

Тип контролёра: МК1816ВЕ51

МЕТКА

МНЕМОНИКА

Коментарии

ORG 1000H

EQU STOP,02F3H

MOV DPTR,#8503H

иНИЦИАЛИЗАЦИЯ параллельного порта

MOV A,#90H

MOVX @DPTR,A

MOV R0,#00H

1–ЫЙ аналоговоЙ сигнал

MOV R1,#00H

Задание ячейки сохранения оцифрованного аналогового сигнала

MOV R2,#15H

MOV R3,#04H

СЧЁТЧИК ПРИЁМА АНАЛОГОВЫХ СИГНАЛОВ

K1

MOV DPTR,#8501H

Подключение i–го аналогового сигнала

MOV A,R0

MOVX @DPTR,A

MOV A,00H

Приём i–го аналогового сигнала

MOV DPTR,#8300H

MOVX @DPTR,A

MOV DPTR,#8300H

MOV A,01H

MOVX@DPTR,A

MOV DPTR,#8200H

J2:

MOVX A,@DPTR

JB 0E1H,J2

MOV DPTR,#8000H

MOVX A,@DPTR

MOV DPL,R1

Пересылка оцифрованного аналогового сигнала в соответствующую ячейку памяти

MOV DPH,R2

MOVX @DPTR,A

INC R0

ИНКРЕМЕНТИРОВАНИЕ СОДЕРЖАНИЯ РЕГИСТРОВ

INC R1

DJNZ R3,K1

ПРОВЕРКА. ВСЕЛИ АНАЛОГОВЫЕ СИГНАЛЫ ПОЛУЧЕНЫ.

…

24. Система прерывания микроконтроллера семейства мк51. Вектор прерываний. Прерывание от внешних событий. Пример управления программой кнопки “Пуск” в режиме прерывания.

Напомним, что ОЭВМ 1816ВЕ51 обслуживает два вида источников прерываний:

1. прерывания от внутренних устройств (таймер и последовательный интерфейс);

2. прерывания от внешних устройств (поступают через два входа INT0 и INT1).

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

• ВЕ51 завершает выполнение текущей команды и устанавливает в "1" флаг запроса прерывания в соответствующем данному источнику прерывания разряде регистра TCON;

• если в регистре разрешения прерываний IE бит, соответствующий данному прерыванию, установлен в "1», это прерывание считается разрешенным и происходит переход на фиксированный адрес памяти команд в соответствии с таблицей 5.

Таблица 5.

Расположение векторов прерывания в ПЗУ УМПК—51.

Источник прерывания

Адрес перехода

INT0

0003Н

ТС0

000ВН:

INT1

0013Н

ТС1

001ВН

Последовательный интерфейс

0023Н

Как видно из таблицы, на каждое прерывание отводится всего 8 байт, поэтому обычно по этим адресам располагают не саму подпрограмму обработки прерывания, а команду перехода на эту подпрограмму, расположенную в другом месте памяти программ. Этот адрес перехода называют иногда вектором прерывания. Таким образом, отработка прерываний в системе на базе ВЕ51 происходит в последовательности, показанной на рис. 15.

Рис. 15. Последовательность отработки прерываний в системе на базе

ВЕ51.

Для того, чтобы дать пользователю возможность располагать подпрограммы обработки прерываний произвольного размера в любом месте памяти команд, в УМПК—51 реализована система векторов переадресации, которую иллюстрирует рис. 16.

Рис. 16. Последовательность отработки прерываний в УМПК—51.

Таким образом, вектором конкретного прерывания является записанная ПЗУ команда перехода на его фиксированный адрес в ОЗУ, а уже по адресу ОЗУ, соответствующему конкретному источнику прерывания, пользователь должен записать команду перехода на подпрограмму обслуживания этого прерывания. Источники прерываний и адреса переходов в ПЗУ и в ОЗУ находятся в соответствии, представленном в таблице 6.

Внешнее прерывание 1 зарезервировано на обслуживание контроллера клавиатуры и дисплея КР580ВВ79, поэтому адрес перехода в ОЗУ по этому прерыванию не указан.

Таблица 6.

Расположение векторов прерываний в ПЗУ и ОЗУ УМПК—51

Источник прерывания

Адрес перехода в ПЗУ

Адрес перехода в ОЗУ

INT0

0003Н

1750Н

ТС0

000ВН

1753Н

INT1

0013Н

—

ТС1

001ВН

1759Н

Последовательный интерфейс

0023Н

175СН

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

Эксперименты, иллюстрирующие обслуживание прерываний от внутренних устройств ВЕ51, будут подробно рассмотрены в разделах 6 (таймеры/счетчики) и 7 (последовательный интерфейс). Ниже приведены эксперименты, иллюстрирующие работу ВЕ51 с внешними прерываниями на примере INTO. Запрос на прерывание INTO возникает при нажатии на клавишу 10 УМПК—51, схема подачи прерывания на вход ВЕ51 показана на рис. 17.

Рис. 17. Схема формирования внешнего прерывания INT0 в УMПK-51.

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

• записать в ОЗУ по адресу, куда будет передано управление при возникновении прерывания, команду перехода на подпрограмму обслуживания этого прерывания (см. табл. 6);

• разрешить данное прерывание записью "1" в соответствующий разряд регистра IE;

• установить приоритет прерывания записью в регистр IP;

• установить режим срабатывания по фронту/низкому уровню записью "1"/"0" в разрядIT0 регистра TCON.

Рассмотрим в качестве примера программу, которая при поступлении внешнего прерывания 0 запускает подпрограмму обработки кнопки “пуск” , индицируемое светодиодами этого порта. ПРИМЕЧАНИЕ.

1003Н:

80 FE

J1:

SJMPJ1

Переход на метку J1 (бесконечный цикл)

Подпрограмма обработки

прерывания INT0

1100Н:

C2A8

IT0:

CLR 0A8H

Сброс бита разрешения внешнего прерывания 0 (кнопка “пуск”)

1102Н:

Подпрограмма обслуживания кнопки “пуск”

11ххН:

32

RETI

Возврат из подпрограммы

Вектор переадресации на п/п обработки INT0

1750Н:

02 11 00

JMP IT0

Переход по вектору прерывания

После ввода в память этой программы, для программирования прерывания INT0 остается лишь разрешить прерывание записью "1" в младший разряд регистра IE (бит с адресом А8Н), поскольку команда перехода на подпрограмму обработки прерывания в ОЗУ записана при вводе, программы по адресу 1750Н, а все необходимые установки режимов (работа по низкому уровню сигнала, одинаковый приоритет всех прерываний) происходят во время начальной инициализации ВЕ51, в чем, кстати, имеет смысл убедиться.

Программа работает следующим образом: после запуска основной программы включается бесконечный цикл и, таким образом, входит программа в режим ожидания запроса на прерывание. Запрос на прерывание 0 производится нажатием на клавишу I0 , после чего происходит переход на подпрограмму обслуживания прерывания (если младший бит регистра IE установлен в "1", т.е. прерывание от внешнего источника 0 разрешено), вектор которой должен быть записан по адресу 1750Н ОЗУ. В нашем случае по этому адресу записана команда перехода на ячейку 1100Н, где находится подпрограмма, подпрограмма обслуживания кнопки “пуск”.