ORG OOOOH
LJMP MAIN
ORG 1000H
MAIN:MOV A,#OFEH
AGAIN:MOV P1,A
RL A
LCALL DELAY
SJMP AGAIN
DELAY:MOV R6,#OFFH
L1: MOV R7,#OFFH
DJNZ R7,$
DJNZ R6,L1
RET
END
问题是:如果有16个LED要轮流显示,如何实现?程序如何修改?
单片机实验流水灯
答案:2 悬赏:0 手机版
解决时间 2021-05-03 14:29
- 提问者网友:皆是孤独
- 2021-05-02 16:53
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-05-02 18:05
ORG OOOOH
LJMP MAIN
ORG 1000H
MAIN:MOV A,#OFEH
AGAIN:MOV P1,A
RL A
LCALL DELAY
JNB P1.7,TWO//这里判断P1.7是否为低电平,如果是就转到TWO
SJMP AGAIN
TWO:MOV A,#OFFH
MOV P1,A
PP:MOV A,#OFEH
MOV P2,A
RL A
LCALL DELAY
JNB P2.7,MAIN//同理判断P2.7
SJMP PP
DELAY:MOV R6,#OFFH
L1: MOV R7,#OFFH
DJNZ R7,$
DJNZ R6,L1
RET
END
没有执行过,应该可行
讲下思路,P1,P2是接16个LED
就在P1最高位的灯亮时,这时转到TWO中执行,从P2的最低位开始,到最高位即P2.7为低电平时,等挻时完后又转回P1,如此循环(这里一开始P2端口不用都置1是因为单片机上电时P2端口都为高电平)
全部回答
- 1楼网友:廢物販賣機
- 2021-05-02 19:42
ORG OOOOH LJMP MAIN
ORG 1000H MAIN: MOV R0,#00H MOV DPTR,#TABLE
AGAIN: MOV A,R0 MOVC A,@A+DPTR MOV P1,A INC R0 MOV A,R0 MOVC A,@A+DPTR MOV P0,A INC R0 MOV A,R0 ANL R0,#1FH LCALL DELAY SJMP AGAIN
DELAY: MOV R6,#OFFH L1: MOV R7,#OFFH DJNZ R7,$ DJNZ R6,L1 RET
TABLE:DB 思路就是:让一个端口输出高电平,其余低电平,然后用一个循环使其余端口轮流为高电平
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯