求一个单片机大神,给我解释下跑马灯程序的注释

求一个单片机大神,给我解释下跑马灯程序的注释,第1张

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个

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

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

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存