实验难点:
把P1口当输入(第二个实验) ,延时循环
![](https://i-blog.csdnimg.cn/blog_migrate/d90af70f68c253b92f9f5a3c965a74ce.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bee683f959ded3c9d6635c7a8f27ab61.png)
1.流水灯:
ORG 0000H
LJMP START
ORG 0100H
MOV P1,#0FFH
MOV A,#00H
START:
MOV R1,#0FFH ;延时循环
LOOP1:
MOV R2,#0FFH
LOOP2:
DJNZ R2,LOOP2
DJNZ R1,LOOP1
MOV P1,A
CPL A ;取反
LJMP START
END
实现从同一方向不停开始的流水灯
ORG 0100H
MOV A,#001H
INIT:
MOV P1,A
RL A ;循环左移
MOV R0,#0FFH ;二重循环 LOOP1,LOOP2,延时
LOOP1:
MOV R1,#0FFH
LOOP2:
DJNZ R1,LOOP2
DJNZ R0,LOOP1
LJMP INIT
END
2.用P0高四位实现输入,用开关控制
ORG 0000H
LJMP INIT
ORG 0100H
INIT:
MOV P1,#00FH ;P0-P3初始要置1,这样P0-P3才能读入开关状态
MOV A,P1
SWAP A ;高低半字节交换
MOV P1,A
MOV R0,#0FFH ;延时
LOOP1:
MOV R1,#0FFH
LOOP2:
DJNZ R1,LOOP2
DJNZ R0,LOOP1
LJMP INIT
END
ORG 0000H
LJMP INIT
ORG 0100H
INIT:
MOV P0,#0F0H ;P4-P7初始要置1,这样P4-P7才能读入开关状态
MOV A,P0
SWAP A
MOV P0,A
MOV R0,#2000H ;延时的循环
LOOP1:
MOV R1,#2000H
LOOP2:
DJNZ R1,LOOP2
DJNZ R0,LOOP1
LJMP INIT
END
3.流水灯实现 从左往右,又从右往左
ORG 0100H
INIT:
MOV A,#128
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;从右往左
MOV R0,#008H
LOOP0:
MOV P1,A
RR A
MOV R2,#2000H ;二重循环,延时
LOOP2:
MOV R3,#2000H
LOOP3:
DJNZ R3,LOOP3
DJNZ R2,LOOP2
DJNZ R0,LOOP0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;从左往右
MOV R0,#008H
MOV A,#1
LOOP1:
MOV P1,A
RL A
MOV R2,#2000H ;二重循环,延时
LOOP4:
MOV R3,#2000H
LOOP5:
DJNZ R3,LOOP5
DJNZ R2,LOOP4
DJNZ R0,LOOP1
MOV R2,#2000H ;二重循环,延时,衔接部分
LOOP6:
MOV R3,#2000H
LOOP7:
DJNZ R3,LOOP7
DJNZ R2,LOOP6
LJMP INIT
END