海外主机测评

您现在的位置是:首页 > 云服务器代理 > 正文

云服务器代理

流水灯汇编程序流水灯汇编程序是什么

cds8202023-04-27云服务器代理74
本文目录一览:1、用汇编语言编流水灯,有8个LED灯,LED1~LED8灯按顺序点亮,每个等亮一秒转到下个灯,一直循环亮2、8路流水灯汇编语言程序的写法3、一键多控流水灯汇编语言

本文目录一览:

  • 1、用汇编语言编流水灯,有8个LED灯,LED1~LED8 灯按顺序点亮,每个等亮一秒转到下个灯,一直循环亮
  • 2、8路流水灯汇编语言程序的写法
  • 3、一键多控流水灯汇编语言怎么写,软件是keil
  • 4、流水灯汇编解释?
  • 5、51单片机中如何用汇编语言编写流水灯

用汇编语言编流水灯,有8个LED灯,LED1~LED8 灯按顺序点亮,每个等亮一秒转到下个灯,一直循环亮

这个流水灯是很普通的一种花样,假设LED接P1口,程序如下:

ORG 0000H

LJMP MAIN

0RG 000BH

LJMP T0ISR

ORG 0030H

MAIN:

MOV TMOD,#01H

MOV TH0,#HIGH(65536-50000) ;50毫秒定时

MOV TL0,#LOW(65536-50000)

SETB TR0

SETB ET0

SETB EA

MOV A,#0FEH

MOV P1,A

MOV R2,#20

SJMP $

T0ISR:

CLR TR0

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

SETB TR0

DJNZ R2,T0E ;1秒未到直接退出

MOV R2,#20

RL A

MOV P1,A ;1秒一变的花样流水灯。

T0E:

RETI

END

8路流水灯汇编语言程序的写法

汇编语言程序如下:

;假设1:D1~D8八个彩灯接在P1口,输出低电平发光

;假设2:系统晶振为12MHz

;假设3:N = 5

;程序如下:

ORG 0000H

MOV R3, #5           ;N=5

LOOP0:

MOV A,   #0FFH     

MOV P1, #0FFH        ;开始时全灭

;-------------------------------逐个点亮

MOV R2, #8

LOOP1: CLR C

RLC A

MOV P1, A

CALL DL500MS

DJNZ R2, LOOP1

;-------------------------------逐个熄灭

MOV R2, #8

LOOP2: SETB C

RLC A

MOV P1, A

CALL DL500MS

DJNZ R2, LOOP2

;-------------------------------全亮、全灭交替

MOV R2, #4

LOOP3: MOV P1, #0           ;全亮

CALL DL500MS

CALL DL500MS           ;共1s

MOV P1, #255         ;全灭

CALL DL500MS           ;0.5s

DJNZ R2, LOOP3

;-------------------------------

DJNZ R3, LOOP0

MOV P1, #01001001B   ;5、显示为0100 1001

CALL DL500MS

CALL DL500MS           ;共1s

SJMP 0000H             ;重新开始N遍

;-------------------------------延时子程序

DL500MS:

MOV R5, #9      ;1T

DL1:   MOV R6, #128    ;1T

DL2:   MOV R7, #215    ;1T

NOP              ;1T

DL3:   DJNZ R7, DL3     ;2T   2 * 215 = 430 T

DJNZ R6, DL2     ;2T   [1+1+430+2] * 128 = 55552 T

DJNZ R5, DL1     ;2T   [1+55552+2] * 9 = 499995 T

RET              ;2T   1 + 499995 + 2 = 499998 T

;-------------------------------------

END

扩展资料:

实现8路流水灯的原理:

下图为主控芯片和流水灯模块的原理图。

流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。

要实现流水灯功能,只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。

实现8个LED流水灯程序用中文表示为:

P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高。

P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。   

一键多控流水灯汇编语言怎么写,软件是keil

一键多空流水灯汇编语言程序编写方法是:设置一个变量,来检测按键的次数,从而控制程序分支来达到控制不同流水灯的效果例如:

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:

MOV R6,#0FEH

MOV R7,#0

LOOP:

JB P1.0,LOOP1

JNB P1.0,$

INC R7

CJNE R7,#2,LOOP1

MOV R7,#0

LOOP1: ;奇数次按键左向流水灯

MOV A,R7

JNZ LOOP2

MOV A,R6

MOV P0,A

RL A

MOV R6,A

LCALL DELAY

SJMP LOOP

LOOP2: ;偶数次按键右向流水灯

MOV A,R6

MOV P0,A

RR A

MOV R6,A

LCALL DELAY

LJMP LOOP

DELAY:

MOV R2,#200

DL1:

MOV R3,#250

DJNZ R3,$

DJNZ R2,DL1

RET

END

流水灯汇编解释?

ORG是伪指令,代表这行在存储介质上的地址。

ORG0000H就是存储介质上的第一行。

MOV R2,#08H 没有具体意义,只是让流水灯一直运行的一个数量位而已。一次会运行8组,但是会重新赋值,所以会一直不停的流动。

JB 只是一个检测位址是否为1,如果为1则跳转,否则不跳转程序。

JB P0.0,LOOP1 这条指令的意思是,如果P0.0为1,则程序跳转到LOOP1的程序位置上。

其他指令和上面的指令是一样的,如果都不为1,则执行

AJMP MAIN 也就是说程序一直在判断,外部的三个按钮是否按下,如果按下,就跳转到对应的子程序执行,如果都没有按下,则程序跳转到MAIN的地方,重新开始那三个JB,如果按钮没按下,一直查询按钮,无限循环。

现在假设P0.0的按钮被按下,则程序跳转到LOOP1的位置上。

所以开始跳转到第7行开始执行MOV,R2,#08H。这条指令和第一条指令是一样的,意义不大,就不重复了。

然后继续往下执行,MOV A,#0FEH,把累加器ACC的内存设置为16进制的FE,也就是最低位为0,其他位为1.

然后AJMP BUTTTON1。跳转到BUTTON1的位置,也就是下一行了。

然后是MOV P1,A。把累加器ACC里的FE给P1端口,这时候流水灯才开始亮起来了。按你图上的画法,是P1.0的灯亮,其他的灯不亮。

然后执行ACALL DELAY。这是子程序调用。调用名字为DELAY的子程序。这个时候程序跳转到最左边的那张图的DELAY的位置上。开始执行延时程序。

MOV R3,#14H 是设置延迟的次数。一次延迟,执行14次定时器。

下面的几条指令,我就不一一讲了,自己去看定时器的调用吧,符号和C语言的是一模一样的,设置定时器的类型,设置定时器的初始值。

SETB TR1 定时器1的运行标志位,设置为1,定时器开始工作。

JBC TF1,LP2。检查TF1标志位,定时器定时时间到了,TF1位为1,则跳转到LP2的位置。

然后重新给定时器赋值。然后R3减一,如果R3减到0,子程序调用结束,执行RET,完成子程序调用,否则,跳转到LP1的位置,继续执行定时器延迟程序。

现在假设延迟程序执行完毕,执行RET,完成子程序调用,返回主程序。

也就是程序第11行的位置上。因为这里是我们调用DELAY延迟函数开始的地方。程序会自动返回的,但是第一次写汇编的人,程序一大了,可能搞不清楚,你调用的位置在哪了,这很正常。

然后执行下一条指令,RL A 这条指令很简单,把累加器ACC里的值往左边移动一位,在51单片机里,就是向高位移动一位。

然后判断,其他的两个按钮是否被按下,两条JB指令,在前面已经讲过了,这里不赘述了。

如果按下了,就跳转到相应的位置上。否则执行DJNZ R2,BUTTON1,因为其他按钮没有按下来,所以继续执行BUTTON1的流水灯程序,R2的值不为0,则跳转到BUTTON1的位置上,重新开始执行,如果R2为0,则执行MOV R2,#08H,就重新给R2赋初值。然后执行AJMP BUTTON1,也就是没变。

现在我们假设P0.1的按钮被按下,则跳转到LOOP2。也就是第18行。

之后的指令是一样的,R2的作用是一样的就不解释了,然后直接解释下一条指令

MOV A,#7FH。这是给累加器ACC赋值,这次赋7H,跟BUTTON1正好相反,是最高位0,其他位为1,BUTTON1是最低位为0,其他位为1。

然后跳转到BUTTON2,执行MOV P1,A。把累加器的值给P1端口。

RR A,把累加器的值向右移动一位。

然后是两条JB指令,不解释了啊,忘了的,上边有写。然后调用DELAY延迟函数,执行过程,跟上面的是一样的。

后面的指令都是一样的,包括LOOP3的,自己看吧。已经写的很详细了,望采纳,还有不懂,再问吧。

51单片机中如何用汇编语言编写流水灯

流水灯就是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;定时时间=50mS

SETB ET1;使能定时器1中断

SETB TR1;启动定时器1

SETB EA;开总中断

MOV P1,LED;初始化流水灯

LOOP:JMP LOOP;循环等待中断

T1INT:PUSH PSW;定时器1中断程序

PUSH ACC;保护现场

MOV TH1,#3CH;定时时间=50mS

MOV TL1,#0B0H;

INC YSJS;

PUSH ACC;保护ACC

MOV A,YSJI;

CJNE A,#2,QT1;50mS*2=100mS

MOV 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口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。

第三种,库函数实现流水灯。利用左移函数进行。

流水灯汇编程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于流水灯汇编程序是什么、流水灯汇编程序的信息别忘了在本站进行查找喔。

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~