
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单片机 跑马灯程序、单片机 跑马灯 左右 震荡 程序 汇编语言 谢谢 急用、单片机汇编语言跑马灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)