МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования «Гомельский государственный
университет им. П. О. Сухого»
Кафедра «Промышленная электроника»
Лабораторная работа № 10 по дисциплине: «МПТ»
«Система прерываний микроконтроллера»
Выполнил студент гр. ПМ-31
Принял преподаватель
Гомель 2010
Лабораторная работа № 10
Цель работы: Изучить систему прерываний микроконтроллеров семейства MCS-51 (МК51). Исследовать работу системы прерываний с помощью симулятора AVSIM51 на персональном компьютере.
Решения задач для самостоятельной работы
Задача 1.Разработайте программу для МКУ, которая отображает на светодиодах VD1 – VD8 в двоичном коде количество нажатий на кнопку SB1. При нажатии кнопки поступает запрос прерывания /INT0.
Блок-схема алгоритма:
Текст программы |
ORG 0000H JMP MAIN ; Переход на метку MAIN ORG 0003H ; Вектор внешнего прерывания /INT0 CALL SUMMA RETI ; Возврат из прерывания MAIN: MOV SP,#38H ; Определить стек SETB EX0 ; Разрешить прерывания от /INT0 SETB EA ; Общее разрешение прерываний SETB IT0 ; Срабатывание прерывания по срезу 1->0 STOP: NOP JMP STOP ; Зацикливание программы SUMMA: MOV A,P2 ; Загрузка из порта числа нажатий CPL A ; Инверсия аккумулятора ADD A,#1 ; Увеличение на единицу числа нажатий CPL A ; Инверсия аккумулятора MOV P2,A ; Загрузка в порт Р2 RET END |
Задача 2. Разработайте программу для МКУ, которая выводит состояние датчиков предельных температур (см. п.3.3 лабораторной работы № 9) на светодиоды VD1 – VD8 каждый раз, когда нажимается кнопка SB1 (при нажатии кнопки в МК поступает запрос прерывания /INT0). Длительность индикации – 5 секунд. Затем все светодиоды гаснут.
Текст программы |
ORG 0000H JMP MAIN ; Переход на метку MAIN ORG 0003H ; Вектор внешнего прерывания /INT0 CALL RDIN ; Вызов подпрограммы считывания из Р1 RETI ; Возврат из прерывания MAIN: MOV SP,#38H ; Определить стек SETB EX0 ; Разрешить прерывания от /INT0 SETB EA ; Общее разрешение прерываний SETB IT0 ; Срабатывание прерывания по срезу 1->0 STOP: NOP JMP STOP ; Зацикливание программы RDIN: MOV A,P1 ; Загрузка состояния порта Р1 CJNE A,#0,FIRE ; Переход если не равно 0 JMP FIN ; Переход в конец подпрограммы FIRE: CALL FLASH ; Вызов подрограммы обработки индикации светодиодов FIN: NOP ; Конец подпрограммы RET FLASH: MOV P2,#0 ; Зажигание светодиодов Р2 CALL DEL5S ; Индикация светодиодов в течении MOV P2,#FFH RET DEL5S: MOV R4, #5 ; Загрузка в R4 числа вызовов подпрограммы DEL1S LOOP: CALL DEL1S ; Задержка на 1 с DJNZ R4, LOOP ; Декремент R4 и цикл, если (R4) ? 0 RET DEL1S: MOV R7, #8 ; R7 – счетчик внешнего цикла MOV R5, #0 ; R5 – счетчик внутреннего цикла LOOP2: MOV R6, #243 ; R6 – счетчик среднего цикла LOOP1: DJNZ R5, LOOP1 ; LOOP1 выполняется DJNZ R6, LOOP1 ; за 125 мс (при fclk = 12 МГц) DJNZ R7, LOOP2 ; LOOP2 выполняет LOOP1 8 раз RET END |
Задача 3. Разработайте программу, которая производит циклическое включение и выключение светодиодов VD1 – VD8 определенное число раз. Это число равно двоичному коду, заданному переключателями на линиях P1.0, P1.1, P1,2 порта МК. Цикл включения и выключения начинается после нажатия на кнопку SB1, при этом на вход P3.2 поступает запрос прерывания. Длительность включенного и выключенного состояния светодиодов равна 1 секунде.
Блок-схема алгоритма
Текст программы |
ORG 0000H JMP MAIN ; Переход на метку MAIN ORG 0003H ; Вектор внешнего прерывания /INT0 CALL MIG ; Вызов подпрограммы обработки индикации светодиодов RETI ; Возврат из прерывания MAIN: MOV SP,#38H ; Определить стек SETB EX0 ; Разрешить прерывания от /INT0 SETB EA ; Общее разрешение прерываний SETB IT0 ; Срабатывание прерывания по срезу 1->0 MOV A,#00000111B ; Создание маски ANL A,P1 ; Обнуление неиспользуемых линий порта Р1 MOV P1,A ; Возврат обработанного значения CLR A ; Очистка аккумулятора STOP: NOP JMP STOP ; Зацикливание программы MIG: MOV A,P1 ; Загрузка в аккумулятор числа повторений MOV R4,A ; Инициализация счетчика повторений BGN: CALL DEL1S ; Ожидание 1 сек MOV P2,#0 ; Включение светодиодов CALL DEL1S ; Ожидание 1 сек MOV P2,#FFH ; Выключение светодиодов DJNZ R4,BGN ; Цикл если счетчик не нуль RET DEL1S: MOV R7, #8 ; R7 – счетчик внешнего цикла MOV R5, #0 ; R5 – счетчик внутреннего цикла LOOP2: MOV R6, #243 ; R6 – счетчик среднего цикла LOOP1: DJNZ R5, LOOP1 ; LOOP1 выполняется DJNZ R6, LOOP1 ; за 125 мс (при fclk = 12 МГц) DJNZ R7, LOOP2 ; LOOP2 выполняет LOOP1 8 раз RET END |
Вывод: Изучили систему прерываний микроконтроллеров семейства MCS-51 (МК51). Исследовали работу системы прерываний с помощью симулятора AVSIM51 на персональном компьютере.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.