MOVAL01000010B左右红灯上下绿灯
MOVDXIOAPT
OUTDXAL
MOVALSI
MOVDXIOBPT
OUTDXAL
INCSI
MOVALDI
MOVDXIOCPT
OUTDXAL
INCDI
CALLDELAY
LOOPE
PUSHCX
MOVCX6
DMOVAL01000001B左右红灯上下黄灯
MOVDXIOAPT
OUTDXAL
MOVALSI
MOVDXIOCPT
OUTDXAL
MOVDXIOBPT
OUTDXAL
INCSI
CALLDELAY
LOOPD
POPCX
JMPF
323存储器扩展部分
当红绿灯正常工作时向其中写入11H按下控制器1时写入10H按下控制器2时写入01HRAM芯片存储数据
RAM1PROC
PUSHDS
PUSHAX
PUSHBX
PUSHCX
fMOVBLAL
MOVAX0F9000H
MOVDSAX
CMPBL00001110B
JZAA1
CMPBL00001101B
JZAA2
JMPAA0
AA0MOVAX11H
JMPAA
AA1MOVAX10H
JMPAA
AA2MOVAX01H
AAMOVBX00H
MOVBXAX
POPCX
POPBX
POPAX
POPDS
RET
RAM1ENDP
324核心数据结构
本次设计使用到的数据结构是堆栈在出栈入栈中实现了保护现场的作用例
DELAYPROCNEAR
PUSHCX
PUSHBX
DEL2MSMOVBL2
DEL1MSMOVCX374
DEL1PUSHF
POPF
LOOPDEL1
CALLCHECK
DECBL
JNZDEL1MS
POPBX
POPCX
JMPOVER
OVERRET
DELAYENDP
f33程序流程图
34关键代码片段分析
控制器的实现按本次设计要求实现了控制器的要求使用8255A1芯片C口做查询当主程序每调用一次延时子程序时都调用子程序check查询C口若C口为00001101或00001110时调用子程序IN1或IN2实现控制功能。
控制器实现代码
DELAYPROCNEAR
PUSHCX
PUSHBX
DEL2MSMOVBL2
DEL1MSMOVCX374
DEL1PUSHF
POPF
LOOPDEL1
CALLCHECK
DECBL
JNZDEL1MS
POPBX
fPOPCX
JMPOVER
OVERRET
DELAYENDP
C口查询
CHECKPROC
MOVAL10000001B
MOVDXPCONT
OUTDXAL
MOVDXPORTC
INALDX
MOVAHAL
CMPAL00001110B
JEINT1
MOVALAH
CMPAL00001101B
JEINT2
CALLRAM1
JMPOVER
INT1CALLRAM1
CALLIN1
JMPOVER
INT2CALLRAM1
CALLIN2
OVERRET
CHECKENDP
PC0口置0PC1口置1上下通行
IN1PROCNEAR
PUSHCX
PUSHAX
PUSHBX
PUSHDX
PUSHSI
PUSHDI
MOVAL80H
MOVDXIOCONPT
LEASIARRAY3
OUTDXAL
MOVCX11
A0MOVAL01000010B左右红灯上下绿灯MOVDXIOAPT
OUTDXAL
MOVALSI
fMOVDXIOCPT
OUTDXAL
MOVDXIOBPT
OUTDXAL
INCSI
CALLDELAY1
LOOPA0
POPDI
POPSI
POPDX
POPAX
POPCX
RET
IN1ENDP
PC1口置0PC0口置1左右通行
IN2PROCNEAR
PUSHCX
PUSHAX
PUSHDX
PUSHSI
PUSHDI
MOVAL80H
MOVDXIOCONPT
LEASIARRAY3
OUTDXAL
MOVCX11
A1MOVAL10000100B左右绿灯上下红灯MOVDXIOAPT
OUTDXAL
MOVALSI
MOVDXIOCPT
OUTDXAL
MOVDXIOBPT
OUTDXAL
INCSI
CALLDELAY1
LOOPA1
POPDI
POPSI
POPDX
POPAX
POPCX
RET
fIN2ENDP
DELAY1PROCNEAR
PUSHCX
PUSHBX
DEL2MSMOVBL2
DEL1MSMOVCX374
DEL1PUSHF
POPF
LOOPDEL1
DECBL
JNZDEL1MS
POPBX
POPCX
JMPOVER
OVERRET
DELAY1ENDP
第四章设计验证41验证步骤及结果
411液晶屏信息显示
f412交通灯控制
f闭合K1或K2开关实现可控制的单向通行但开关闭合后需要打开否则会持续进性行单向通行
42遇到的问题及解决
1制作存储器模块时需更改数据段地址r