微机接口实验一:七段数码管循环动态显示00~99
程序员文章站
2022-03-15 13:55:49
...
一、实验目的
掌握数码管显示数字的原理。
二、实验原理和内容
三、编程提示
四、电路接线图
五、程序设计流程图
六、一些说明
- 将01h送到C口后,再将要显示的数据送到A口,显示的是个位。
- 将02h送到C口后,再将要显示的数据送到A口,显示的是十位。
- 注意判断进位。
七、程序源代码
stack segment stack
db 200 dup(0)
stack ends
data segment
APORT equ 288h
CPORT equ 28ah
CTRL equ 28bh
num db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh ;0~9
data ends
code segment
assume cs:code,ds:data,ss:stack
delay MACRO
local loop_delay
local flag
push cx
push bx
xor bx, bx
flag:mov cx, 0ffffh
loop_delay:loop loop_delay
inc bx
cmp bx, 10
jnz flag
pop bx
pop cx
ENDM
main: mov ax,data
mov ds,ax
mov ax, stack
mov ss, ax
mov dx, CTRL
mov al, 80h ;写入控制字
out dx, al
xor si, si
xor di, di
loop1:cmp si, 10 ;检查个位是否已经增加到10
jz carry ;进位
mov dx, CPORT
mov al, 02h
out dx, al
mov dx, APORT
mov al, num[di] ;显示十位
out dx, al
delay
mov dx, CPORT
mov al, 01h
out dx, al
mov dx, APORT
mov al, num[si] ;显示个位
out dx, al
inc si ;个位+1
delay
jmp loop1 ;还没有进位个位继续增加
carry:xor si, si ;进位后将个位清零
cmp di, 10 ;十位增加到10就从00重新开始
jz exit
mov dx, CPORT
mov al, 02h
out dx, al
mov dx, APORT
mov al, num[di]
out dx, al
inc di ;十位+1
delay
jmp loop1
exit:xor di, di
jmp loop1
mov ah,4ch
int 21h
code ends
end main
上一篇: session失效刷新后登录页面嵌入在iframe中的解决办法
下一篇: linux下安装jdk