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


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


На индикаторе, подключенном к порту P3, будут отображаться десятки минут.

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

Для декодирования двоично-десятичного кода предусмотрим подпрограмму-функцию decod. Пусть декодируемая тетрада будет передаваться в подпрограмму через аккумулятор. Полученный семисегментный код тоже удобно вернуть из подпрограммы через аккумулятор. Исходный текст получившейся подпрограммы индикации приведен на рисунке 9.25.

Delit equ 8 ;Номер ячейки памяти делителя SEC equ 9 ;Номер ячейки памяти счётчика секунд MIN equ 10 ;Номер ячейки памяти счётчика минут Chas equ 11 ;Номер ячейки памяти счётчика минут NachStek equ 11 ;Номер начальной ячейки памяти стека ;-------------СБРОС МИКРОКОНТРОЛЛЕРА--------------------------------- 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 Indic ;Произвести индикацию состояния часов на светодиодных ;индикаторах DJNZ Delit,Sleep ;Если прошла одна секунда, то mov Delit,#20 ;настроить делитель на коэффициент деления 20 call Clock ;и вызвать подпрограмму счётчика секунд. Sleep: orl PCON,#1;Перевести микроконтроллер в пониженный режим ;потребления тока и подождать переполнения таймера jmp begin ;Переход на начало выполнения программы ;-------------КОНЕЦ ОСНОВНОЙ ПРОГРАММЫ МИКРОКОНТРОЛЛЕРА-------------- ;******************************************************************** ;Подпрограмма блока индикации ;******************************************************************** Indic: ret

Рисунок 9.24.


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



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