永发信息网

单片机实验流水灯

答案:2  悬赏:0  手机版
解决时间 2021-05-03 14:29
  • 提问者网友:皆是孤独
  • 2021-05-02 16:53
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要轮流显示,如何实现?程序如何修改?
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 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 思路就是:让一个端口输出高电平,其余低电平,然后用一个循环使其余端口轮流为高电平

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯