Разработка алгоритма. Обобщенная блок-схема алгоритма работы тестера. Обобщенная блок-схема алгоритма работы весов, страница 2

INTR

EQU

9AH

; Времязадающие константы

EXTR

EQU

27H

; для подпрограммы DELAY

ORG

0000H

; Начальный адрес программы

; Основная программа

MOV

P2, #00100011B

; Выключить индикаторы

MOV

SP, #70H

; Определить стек

READY:

SETB

P2.2

; Включить индикатор "ГОТОВ"

WAIT1:

JB

P2.0, WAIT1

; Ожидание нажатия кнопки "ТЕСТ"

CALL

DELAY

; Вызов подпрограммы задержки

WAIT2:

JNB

P2.0, WAIT2

; Ожидание отжатия кнопки "ТЕСТ"

CALL

DELAY

; Вызов подпрограммы задержки

CLR

P2.2

; Погасить индикатор "ГОТОВ"

MOV

A, P0

; Ввод кода номера ИМС

CPL

A

; Получить прямой код номера N

CJNE

A, #0, NEXT1

; Номер ИМС N=00?

CALL

TEST00

; Вызов подпрограммы тестирования TEST00

JMP

CHECK

; Переход на метку CHECK

NEXT1:

CJNE

A, #1, NEXT2

; Номер ИМС N=01?

CALL

TEST01

; Вызов подпрограммы тестирования TEST01

JMP

CHECK

; Переход на метку CHECK

;

:

;

:

; Проверка остальных ИМС

;

:

NEXT58:

CJNE

A, #58, NEXT59

; Номер ИМС N=58?

CALL

TEST58

; Вызов подпрограммы тестирования TEST58

JMP

CHECK

; Переход на метку CHECK

;

:

;

:

; Проверка остальных ИМС

;

:

NEXT98:

CJNE

A, #98, NEXT99

; Номер ИМС N=98?

CALL

TEST98

; Вызов подпрограммы тестирования TEST98

JMP

CHECK

; Переход на метку CHECK

NEXT99:

CALL

TEST99

; Вызов подпрограммы тестирования TEST99

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

CHECK:

JB

F0, NORM

; Переход, если F0=1 (НОРМА)

SETB

P2.4

; Включить индикатор "БРАК"

JMP

WAIT3

; Переход на подпрограмму WAIT3

NORM:

SETB

P2.3

; Включить индикатор "НОРМА"

WAIT3:

JB

P2.1, WAIT3

; Ожидание нажатия кнопки "СБРОС"

CALL

DELAY

; Вызов подпрограммы задержки

WAIT4:

JNB

P2.1, WAIT4

; Ожидание отжатия кнопки "СБРОС"

CALL

DELAY

; Вызов подпрограммы задержки

; Установка портов Р1, Р2, Р3 на ввод, гашение всех индикаторов

MOV

P1, #0FFH

MOV

P2, #00100011B

MOV

P3, #0FFH

JMP

READY

; Переход в исходное состояние

; DELAY-подпрограмма временной задержки на 20мс

; Входные параметры: константы INTR, EXTR

DELAY:

MOV

R6, #EXTR

; Загрузка

LOOP2:

MOV

R7, #INTR

; Времязадающих констант

LOOP1:

DJNZ

R7, LOOP1

; Цикл, если (R7)  0

DJNZ

R6, LOOP2

; Цикл, если (R6)  0

RET

; Возврат из подпрограммы

; TEST58 - подпрограмма тестирования ИМС К1533ИЕ6 с номером N=58

; Выходной параметр: флаг F0

; при F0 = 1 - результат тестирования  положительный (НОРМА),

; при F0 = 0 - отрицательный (БРАК)

TEST58:

CLR

P2.5

; Подать питание на ИМС

CALL

DELAY

; Вызов подпрограммы задержки

CLR

P3.1

; Отключить режим сброса (обнуления)

CLR

P3.4

; Разрешить загрузку данных

MOV

A, P1

; Переслать в аккумулятор выходной код

ANL

A, #01100110B

; Выделить разряды кода (маска)

CJNE

A, #01100110B, EXIT

; Сравнение и переход если не равно

SETB

P3.4

; Запретить загрузку данных

CLR

P1.4

; Импульс для счета на увеличение

SETB

P1.4

; Импульс для счета на увеличение

MOV

A, P3

; Переслать в аккумулятор выходной код

JB

ACC.3, EXIT

; Переход, если бит АСС.3 равен единице

SETB

P3.1

; Импульс для сброса (обнуления)

CLR

P3.1

; Импульс для сброса (обнуления)

CLR

P1.3

; Импульс для счета на уменьшение

SETB

P1.3

; Импульс для счета на уменьшение

MOV

A, P3

; Переслать в аккумулятор выходной код

JB

ACC.2, EXIT

; Переход, если бит АСС.2 равен единице

SETB

F0

; Установить флаг F0 < -1 (НОРМА)

SETB

P2.5

; Отключить питание ИМС

RET

; Возврат из подпрограммы

EXIT:

CLR

F0

; Сбросить флаг F0 < -0 (БРАК)

SETB

P2.5

; Отключить питание ИМС

RET

; Возврат

END

; Конец текста программы.


   ПУСК

Рис. 4. Детальная блок – схема алгоритма работы тестера ИМС

Рис. 5. Детальная блок – схема алгоритма работы подпрограммы TEST58