当前位置:首页 » 编程软件 » 流水灯汇编程序

流水灯汇编程序

发布时间: 2022-08-31 03:56:44

㈠ 花样流水灯设计汇编语言

晶振频率,假设是12MHz。

程序如下:


;启动后,八路流水灯同时闪烁,每秒闪烁一次。

;按下按键A,顺时针依次闪烁,间隔1秒。

;按下按键B,顺时针间隔0.5秒依次闪烁。

;按下按键C,逆时针间隔一秒依次闪烁。

;按下按键D,逆时针间隔2秒依次闪烁

;按下按键E,同时常亮。

;按下按键F,同时常灭。

;按下按键G,复位,同时间隔1秒闪烁。


ORG0000H

MOVTMOD,#01H

SETBTR0

CALLSET_T0

MOVB,#50

MOVR4,#0

MOVR5,#7FH

MOVR6,#0

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

LOOP:

MOVR7,B

CJNER6,#0,_1

MOVP1,R4

MOVA,R4

CPLA;0取反

MOVR4,A

JMPWAIT

_1:CJNER6,#1,_2

MOVP1,R5

MOVA,R5

RRA;1顺时针

MOVR5,A

JMPWAIT

_2:CJNER6,#2,WAIT

MOVP1,R5

MOVA,R5

RLA;2逆时针

MOVR5,A

WAIT:

JNBTF0,$

CALLSET_T0

CALLR_ABCD

DJNZR7,WAIT

JMPLOOP

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

R_ABCD:

JNBP2.0,KA

JNBP2.1,KB

JNBP2.2,KC

JNBP2.3,KD

JNBP2.4,KE

JNBP2.5,KF

JNBP2.6,KG

RET

KA:MOVB,#100;间隔1s

MOVR6,#1;顺时针

JMPEXIT

KB:MOVB,#50

MOVR6,#1

JMPEXIT

KC:MOVB,#100;间隔1s

MOVR6,#2;逆时针

JMPEXIT

KD:MOVB,#200

MOVR6,#2

JMPEXIT

KE:MOVP1,#0

MOVR6,#3;无操作

JMPEXIT

KF:MOVP1,#255

MOVR6,#3;无操作

JMPEXIT

KG:MOVB,#50;500ms亮、灭一次

MOVR6,#0;闪烁

EXIT:

MOVR7,#10

RET

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

SET_T0:

MOVTH0,#(65536-10000)/256

MOVTL0,#(65536-10000)MOD256

CLRTF0

RET

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



电路仿真图如下:

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

流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:

ORG 0000H ;复位启动
AJMP START ;
ORG 001BH ;T1中断
AJMP T1INT ;

;定义变量========================
YSJS EQU 30H;延时计数器
LED EQU 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 ;汇编程序结束

(2)流水灯汇编程序扩展阅读:

实现流水灯的三个方法:

第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。

第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。

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

㈢ 单片机流水灯汇编程序是怎样的

ORG 000H
LJMP MAIN
ORG 000BH;定时器0中断入口
LJMP LOOP1
ORG 0100H
MAIN:
MOV TMOD,#01H;设置定时器工作模式
MOV TL0,#0EFH;设置定时器初值
MOV TH0,#0D8H
SETB EA;打开总中断
SETB ET0;打开定时器0中断
SETB TR0;启动定时器0
MOV P0,#0FFH
MOV R0,#200;延时参数
LOOP:
CJNE R0,#0,LOOP;延时
MOV A,#0EFH
NEXT:
MOV P0,A ;送值
MOV R0,#50 ;延时参数
EXIT:
CJNE R0,#00H,EXIT ;延时一会儿
RL A ;A循环左移【根据程序分许,该程序完成流水灯功能】
LJMP NEXT

LOOP1:;定时器0中断函数
MOV TL0,#0EFH;定时器初值
MOV TH0,#0D8H ;定时器初值
DEC R0 ;
RETI ;中断返回
END
有疑问可以追问。

㈣ 汇编流水灯程序

延时根据单片机调整.

ORG 00H
MOV P2,#80H
START:MOV A,#0FFH ;赋初值
CLR C
MOV R2,#8
LOOP:RRC A ; 带进位右移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP
MOV R2,#7
LOOP1:RLC A ; 带进位左移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP1
JMP START
DELAY:MOV R3,#20 ; 延时0.2秒
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END

㈤ 单片机流水灯汇编程序

KEYFX EQU P1.0 ;方向控制键
KEYKM EQU P1.1 ;速度控制键
FX BIT 00H ;方向标志
SPEED BIT 01H ;速度标志
ORG 0000H
LJMP MAIN
ORG 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 R2,#2
MOV A,#0FEH ;灯初始化
CLR FX
CLR SPEED
MOV SPEED,#2
LOOP:
JB KEYFX,LOOP1 ;方向键按下否
JNB KEYFX,$
CPL FX
SJMP LOOP
LOOP1:
JB KEYKM,LOOP ;速度键按下否
JNB KEYKM,$
CPL SPEED
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
JB FX,T001
RL A ;左循环
SJMP T002
T001:
RR A ;右循环
T002:
DJNZ R2,T0E
JB SPEED,T003
MOV R2,#2 ;快速
SJMP T0E
T003:
MOV R2,#10 ;慢速
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

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

流水灯模块接在单片机的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高、返回到开始、程序结束。

㈦ 汇编语言 51单片机,外部中断控制流水灯

ORG 0000H ; 试试这个 流水灯的编码随便改

LJMP MAIN

ORG 0003H

LJMP LINT0

ORG 000BH

LJMP LT0ZD

ORG 0030H

MAIN: MOV SP, #60H

MOV TMOD, #00H

MOV IE, #81H

MOV TL0, #(8192-2500)MOD 32

MOV TH0, #(8192-2500)/32

SETB TR0

MOV R5, #20

LOOP: MOV R3, #48

CJNE R3, #0, $

LJMP LOOP


LINT0: CPL ET0

RETI


LT0ZD: PUSH PSW ; T0 中断

PUSH ACC

MOV TL0, #(8192-2500)MOD 32

MOV TH0, #(8192-2500)/32

DJNZ R5, LT0Z2

MOV R5, #30 ; 可以调整速度

MOV A, R3

LCALL LSDIN

MOV P1, A

DEC R3

LT0Z2: POP ACC

POP PSW

RETI


LSDIN: MOVC A,@A+PC

RET


LSDBM: DB 11111110B,11111101B,11111011B,11110111B ; 流水灯的编码1

DB 11101111B,11011111B,10111111B,01111111B

DB 01111111B,10111111B,11011111B,11101111B

DB 11110111B,11111011B,11111101B,11111110B

DB 11111100B,11111001B,11110011B,11100111B ; 流水灯的编码2

DB 11001111B,10011111B,00111111B,01111110B

DB 01111110B,00111111B,10011111B,11001111B

DB 11100111B,11110011B,11111001B,11111100B

DB 11111000B,11110001B,11100011B,11000111B ; 流水灯的编码3

DB 10001111B,00011111B,00111110B,01111100B

DB 01111100B,00111110B,00011111B,10001111B

DB 11000111B,11100011B,11110001B,11111000B

END

㈧ 流水灯汇编语言程序

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

㈨ 急!急!急!单片机流水灯汇编语言程序

5只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。

;用最直接的方式实现流水灯

ORG 0000H
START:MOV P1,#01111111B ;最下面的LED点亮
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
MOV P1,#10111111B ;最下面第二个的LED点亮
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略)
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11101111B
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11110111B
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11111011B
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;完成第一次循环点亮,延时约0.25秒
AJMP START ;反复循环

;延时子程序,12M晶振延时约250毫秒
DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms
PUSH PSW ;现场保护指令(有时可以不加)
MOV R4,#240
L3: MOV R2 ,#00H
L1: MOV R3 ,#00H
L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)
DJNZ R2 ,L1 ; 中层循环:256次
DJNZ R4 ,L3 ;外层循环:240次
POP PSW
RET
END

随便改了一个

㈩ 用汇编语言编流水灯,有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

热点内容
体检中心的无线网密码多少 发布:2025-02-09 05:40:15 浏览:515
脚本语言是编译还是解释 发布:2025-02-09 05:30:24 浏览:642
天墓密码结局是什么 发布:2025-02-09 05:25:52 浏览:437
如何找回因特网帐号的密码 发布:2025-02-09 05:20:05 浏览:373
树莓派源码 发布:2025-02-09 05:07:00 浏览:651
安卓手机为什么搜不到懂球帝 发布:2025-02-09 05:04:42 浏览:817
生命密码解读走什么 发布:2025-02-09 04:55:51 浏览:279
python常用正则表达式 发布:2025-02-09 04:42:53 浏览:179
机器人编程培训哪家好 发布:2025-02-09 04:37:44 浏览:308
上海怎么学习java 发布:2025-02-09 04:26:39 浏览:23