Проектирование одного из блоков имитатора сигналов РНС, предназначенного для выполнения испытаний судовой приемоиндикаторной аппаратуры, страница 4

;так как во втором байте может содержаться любое значение 

;в диапазоне 01-255, то единственным ошибочным значением будет нуль

INX H                ;увеличение указателя

MVI A, 0H            ;загрузка нуля в аккумулятор

ORA M                ;установка флага ZERO=1, если равенство

JNZ NO_MISTAKE2      

LDA MIST2            ;модифицируем счетчик ошибок 2-го байта

INR A

CALL CRUSH           ;вызываем подпрограмму проверки переполнения

STA MIST2

NO_MISTAKE2:

;проверка третьего байта

INX H

LDA D_FLAG

CPI 1H

JNC СHECK_ONLY_ZERO  ;если в первом байте пришло значение D, то

                     ;в третьем байте может быть только нуль -

                     ;проверяем специально установленный флаг

MOV A, M             ;загружаем значение 3-го байта и сравниваем его

CPI 7H               ;с 7H

JC NO_MISTAKE3       ;

JZ NO_MISTAKE3       ;

JMP MODIFY_MIST3     ;

CHECK_ONLY_ZERO:

MVI A,0              ;проверяем на равенство нулю в случае

ORA M                ;D-контроллера

JZ NO_MISTAKE3

MODIFY_MIST3:

LDA MIST3            ; модифицируем счетчик ошибок 3-го байта

INR A

CALL CRUSH           ; вызываем подпрограмму проверки переполнения

STA MIST3

NO_MISTAKE3:

;проверка четвертого байта

INX H                ;

MOV A, M             ;значение должно быть меньше 30H

CPI 1EH

JNC NO_MISTAKE4      ;

LDA MIST 4           ;модифицируем счетчик ошибок 4-го байта

INR A

CALL CRUSH           ; вызываем подпрограмму проверки переполнения

STA MIST4

NO_MISTAKE4:

INX H                ;увеличиваем указатель

MVI A, OFFH          ;проверяем на равенство FFH

ORA M

JZ NO_MISTAKE5

LDA MIST5            ;модифицируем счетчик 5-го байта

INR A

CALL CRUSH           ; вызываем подпрограмму проверки переполнения

STA MIST5

NO_MISTAKE5:

JMP $

CRUSH:

;данная подпрограмма проверяет, не превышен ли предел в 10H

;ошибок хотя бы в одном из счетчиков. Максимально допустимое число

;ошибок выбрано исходя из соображений удобства их дальнейшего

;представления на индикаторах и составления таблиц соответствия

;кодов.

;на момент запуска подпрограммы аккумулятор содержит значение

;текущего счетчика ошибок

CPI 10H

JNC AVARIA          ;флаг не установится, если содержимое А (то есть

                    ;счетчик) больше чем 10Н

RET                 ;если аварии нет, возвращаемся в главную

                    ;программу

МОДУЛЬ ИНДИКАЦИИ.

;в модуле счета ошибок счетчики были представлены  в виде отдельных

;ячеек памяти. Это позволило сделать программу более наглядной. Для

;программирования индикации же удобнее иметь эти счетчики в виде

;таблицы. Табличное представление и использовано в этом модуле.

;программа трансляции кодов BCD в коды 7-сегментного индикатора

LXI D, rs_7_SEG

PUSH D            ;текущий адрес таблицы индикации в стеке

LXI D, RG_BCD     ;

MVI B, 5

LOOP_TRANS:

LXI H, TABL_DATA

LOOP_STRING:

LDAX D            ;получить код для преобразования

CMP M

JZ FOUND          ;вход в таблицу найден

INX H

INX H

MOV A, M

CPI KONEC         ;проверка выхода из таблицы

JNZ LOOP_STRING

ERROR:

JMP $             ;программа замыкается сама на себя

FOUND:

INX H             ;указатель на выходной код

МOV A,M           ;получить выходной код

XTHL              ;получить указатель в таблице

МOV A,M

INX H             ;

XTHL              ;сохранить новое значение указателя

INX D             ;новое значение из буфера rg_7_seg

DCR B             

JNZ LOOP_TRANS

LDAX D

XTHL

MOVE M, A

POP D             ;восстановить состояние стека

RET


Список литературы

1.  Пухальский Г. И., Новосельцева Т. Я. Проектирование микропроцессорных устройств. Уч. пос. СПб: СПбГЭТУ, 1995.

2.  Пухальский Г. И. «Проектирование микропроцессорных систем»

3.  Смирнов Б. И., Добырн В. В. Контроллер имитатора радионавигационной системы «Loran–C». Методические указания к курсовому расчету по дисциплине «Микропроцессорные устройства». СПб: СПбГЭТУ, 1997.

4.  Пухальский Г. И. , Новосельцева Т. Я. «Проектирование дискретных устройств на интегральных микросхемах», Радио и связь, М.: 1990 г.

5.  Иванов В. И. «полупроводниковые оптоэлектронные приборы», Энергоатомиздат, 1989 г.