-
Принципиальная схема микропроцессорной системы.
Принципиальная схема приведена в приложении №1 к курсовой работе. При её построении были использованы элементы, приведённые в методических указаниях. Адресное пространство памяти и портов ввода/вывода было разделено.
-
Алгоритм и программа управления накопителем посылок.
На рисунке 6 показан алгоритм работы микропроцессорной системы управления накопителем посылок.
Рисунок 6.
Составим программу на языке Ассемблер:
Текст программы.
MVI A, 00H
OUT 04H ;обнуляем порты
OUT 05H
MAIN1: CALL READ21 ; опрашиваем датчик l
CALL READ55 ; опрашиваем датчик k
MOV A, 00H
CMP L ; сравниваем 00 и состояние датчика l
JNZ DAT1X ; ЕСЛИ Д1=1 ТО ПЕРЕХОДИМ К МЕТКЕ DAT1X
JMP DAT0X ; ЕСЛИ Д1=0 ТО ПЕРЕХОДИМ К МЕТКЕ DAT0X
; знаем что Д1=0, проверим что в Д2
DAT1X: CMP H ; сравниваем 00 и состояние датчика k
JZ DAT10 ; ЕСЛИ Д2=0 И Д1=1 , ТО ПЕРЕХОДИМ К МЕТКЕ DAT10
JMP DAT11 ; ЕСЛИ Д2=1 И Д1=1 , ТО ПЕРЕХОДИМ К МЕТКЕ DAT11
; знаем что Д1=1, проверим что в Д2
DAT0X: CMP H ; сравниваем 00 и состояние датчика k
JZ DAT00 ; ЕСЛИ Д2=0 И Д1=0 , ТО ПЕРЕХОДИМ К МЕТКЕ DAT00
JMP DAT01 ; ЕСЛИ Д2=1 И Д1=0 , ТО ПЕРЕХОДИМ К МЕТКЕ DAT01
DAT00: CALL D00 ; т.к. Д1=Д2=0 вызываем D00
JMP MAIN1 ; в начало
DAT01: CALL D01 ; т.к. Д1=0 Д2=1 вызываем D01
JMP MAIN1 ; в начало
DAT10: CALL D10 ; т.к. Д1=1 Д2=0 вызываем D10
JMP MAIN1 ; в начало
DAT11: CALL D11 ; т.к. Д1=Д2=1 вызываем D11
JMP MAIN1 ; в начало
; проверка состояния l-датчика (20)
READ20: MVI A, 14H ; адресс датчика в шестнадцетиричной системе
OUT 04H ; настраиваем мультиплексор
IN 03H ; читаем состояние выхода мультиплексора
MOV L, A ; запоминаем в регистре L
RET
; проверка состояния k-датчика (35)
READ35: MVI A, 23H ; адресс датчика в шестнадцетиричной системе
OUT 04H ; настраиваем мультиплексор
IN 03H ; читаем состояние выхода мультиплексора
MOV H, A ; запоминаем в регистре H
RET
; надо сбросить выход ИЭ
D00: MVI A, 00H ; будем грузить в дешифратор 00
OUT 05H ; грузим в дешифратор, который на 5-м порту
RET
; надо установить выход 12-й выход ИЭ
D01: MVI A, 0CH ; для этого в дешифратор запишем 12 в шестнадцатеричной форме
OUT 05H ; грузим в дешифратор, который на 5-м порту
RET
; надо вызвать задержку (на 6-м адресе) а затем установить 12-й выход
D10: CALL 06H ; вызываем задержку
MVI A, 0CH ; для этого в дешифратор запишем 12 в шестнадцатеричной форме
OUT 05H ; грузим в дешифратор, который на 5-м порту
RET
; в этом случае мы выходы не меняем
D11: RET