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 00H ;起始地址

START:

MOV A,#0FFH ;累加器ACC中8位全置1,发光二极管全熄灭

CLR C ;进位CY被情0,CY=0

MOV R1,#8 ;R1=8,循环8次(左移8次),用R1作计数器

LEFT:

RLC A ;把CY在累加器中从右向左轮换一位,对照矩阵理解

MOV P0,A ;输出至P0口

CALL DELAY ;延时子程序,延时200MS

DJNZ R1,LEFT ;R1减1,如果不为0跳回LEFT继续执行,否则执行下一行

MOV R2,#7 ;R2=7,为向右“流动”设置次数

RIGHT:

RRC A

MOV P0,A

CALL DELAY

DJNZ R2,RIGHT ;是否右移了7位,如果不是则跳回RIGHT继续执行

JMP START ;跳回一开始,重复执行该流水灯程序

DELAY: ;延时200MS的子程序

MOV R3,#20

D1:

MOV R4,#20

D2:

MOV R5,#248

DJNZ R5,$

DJNZ R4,D2

DJNZ R3,D1

RET

END

没明白震荡什么意思 希望对你有用

ORG 0000H

LJMP MAIN

ORG 001BH

LJMP T1ISR

ORG 0030H

MAIN:

    MOV TMOD,#10H

    MOV TH1,#HIGH(65536-50000)

    MOV TL1,#LOW(65536-50000)

    SETB TR1

    SETB ET1

    SETB EA

    MOV A,#0FEH

    MOV P1,A

    MOV R2,#5

    SJMP $

T1ISR:

    CLR TR1

    MOV TH1,#HIGH(65536-50000)

    MOV TL1,#LOW(65536-50000)

    SETB TR1

    DJNZ R2,T1E

    MOV R2,#5

    RL A

    MOV P1,A

T1E:

    RETI

    END

以上就是关于51单片机 跑马灯程序全部的内容,包括:51单片机 跑马灯程序、单片机 跑马灯 左右 震荡 程序 汇编语言 谢谢 急用、单片机汇编语言跑马灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9281193.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存