51单片机 跑马灯程序

51单片机 跑马灯程序,第1张

org 0000h

jmp start

org 0030h

start:

mov p0,#11111110b  ;  此时第一个灯亮

call t10s

mov p0,#11111101b  ;此时第二个灯亮

call t10s

mov p0,#11111011b

call t10s

mov p0,#11110111b

call t10s

mov p0,#11101111b

call t10s

mov p0,#11011111b

call t10s

jmp start        ;此处跳到开始 即 循环

;延时子程序10秒=250usX2X200X100

t10s:mov r5,#100

lpr5:mov r6,#200

lpr6:mov r7,#250

djnz r7,$

djnz r6,lpr6

djnz r5,lpr5

ret

end

把灯的正极接电源正极 即vcc 负极分别接p00-p05

此时  给p0  送0灯就亮 1灯就不亮

程序已经过调试 可用

仿真如下:

ORG

0000H

LJMP

MAIN

;转主程序

ORG

001BH

LJMP

IT0P

;转T1中断服务程序

ORG

1000H

;主程序入口

MAIN:

LTB2:

MOV

DPTR,#TAB2

;把数据指针移到TAB2位址

CLR

P13

;猜测是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个

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

就是所谓的流水灯,可以说是单片机中最简单的了,直接用一组总线控制(P0,P1,P2,P3口都可以),控制相应的LED的端口的高低电平就可以(至于是高电平还是低电平就要看你的硬件电路了)

以上就是关于51单片机 跑马灯程序全部的内容,包括:51单片机 跑马灯程序、求一个单片机大神,给我解释下跑马灯程序的注释、单片机中走马灯如何编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10044920.html

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

发表评论

登录后才能评论

评论列表(0条)

保存