组成这个7段数码管的每个部分又分为a,b,c,d,e,f,g部分,分别对应如下所示
根据上面7段数码管的排列和真值表,我们另外设计电路,让对应的数值触发不同的二极管的亮与灭,就能显示出我们要的数据了。例如,数据00000001,选择电路是01100001,则其表示的就是1。一次类推,其实做法都是很原始的,就是一种类型对应一种状态而已,是设计好的,具体的电路设计就不追究了
其实输出数据对程序员来说不是很重要。日常的屏幕显示,计算机也只是把
CODE SEGMENTASSUME CS:CODE
START:
MOV CX,3 设外循环 3次
@0:
PUSH CX
MOV CX,10 设内循环 10次
@1:
MOV AH,2
MOV DX,CX
DEC DX 将内循环变量 减一 后输出
OR DL,30H
INT 21H
MOV AX,18 延时 18 个单位 ,约等于1秒
CALL DELAY_PROC
LOOP @1
CALL LFCR 换行回车
POP CX
LOOP @0
MOV AH,4CH
INT 21H
LFCR: PUSH AX
PUSH DX
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
POP DX
POP AX
RET
===============================================================
DELAY_PROC PROC NEAR 延迟子程式, 延迟 ax/18秒
PUSH ES
PUSH DX
MOV DX,40H
MOV ES,DX
MOV DX,ES:[006CH] 取系统1/18秒计数
ADD DX,AX 延时 x/18
DELAY10:
CMP ES:[006CH],DX 时限到了?
JBE DELAY10 没
POP DX
POP ES
RET
DELAY_PROC ENDP
============================================================
CODE ENDS
END START
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)