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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.