用8086汇编写一个流水灯的程序
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:
ORG 0000H;复位启动AJMP START;ORG 001BH;T1中断AJMP T1INT;
;定义变量========================YSJSEQU 30H;延时计数器LEDEQU 31H;LED控制缓冲器
;主程序==========================START:MOV LED,#0FEH;初始化数据MOV YSJS,#0;MOV TMOD,#10H;定时器1工作于方式1,16位定时器MOV TL1,#0B0H;设置定时初值MOV TH1,#3CH;定时时间=50mSSETB ET1;使能定时器1中断SETB TR1;启动定时器1SETB EA;开总中断
MOV P1,LED;初始化流水灯LOOP:JMP LOOP;循环等待中断T1INT:PUSH PSW;定时器1中断程序PUSH ACC;保护现场MOV TH1,#3CH;定时时间=50mSMOV TL1,#0B0H;INC YSJS;
PUSH ACC;保护ACCMOV A,YSJI;CJNE A,#2,QT1;50mS*2=100mSMOV P1,LED;MOV A,LED;RL A;累加器A的值循环左移1位MOV LED,A;MOV YSJS,#0;QT1:POP ACC;恢复现场POP PSW;RETI;返回主程序END;汇编程序结束
扩展资料:
实现流水灯的三个方法:
第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。
ORG 0000H ;程序开始
SJMP START ;跳转到START
ORG 0050H ;START从ROM的0050H开始存储
START: MOVE P1.0,#00000001B ;把二进制数00000001B送到P1口
LCALL DELAY ;调用延时子程序
MOVE P1.0,#00000010B ;把二进制数00000010B送到P1口
LCALL DELAY
MOVE P1.0,#00000100B
LCALL DELAY
MOVE P1.0,#00001000B
LCALL DELAY
MOVE P1.0,#00010000B
LCALL DELAY
MOVE P1.0,#00100000B
LCALL DELAY
MOVE P1.0,#01000000B
LCALL DELAY
MOVE P1.0,#10000000B
LCALL DELAY
LJMP START ;跳转到START
;延时子程序DELAY,改变R5、R6、R7中的值(0到255),可以改变延时时间
DELAY: MOV R5,#20 ;把20放到寄存器R5中,
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$ ;把寄存器R7中的内容减1,如果结果不定于0,则跳转到本身,如果等于0,执行下一条程序
DJNZ R6,D2 ;把寄存器R6中的内容减1,如果结果不定于0,则跳转到本身,如果等于0,跳转到D2
DJNZ R5,D1
RET
END
MOV AL,80H;80H是8255的控制字
MOV DX,010EH;010EH是8255的控制端口的地址具体的根据你的电路连接的方法计算出来替换就可以了
OUT DX,AL
MOV BX,8
MOV XC,8
A2:
MOV AL,01H
MOV DX,010AH;010AH是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一次点亮 循环八次的一个程序
希望采纳
用8086汇编写一个流水灯的程序
程序段代码:MOV AL,80H;80H是8255的控制字 MOV DX,010EH;010EH是8255的控制端口的地址具体的根据你的电路连接的方法计算出来替换就可以了 OUT DX,AL MOV BX,8 MOV XC,8 A2:MOV AL,01H MOV DX,010AH;010AH是8255的A口或者B口的地址 根据你的图而定 A1:OUT DX,AL CALL DEKAY SHL AL...
8086 汇编 亮2个灯,暗6个灯,一个灯从上往中间轮流点亮,另一个灯从...
3、亮2个灯,暗6个灯,一个灯从上往中间轮流点亮,另一个灯从下往中间轮流点亮,循环间隔约1秒。4、采用ROR、ROL循环移位语句(p77)及 LOOP语句(p81),实现一个灯从第1个循环点亮到第8个,从第8个循环点亮至第1个,一直上下循环。
微机原理流水灯
一、设计内容:本课程设计选用8086对8255A的A口控制来实现模拟流水灯功能的实现。编写相关程序,通过proteus仿真软件来实现我名字“安亮”两个字的闪烁,“安”字接8255的A口的P0,“亮”字接A口的P1。先让“安”字和“亮”字同时点亮,再让两个字同时暗,接着让“安”字点亮,再让“亮”字点亮...
...乒乓球比赛游戏机 汇编编写 最好有PCB图,用的8086,谢了!!
(4)用 4 个八段码为双方记分 ( 每方 2 个八段码 ,10 进制计数 , 初始值 0:0) 。设备:单脉冲电路,可编程并行接口8255,可编程定时计数器8253,LED流水灯,七段数码管,开关等。一、 实验原理 1.8253定时器选用方式0,实现定时功能。两个七段数码管要实现连续显示,必须每隔5~10ms刷新一...
排针怎样连接上电脑
利用 I\/O 定址,用及闸 (And) 电路去定址一个你要的位置... 条件符合的位址... 才能输出到这块卡上面的下一级电路上... 然後资料的每个位元对应到一个下一级的继电开关... 去推动你那个流水灯的外部电路... 这样做是可以保护电脑端... 把流水灯跟电脑隔离... 流水灯只接受电脑传来的...
作为业余爱好者,英语不太好能学汇编和单片机吗
单片机汇编语言也就100多条指令,经常用的也就一点。重要的是你要学习他们设计程序的思想方法。当你理解的单片机,你就需要去应用它做一些简单的系统,流水灯之类的。这些东西都是要建立在开发板之上,不然你没有实践的机会。开发板外面都有卖的。先做一个简单的。熟悉基本的功能。学习到这里,你也应该...
8086 汇编 亮2个灯,暗6个灯,一个灯从上往中间轮流点亮,另一个灯从...
\/\/流水灯 include "reg52.h"define LED_PORT P3void delay(unsigned char time){ unsigned char i,j,k; for(i=0;i>1;halfbytel=halfbytel<<1; delay(10); } }} 例如:1、亮4个灯、暗4个灯,1亮1暗均匀分布且稳定不变;2、亮1个灯,暗7个灯,从上到下轮流点亮每一个灯,每次只...