用8086使led灯亮一秒灭4秒的程序,求解,谢谢

用8086使led灯亮一秒灭4秒的程序,求解,谢谢,第1张

首先要将你的单片机或者dsp的时钟转化成1秒或者1毫秒,转换的方法很多最简单的就是分频,这样做了之后写一个简单的程序使得某个变量比如说M即时一秒之后将你接的那个引脚的电平拉高或清零,使得led亮一秒。看得你接法怎么咐旦前接的。然后第二步就是M大于1的时候将led熄灭(电平高低看你衡清的接法而定)然后将m的值大迟迹于5时请一次零就ok了

程序段代码:

MOV AL,80H80H是8255的控制字

MOV DX,010EH010EH是8255的控制端口的地址具体告前的根据你的电路连接的方法计算出来替换就可以了

OUT DX,AL

MOV BX,8

MOV XC,8

A2:

MOV AL,01H

MOV DX,010AH010AH是8255的A口或者B口的地址 根据你的图而定

A1:

OUT DX,AL

CALL DEKAY

SHL AL,1

LOOP A1

DEC BX

JNZ A2

DELAY PROC NEAR

PUSH CX

MOV CX,0FFFFH修改0FFFFH的值可以改变跑马灯的时间间隔

LOOP $

POP CX

RET

DELAY ENDP

HLT

上面的程序是一个跑马灯的程序 跑马灯效果伏宏是D0--D7一次点亮 循环八次的一个程缺友册序

希望采纳

正好我们做了这个实验

你知道的,把数据段中的端口地址改为你的计算机可识别的8255A的端口地址

从键盘接收数字,在七段数码管上显示

data segment

ioport equ 2400h-0280h

io8255a equ ioport+288h

io8255b equ ioport+28bh

led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

mesg1db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$'

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov dx,io8255b使8255的A口为输出方式

mov ax,10000000b80h,A组方式0,A口输出,B组方式0,B口输出,C口输出

out dx,al

sss:

mov dx,offset mesg1显示提示信息

mov ah,09h

int 21h

mov ah,01 从键盘接收字符

int 21h

cmp al,'0' 是否小于0

jb sss 若是则退出

cmp al,'9' 是否大于9

ja sss 若是则退出

and al,0fh 将所得字符的ASCII码减银运拆30H

mov bx,offset led bx为数码表的起锋枣始地址

xlat 求出相应的段码

mov dx,io8255a 从8255的A口输出

out dx,al

jmp sss转悄则SSS

exit:

mov ah,4ch 返回DOS

int 21h

code ends

end start


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8275336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存