📄 stop.asm
字号:
;这是一个利用串行口扩展并行I/O口的例子
;系统的晶振频率12MHz,利用74LS165和CD4094扩展出两个8位并行口。
;编程读入开关状态,存入片内RAM的40H单元,并同时输出到LED上显示出来。
KEY EQU 40H
ORG 0
MOV SCON,#0H ;串口方式0,允许接收数据
RX0: CLR P1.0 ;并行输入开关状态
SETB P1.0 ;允许串行移位
SETB REN ;允许串行接收数据
JNB RI,$ ;等待一帧数据接收结束
CLR REN ;停止接收
CLR RI
MOV A,SBUF ;读开关状态
MOV KEY,A ;存开关状态
TX0: LCALL CONVERT ;将开关状态转换为数码管的段码
clr p1.2
setb P1.1 ;关显示
MOV SBUF,A ;开关状态送数码管显示
JNB TI,$ ;等待一帧数据发送结束
CLR TI
clr P1.1 ;选通CD4094
setb p1.2
SJMP RX0
CONVERT:JB ACC.0,C0 ;S0按下了?否,则转
MOV A,#3FH ;"0"的显示段码
SJMP C_END
C0: JB ACC.1,C1
MOV A,#06H ;"1"的显示段码
SJMP C_END
C1: JB ACC.2,C2
MOV A,#5BH ;"2"的显示段码
SJMP C_END
C2: JB ACC.3,C3
MOV A,#4FH ;"3"的显示段码
SJMP C_END
C3: JB ACC.4,C4
MOV A,#66H ;"4"的显示段码
SJMP C_END
C4: JB ACC.5,C5
MOV A,#6DH ;"5"的显示段码
SJMP C_END
C5: JB ACC.6,C6
MOV A,#7DH ;"6"的显示段码
SJMP C_END
C6: JB ACC.7,C_7
MOV A,#27H ;"7"的显示段码
SJMP C_END
C_7: MOV A,#0
C_END: RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -