单片机跑马灯汇编程序详细解释

单片机跑马灯汇编程序详细解释,第1张

ORG

0000H

SJMP

START

ORG

0030H

START:

MOV

A,

#0FEH

先让第一个发光二极管点亮

LOOP:

MOV

P1,

A

从P1口输出到发册凳光二极管

MOV

R1,

#100

延时0.5秒

DEL1:

MOV

R2,

#200

DEL2:

MOV

R3,

#7

DEL3:

DJNZ

R3,

DEL3

DJNZ

R2,

DEL2

DJNZ

R1,

DEL1

RL

A

左移一位,点亮下州橡旅一个发光二极管

LJMP

LOOP

END

这个是我写的跑马灯程序,没如返有左右振荡,自己参考参考加上去吧

我们要用到2X5的独立键盘控制的,可是我是新手不懂搜轮裂 能给我一个程序不??

呵呵,下面就是程序,你试试看桐基就知道了。

--------------------------

你的程序,有三种流水灯的模式,就是按键功能,检测不出来。

电路图,不清楚,看个大概。

现在是:K1、K2分别按下,世闭各显示一种模式,

两个键盘都不按,显示第三种模式。

你原来只是在起动的时候,按键才管用,要想更换模式,必须重新起动。

现在增加了三行:“LJMP START 本行可删除”,就可以在运行期间,更换模式。.

ORG 0000H

START:

MOV P1, #255

CLR P1.6

MOV P2, #0

SETB P2.1

SETB P2.3

JNB P1.0, LOOPB

JNB P1.1, LOOPC

MOV A,#01H

LOOPA:MOV R0,#7

LOOPAL:

MOV P0, A

RL A

LCALL DELAY

DJNZ R0, LOOPAL

MOV R0,#7

LOOPAR:

MOV P0, A

RR A

LCALL DELAY

DJNZ R0, LOOPAR

LJMP START 本行可删除.

LJMP LOOPA

LOOPB:MOV A,#03H

LOOPBL:

MOV P0,A

RL A

LCALL DELAY

JNB ACC.7, LOOPBL

LOOPBR:

MOV P0, A

RR A

LCALL DELAY

JNB ACC.0,LOOPBR

LJMP START 本行可删除.

LJMP LOOPB

LOOPC:MOV R0,#3

MOV A,#01H

LOOPCL:

MOV P0, A

RL A

RL A

LCALL DELAY

DJNZ R0,LOOPCL

MOV R0, #3

RL A

LOOPCR:

MOV P0, A

RR A

RR A

LCALL DELAY

DJNZ R0, LOOPCR

LJMP START 本行可删除.

LJMP LOOPC

DELAY:MOV R4,#2

L3:MOV R2,#250

L1:MOV R3,#250

L2:DJNZ R3,L2

DJNZ R2,L1

DJNZ R4,L3

RET

END

本程序在PROTEUS中仿真调试通过。

ORG

0000H

LJMP

MAIN

转主程序

ORG

001BH

LJMP

IT0P

转T1中断服务程序

ORG

1000H

主程序入口

MAIN:

LTB2:

MOV

DPTR,#TAB2

把数据指岩让针移到TAB2位址

CLR

P1.3

猜测是led总开关

MOV

R1,#00H

清空R1

MOV

A,#00H

清空A

DEL1:

MOV

SP,#60H

;设置堆栈指耐茄针

MOV

B,#0AH

;设置中断执行次数

MOV

TMOD,#10H

;选择T1,定时模式,工作方式1

MOV

TL1,#0B0H

;设置低字节计数初值

MOV

TH1,#3CH

;设置高字节计数初值

SETB

TR1

;启动T1开始计时

SETB

ET1

;T1中断允许

SETB

EA

;开全局中断

HERE1:

SJMP

HERE1

;等待

IT0P:

MOV

TL0,#0B0H

MOV

TH0,#3CH

DJNZ

B,LOOP

;非零跳转,在本程序中就是结束

MOV

B,#0AH

;上一句等于零,执行这一句,设置执行次数

MOVC

A,@A+DPTR

;取出偏移后的数据到寄存器A中

MOV

P0,A

;输出

INC

R1

;偏移量自加1

CJNE

R1,#10H,LOOP2

;判断是否全部取出,不相等跳转

MOV

R1,#00H

;上一句相等就清空R1

LOOP2:

MOV

A,R1

;把偏移量赋昌枣察值给A

LOOP:

RETI

;中断结束,返回

TAB2:

DB

7FH,3FH,1FH,0FH,07H,03H,01H,00H

DB

80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH

END

;谢谢观赏

12MHz晶振

定时器50ms一次中断

led500ms亮或灭1个

多看书,多看数据手册对你有好处!


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存
{label} {label} {label}