Проектирование абонентского вызывного устройства ведомственной системы персонального радиовызова на основе микроконтроллера КР1830ВЕ51, страница 8

;адреса таблицы вызовов

M9:                 MOV              A, @R0           ;Загрузка в аккумулятор номера N

                                                                       ;просматриваемого сигнала вызова

SJMP              M11                ;Переход к вычислению адреса п/п вызова

M10:               MOV              A, SBUF         ;Пересылка кадра сообщения в аккумулятор

                        ACALL           DSOOB          ;Декодирование кода сообщения

ACALL           SDWR            ;Сдвиг содержимого таблицы вызовов вправо

MOV              60h, A             ;Запись в таблицу номера принятого сигнала

;вызова

M11:               ACALL           WAFORM      ;Вычисление адреса п/п вызова, формирование

;и вывод сигналов вызова

AJMP             M12                ;Продолжение при нажатии кнопки ''Принято''

M12:               JB                   FR, M2           ;Переход к приёму адреса следующего сообщения

;если флаг режима установлен (FR = 1)

INC                 R0                   ;Переход к следующему адресу таблицы сигналов

;вызова при сброшенном флаге режима (FR=0)

CJNE              R0, #70, M9   ;Продолжение просмотра таблицы вызовов, так

;как адрес сигнала вызова не превышает

;максимальный адрес таблицы

SJMP              M8                  ;Переход к повтору просмотра таблицы вызовов

;с её начального адреса

;П/п обслуживания прерывания от входа /INT0

;(при нажатие кнопки ''Выключить'')

.ORG              3h                    ;Начальный адрес обслуживания прерывания

;от входа /INT0

AJMP             0240h              ;Переход к тексту п/п обслуживания прерывания

.ORG              240h                ;Начальный адрес п/п обслуживания прерывания

JNB                 FR, I0              ;Переход к включению режима ХХ, если до

;прерывания флаг режима был сброшен

CLR                FR                   ;Сброс установленного до прерывания флага

ACALL           IND                 ;Индикация выключения пейджера (звук )

ACALL           IND                 ;

ACALL           IND                 ;

ACALL           IND                 ;

ACALL           IND                 ;

ACALL           SDWR            ;Сдвиг содержимого таблицы вызовов вправо

MOV              60h, #00h        ;Запись в таблицу вызовов кода 00 (кода

;окончания сеанса работы пейджера)

CLR                P3.4                ;Выключение питания ВЧ-тракта приёма

MOV              PCON, #02h   ;Перевод МК в режим пониженного

;энергопотребления (PD = 1)

I0:                   SETB              FR                   ;Установка сброшенного до прерывания

;флага режима

CLR                P3.5                ;Индикация включения режима ХХ (свет)

CLR                P3.6                ;

SETB              P3.7                ;

MOV              PCON, #01h   ;Перевод МК в режим  ХХ (IDL = 1)

;П/п обслуживания прерывания от входа /INT1

;(при нажатие кнопки ''Принято'')

.ORG              13h                  ;Начальный адрес обслуживания прерывания от

;входа /INT1 (при нажатие кнопки ''Принято'')

POP                7Fh                 ;Вывод из стека последнего адреса, запомненного

POP                7Fh                 ;при прерывании от входа /INT1 п/п

;формирования периодических сигналов вызова, в

;фиктивную ячейку памяти

RETI                                       ;Продолжение с адреса, запомненного в стеке при

;вызове п/п WAFORM

;П/п сдвига содержимого таблицы

;вызовов на один адрес вправо

;Сдвигаются байты с адресами 60h….6Eh

.ORG              0280h              ;Начальный адрес п/п сдвига

;содержимого таблицы вызовов вправо

SDWR:           MOV              6Fh, 6Eh         ;Сдвиг содержимого таблицы вызовов

MOV              6Eh, 6Dh        ;на один адрес вправо

MOV              6Dh, 6Ch        ;

MOV              6Ch, 6Bh        ;

MOV              6Bh, 6Ah        ;

MOV              6Ah, 69h         ;

MOV              69h, 68h          ;

MOV              68h, 67h          ;

MOV              67h, 66h          ;

MOV              66h, 65h          ;

MOV              65h, 64h          ;

MOV              64h, 63h          ;

MOV              63h, 62h          ;

MOV              62h, 61h          ;

MOV              61h, 60h          ;

RET                                        ;

;П/программа звуковой индикации

;включения/выключения пейджера

;Длительность звукового сигнала Тинд = 0.1 с

;Тактовая частота Fosc = 4 МГц

;Длительность такта Тosc = 0.25 мкс

;Длительнасть машинного цикла Тмц = 3 мкс

;R1, R2 – регистры (нулевого банка регистров) для хранения параметров п/программы

М                    .EQU               46h                  ;Определение параметров циклов п/программы

N                     .EQU               0Edh               ;

.ORG              300h                ;Начальный адрес п/программы звуковой

;индикации включения/выключения пейджера

IND:                SETB              P3.5                ;Выдача сигнала индикации

MOV              R1,#M            ;Задание длительности сигнала через параметры

Q1:                  MOV              R2, #N            ;внутреннего (N) и внешнего (M) циклов

Q2:                  DJNZ              R2, Q2            ;Декремент R2 и выполнение внутреннего цикла,

;если R2 неравно нулю

DJNZ              R1, Q1            ;Декремент R1 и выполнение внешнего цикла,

;если R1 не равно нулю

CLR                P3.5                ;Снятие цикла индикации

RET                                        ;

;Тинд = Tcall + Tsetb + Tmov + M (Tmov + N Tdjnz + Tdjnz) +Tclr =

;= [ 6 + 3 + 3 + 70 (3 + 237 x 6 + 6) + 3 ] мкс = 0.100170 c

;П/программа декодирования кода адреса

;Входной код адреса – восьмиразрядный код, состоящий из бита чётности кода (седьмой

;разряд кода) и семи адресных бит

;Выходной код адреса – восьмиразрядный код с погашенным битом чётности

P                     .EQU               0D1h               ;Определение бита чётности регистра PSW

.ORG              340h                ;Начальный адрес п/программы декодирования

;кода адреса

DADR             ORL                A, #00h           ;Проверка чётности принятого кода адреса

JNB                 P, 05h             ;Переход к приёму следующего кадра адреса,

SJMP              04h                  ;если принятый код адреса нечётный

AJMP             M2                  ;

ANL                A, #7Fh           ;Выделение принятого адреса