- •Утверждено
- •1. 1. Краткое описание лабораторного макета
- •1. 3. Полноэкpанный pедактоp
- •1. 4. Резидентный ассемблер
- •1. 5. Сервисные подпрограммы
- •1. 6. Порядок выполнения работы
- •1. 7. Содержание отчета
- •Обработка данных микропроцессорными системами
- •2. 1. Способы адресации
- •2. 2. Варианты индивидуальных заданий
- •2. 3. Порядок выполнения работы
- •2. 4. Содержание отчета
- •Система ввода/вывода, формирование аналоговых сигналов
- •3. 1. Состав и основные функции устройств ввода/вывода
- •3. 2. Формирование аналоговых сигналов
- •3. 3. Порядок выполнения работы
- •3. 4. Содержание отчета
- •Аналого-цифровое преобразование сигналов
- •4. 1. Общие сведения
- •4. 2. Порядок выполнения работы
- •4. 3. Содержание отчета
- •5. 1. Структура системы прерываний и ее программирование
- •5. 2. Порядок выполнения работы
- •5. 3. Варианты индивидуальных заданий
- •5. 4. Содержание отчета
- •6. 1. Общие сведения
- •T2oe – бит разрешения формирования меандра на выводе р1.0.
- •6. 2. Порядок выполнения работы
- •6. 3. Содержание отчета
- •Режимы работы массива программируемых счетчиков
- •7. 1. Общие сведения
- •7. 2. Порядок выполнения работы
- •7. 3. Содержание отчета
- •Перечень команд ассемблера микроэвм семейства mcs51
- •Список команд, влияющих на флаги в регистре psw
- •Содержание
- •197376, С.-Петербург, ул. Проф. Попова, 5
5. 2. Порядок выполнения работы
1. Ознакомиться с описанием.
2. Разместить по адресам 4003Н, 400ВН и 4013Н подпрограммы обработки прерываний от входа INT0, таймера 0 и INT1 в соответствии с индивидуальным заданием.
Примечание. В лабораторном макете программа «монитор» производит переадресацию векторов прерываний в область адресов 4000Н.
3. Составить и отладить программу, использующую прерывания, проверить результаты ее работы на лабораторном макете.
В ходе работы управлять битами разрешения прерываний отдельных источников, соединяя входы Т0, Т1 с шиной «Общий». В соответствии с заданием зарисовать осциллограммы или описать характер вывода информации на дисплей.
В качестве сигнала прерывания по INT0 и INT1 использовать частоту, вырабатываемую генератором макета или вызывать прерывания, подключая соответствующий вход к "Общему".
Назначить всем источникам прерываний низкий приоритет. Запретить прерывания всех источников, кроме INT0 и INT1. Далее:
а) запрограммировать прерывания от INT0 и INT1 по перепаду. Разрешать прерывания: поочередно для INT0 и INT1;
б) запрограммировать прерывания от INT0 по уровню, от INT1 по перепаду. Разрешить прерывания совместно для INT0 и INT1;
в) назначить высокий приоритет INT1. Разрешить прерывания совместно для INT0 и INT1;
г) разрешить только прерывания таймера 0. Анализировать результат работы управляющей программы, изменяя период прерывания таймера (перед запуском программы вводить директивой монитора в ячейку 32Н числа 10Н, 80Н, F0H). Разрешить прерывания INT0 и INT1 совместно с прерываниями таймера 0. Назначить таймеру высший приоритет.
В ходе выполнения работы анализировать осциллограммы на выходе ЦАП1 и управляемых линий порта Р1.
Управляющая программа:
ORG 4000H
JMP START
ORG 4003H
JMP NX0 ;на п/п обработки прерывания INT0
ORG 400BH
JMP NT0 ;на п/п обработки прерывания таймера 0
ORG 4013H
JMP NX1 ;на п/п обработки прерывания INT1
NT0: PUSH ACC
MOV A,32H ;ввод из ячейки 32Н коэффициента
CPL A ;k, задающего период счета (прерывания)
INC A ;k·250 мкс – период таймера 0
MOV TH0,A ;занесение коэффициента в регистр
POP ACC ;таймера
*** ;команды, реализующие индивидуальное задание
RETI
NX0:
*** ;команды, реализующие индивидуальное задание
RETI
NX1:
*** ;команды, реализующие индивидуальное задание
RETI
START:
CALL INITT0 ;настройка таймера 0
MOV P1,#16
;настройка регистров системы прерываний
MOV 0B7H,#00000010B ;высший приоритет Т0
SETB PX1 ;(CLR PX1) оставить требуемую по заданию команду
SETB ЕТ0 ;(CLR ЕТ0) оставить требуемую по заданию команду
M: MOV C,T0 ;вход порта Р3.4
MOV EX0,C ;разрешение/запрет прерывания INT0
MOV C,T1 ;вход порта Р3.5
MOV EX1,C ;разрешение/запрет прерывания INT1
JMP M
END
5. 3. Варианты индивидуальных заданий
1. В подпрограмме прерывания INT0 инвертировать состояние линии Р1.4. По прерыванию INT1 инвертировать состояние линии Р1.5. По прерыванию от таймера 0 инкрементировать содержимое порта Р1.
2. Сформировать на ЦАП1 напряжение, нарастающее на 1 дискрет при обработке прерывания по входу INT0. При обработке прерывания по входу INT1 сформировать на ЦАП1 напряжение, убывающее на 2 дискрета. По прерыванию от таймера 0 установить флаг прерывания IE0, вызвав прерывание от INT0 программно (в этом случае на вход INT0 сигнал не подавать).
3. Сформировать на ЦАП1 напряжение, нарастающее на 3 дискрета при обработке прерывания по входу INT0. При обработке прерывания по входу INT1 сформировать на ЦАП1 напряжение, убывающее на 1 дискрет. По прерыванию от таймера 0 установить флаг прерывания IE1, вызвав прерывание от INT1 программно (в этом случае на вход INT1 сигнал не подавать).
4. Сформировать на ЦАП1 напряжение, нарастающее на 4 дискрета при обработке прерывания по входу INT0. Обнулить содержимое регистра Р1 при обработке прерывания по входу INT1. По прерыванию от таймера 0 установить флаг прерывания IE1, вызвав прерывание от INT1 программно (в этом случае на вход INT1 сигнал не подавать).
5. По прерыванию INT0 декрементировать содержимое регистра Р1. По прерыванию INT1 инкрементировать содержимое регистра Р1. По прерыванию таймера 0 инвертировать содержимое бита Т0.
6. По прерыванию INT0 устанавливать в «1» бит Р1.7. По прерыванию INT1 сбрасывать в «0» бит Р1.7. По прерыванию таймера 0 увеличивать содержимое регистра Р1 на 4 дискрета.
7. По прерыванию INT0 производить циклический сдвиг регистра Р1 вправо. По прерыванию INT1 производить циклический сдвиг регистра Р1 влево. По прерыванию таймера 0 инвертировать содержимое бита Т0.
8. По прерываниям INT0 и INT1 производить суммирование «по модулю два» содержимого регистра Р1 с числом F0H. По прерыванию таймера 0 производить декремент содержимого регистра Р1.
