📄 交通灯_接口.asm
字号:
data segment
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
num db 9h,8h,7h,6h,5h,4h,3h,2h,1h,6h,5h,4h,3h,2h,1h,3h,2h,1h,0
light db 1b,1b,1b,1b,1b,1b,1b,1b,1b,100b,100b,100b,100b,100b,100b,10b,10b,10b
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,28bh
mov al,88h
out dx,al
ll0: lea si,num
lea di,light
ll1: mov bl,[si]
cmp bl,0
jz ll0 ;大循环
mov dx,288h
mov al,byte ptr led[bl]
out dx,al ;点数码管
mov dx,28ah
mov al,[di]
out dx,al ;点灯
call delay
inc si
inc di
jmp ll1 ;下一秒,小循环
delay proc near ;延时子程序
push dx
mov dx,283h ;设8253计数器0为方式3
mov al,36h
out dx,al
mov dx,280h
mov ax,1000 ;写入计数器初值1000
out dx,al
mov al,ah
out dx,al
mov dx,283h
mov al,70h ;设计数器1为工作方式0
out dx,al
mov dx,281h
mov ax,1000 ;写入计数器初值1000
out dx,al
mov al,ah
out dx,al
ll2: mov ah,06 ;是否有键按下
mov dl,0ffh
int 21h
jne exit ;若有则转exit
mov dx,28ah
in al,dx ;查询8255的Pc7是否为高电平
test al,80
jz ll2 ;若不是则继续
pop dx
ret
exit: mov ah,4ch
int 21h
delay endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -