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

单片机跑马灯汇编程序详细解释,第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

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

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

                   LJMP     MAIN

                   ORG     0100H

MAIN:            JB          P0.7,MAIN  ;等待开始键按下

                   LCALL    YS             ;按键延时

                    JB         P0.7,MAIN

                    MOV     A,#7FH       ;是开始键按下  则跑马灯开始运行

LL:                 MOV     P1,A

                    LCALL    YS           ;显示延时

                    RR          A             ;循环右移一位

                    JB         P0.6, LL     ;没有按下停止键  则继续跑马

                    LCALL    YS            ;按键延时

                    JB          P0.6,LL         ;按下停止键 则停止跑马;否则继续跑马

                    MOV      A,#0FFH

                    MOV      P1,A

                    SJMP     MAIN            ;转到程序开始处,等待开始键的按下

YS:                MOV    R7,#150          ;延时子程序

YL:                MOV    R6,#200

YY:                NOP

                   DJNZ    R6,YY

                   DJNZ    R7,YL

                   RET

                   END

硬件接口电路如下:

      哈哈   还满意吗   就请给俺选择(满意选项)吧


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

原文地址: https://outofmemory.cn/yw/11407729.html

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

发表评论

登录后才能评论

评论列表(0条)

保存