Курс лекций. - Микропроцессоры


Написание программы для микропроцессорного устройства - часть 12


Теперь можно заняться реализацией подпрограммы опроса кнопок. Её задача состоит в копировании логических уровней с выводов порта во внутреннюю переменную микроконтроллера SostKn. Так как это будет происходить быстро и с постоянной задержкой по времени, то время взятия отсчетов (а также время вывода на индикаторы) будет строго постоянным. Исходный текст подпрограммы опроса кнопок приведён на рисунке 9.29.

В этой подпрограмме кнопки, разнесённые по портам, сводятся в одну переменную. Копирование производится битовыми командами MOV через флаг переноса C.

;-------------ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ---------------------------------- Delit equ 8 ;Номер ячейки памяти делителя SEC equ 9 ;Номер ячейки памяти счётчика секунд MIN equ 10 ;Номер ячейки памяти счётчика минут Chas equ 11 ;Номер ячейки памяти счётчика часов SostKn equ 12 ;Номер ячейки переменной состояния кнопок NachStek equ 12 ;Номер начальной ячейки памяти стека ;-------------СБРОС МИКРОКОНТРОЛЛЕРА--------------------------------- ORG 0 jmp init ;Переход на начало выполнения программы ;-------------ВЕКТОР ПРЕРЫВАНИЯ ТАЙМЕРА T0--------------------------- ORG 0Bh mov TH0, #HIGH(-50000) ;Загрузить старший байт таймера mov TL0, #LOW(-50000) ;Загрузить младший байт таймера reti ;-------------ИНИЦИАЛИЗАЦИЯ МИКРОКОНТРОЛЛЕРА------------------------- init: mov SP,#NachStek ;Изменить размер стека call Timer0_Init ;Настроить таймер T0 на прерывания с периодом 50мс mov Delit,#20 ;Настроить делитель на коэффициент деления 20 mov SEC,#60 ;Настроить счётчик секунд на коэффициент деления 60 mov MIN,#0 ;Обнулить счётчик минут mov Chas,#0 ;Обнулить счётчик часов ;-------------ОСНОВНАЯ ПРОГРАММА МИКРОКОНТРОЛЛЕРА-------------------- Begin: call OprosKnop ;Опросить кнопки call Indic ;Произвести индикацию состояния часов на светодиодных ;индикаторах DJNZ Delit,Sleep ;Если прошла одна секунда, то mov Delit,#20 ;настроить делитель на коэффициент деления 20 call Clock ;и вызвать подпрограмму реализации часов. Sleep: orl PCON,#1;Перевести микроконтроллер в пониженный режим ;потребления тока и подождать переполнения таймера jmp begin ;Переход на начало выполнения программы ;-------------КОНЕЦ ОСНОВНОЙ ПРОГРАММЫ МИКРОКОНТРОЛЛЕРА-------------- ;******************************************************************** ;Подпрограмма опроса кнопок ;******************************************************************** OprosKnop: ret

Рисунок 9.28.


Начало  Назад  Вперед



Книжный магазин