微机原理汇编语言课程设计 中的LED 灯显示控制代码怎么写?
LED灯显示控制一、设计目标灵活控制8个LED灯的有规律闪烁,并设计相应的控制端。二、设计要求起始状态是8个LED灯全灭;当开关K0=1时,控制8个灯按以下规律闪烁:首先...
LED 灯显示控制
一、设计目标
灵活控制8个LED灯的有规律闪烁,并设计相应的控制端。
二、设计要求
起始状态是8个LED灯全灭;
当开关K0=1时,控制8个灯按以下规律闪烁:首先是 1,3,5,7 号 LED 灯依次亮 1 秒钟,当第 7 号 LED 亮后,这四个灯同时 闪烁 5 下; 然后是,2,4,6,8 号依次亮 1 秒钟,当第 8 号 LED 亮后,这四个灯同时闪 烁 5 下;
当K1=1时,停止闪烁;
当K2=1时,8个LED灯全灭。
实验设备是这个,连线忽略,这是另外一个实验的 展开
一、设计目标
灵活控制8个LED灯的有规律闪烁,并设计相应的控制端。
二、设计要求
起始状态是8个LED灯全灭;
当开关K0=1时,控制8个灯按以下规律闪烁:首先是 1,3,5,7 号 LED 灯依次亮 1 秒钟,当第 7 号 LED 亮后,这四个灯同时 闪烁 5 下; 然后是,2,4,6,8 号依次亮 1 秒钟,当第 8 号 LED 亮后,这四个灯同时闪 烁 5 下;
当K1=1时,停止闪烁;
当K2=1时,8个LED灯全灭。
实验设备是这个,连线忽略,这是另外一个实验的 展开
1个回答
展开全部
data segment
io8255a equ 288H
io8255b equ 289H
io8255c equ 28AH
io8255t equ 28BH
data ends7
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,io8255t ;控制端口
mov al,81H ;设置8255为A口输出
out dx,al
mov dx,io8255a
mov al,00H ;设置8个灯全灭
out dx,al
mo:mov dx,io8255c
in al,dx
cmp al,01h
jz k1
cmp al,02h
jz k2
cmp al,04h
jz k3
jmp theend
k1: jmp l1
k2: jmp l2
k3: jmp l3
l1:
call deng
l2:
mov dx,io8255a
mov al,01h
out dx,al
l3:
mov dx,io8255a
mov al,00h
out dx,al
theend:
mov al,00h
mov dx,io8255a
out dx,al
jmp mo
deng proc
mov dx,io8255a ;数据端口
mov al,01H ;1号灯
out dx,al
call delay;延迟1秒
mov al,04H ;3号灯
out dx,al
call delay;延迟1秒
mov al,10H ;5号灯
out dx,al
call delay;延迟1秒
mov al,40H ;7号灯
out dx,al
call delay;延迟1秒
mov cl,5
return1: mov al,55H ;1,3,5,7号灯
out dx,al
call sdelay;延迟1秒
mov al,00H
out dx,al
call sdelay;延迟1秒
loop return1
mov al,02H ;2号灯
out dx,al
call delay;延迟1秒
mov al,08H ;4号灯
out dx,al
call delay;延迟1秒
mov al,20H ;6号灯
out dx,al
call delay;延迟1秒
mov al,80H ;8号灯
out dx,al
call delay;延迟1秒
mov cl,5
return2: mov al,0AAH ;2,4,6,8号灯
out dx,al
call sdelay;延迟1秒
mov al,00H
out dx,al
call sdelay;延迟1秒
loop return2
deng endp
delay proc ;延迟1秒的子程序
push cx
mov bx,10000
again1:mov cx,2801
wait0:loop wait0
dec bx
jnz again1
pop cx
ret
delay endp
sdelay proc ;延迟0.1秒的子程序
push cx
mov bx,1000
again2:mov cx,2801
wait1:loop wait1
dec bx
jnz again2
pop cx
ret
sdelay endp
code ends
end start
io8255a equ 288H
io8255b equ 289H
io8255c equ 28AH
io8255t equ 28BH
data ends7
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,io8255t ;控制端口
mov al,81H ;设置8255为A口输出
out dx,al
mov dx,io8255a
mov al,00H ;设置8个灯全灭
out dx,al
mo:mov dx,io8255c
in al,dx
cmp al,01h
jz k1
cmp al,02h
jz k2
cmp al,04h
jz k3
jmp theend
k1: jmp l1
k2: jmp l2
k3: jmp l3
l1:
call deng
l2:
mov dx,io8255a
mov al,01h
out dx,al
l3:
mov dx,io8255a
mov al,00h
out dx,al
theend:
mov al,00h
mov dx,io8255a
out dx,al
jmp mo
deng proc
mov dx,io8255a ;数据端口
mov al,01H ;1号灯
out dx,al
call delay;延迟1秒
mov al,04H ;3号灯
out dx,al
call delay;延迟1秒
mov al,10H ;5号灯
out dx,al
call delay;延迟1秒
mov al,40H ;7号灯
out dx,al
call delay;延迟1秒
mov cl,5
return1: mov al,55H ;1,3,5,7号灯
out dx,al
call sdelay;延迟1秒
mov al,00H
out dx,al
call sdelay;延迟1秒
loop return1
mov al,02H ;2号灯
out dx,al
call delay;延迟1秒
mov al,08H ;4号灯
out dx,al
call delay;延迟1秒
mov al,20H ;6号灯
out dx,al
call delay;延迟1秒
mov al,80H ;8号灯
out dx,al
call delay;延迟1秒
mov cl,5
return2: mov al,0AAH ;2,4,6,8号灯
out dx,al
call sdelay;延迟1秒
mov al,00H
out dx,al
call sdelay;延迟1秒
loop return2
deng endp
delay proc ;延迟1秒的子程序
push cx
mov bx,10000
again1:mov cx,2801
wait0:loop wait0
dec bx
jnz again1
pop cx
ret
delay endp
sdelay proc ;延迟0.1秒的子程序
push cx
mov bx,1000
again2:mov cx,2801
wait1:loop wait1
dec bx
jnz again2
pop cx
ret
sdelay endp
code ends
end start
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询