导航:首页 > 编程语言 > 汇编语言流水灯程序

汇编语言流水灯程序

发布时间:2024-05-10 10:54:15

A. 单片机汇编语言流水灯程序延时0.5秒 一共四个灯循环

四个灯假设接在P1.0~P1.3上。晶振采用12M,这里用定时器中断方式实现4个灯的流水灯效果,程序如下:
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,#0

MOV A,#0FEH

MOV P1,A

SJMP $

T0ISR:
CLR TR0

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

SETB TR0

INC R2
CJNE R2,#10,T0E //10次定时0.5秒
MOV R2,#0
RL A
JNB ACC.4,T01
MOV P1,A
RETI
T01:
MOV A,#0FEH
T0E:
RETI
END

B. 汇编语言 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

C. 流水灯汇编语言程序

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

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

E. 单片机汇编语言按键控制流水灯,两个开关k1,k2。实现功能按下k1,流水灯左移动,按下k2,流水灯右移动。

K1EQUP1.0
K2EQUP1.1
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVA,#0FEH
CLR00H
CLR01H
LOOP:
JBK1,LOOP1
SETB00H
CLR01H
SJMPLOOP
LOOP1:
JBK2,LOOP2
SETB01H
CLR00H
LOOP2:
JB01H,LOOP3
JB00H,LOOP4
SJMPMAIN
LOOP3:
MOVP0,A
RRA
LCALLDELAY
SJMPLOOP
LOOP4:
MOVP0,A
RLA
LCALLDELAY
SJMPLOOP
DELAY:
MOVR2,#200
DLY:
MOVR3,#250
DJNZR3,$
DJNZR2,DLY
RET
END

阅读全文

与汇编语言流水灯程序相关的资料

热点内容
iphone6splus16g 浏览:225
oppo如何开4g网络 浏览:267
java不安全 浏览:423
导入配置文件数据失败 浏览:941
linux运行class 浏览:227
如何做好群管理员文件 浏览:979
linuxvim循环搜索文件 浏览:147
为什么讲女孩子更应该学习编程 浏览:742
云数据备份不了了是怎么回事 浏览:110
数据说话的股票有哪些股 浏览:612
一加照片保存在哪个文件夹 浏览:710
联通省公司大数据 浏览:300
三星wifi管理员密码 浏览:213
怎样查看优盘正在被哪个文件使用 浏览:9
微信里传的文件为什么会过期 浏览:248
遇到不正规的网络平台怎么办 浏览:979
win10能装天正吗 浏览:105
小米2升级后怎么恢复原状 浏览:465
dnf90版本85史诗套 浏览:941
法兰的dn是什么数据 浏览:954

友情链接