一個有多功能的跑馬燈
- ORG 0000H
- LJMP MAIN1
- ORG 0040H
- MAIN1: MOV A,#0001H
- MOV 10H,#0001H
- MOV 40H,#0003H
- MOV 50H,#0007H
- MOV 60H,#000FH
- SETB EX0
- SETB ET0
- SETB EA
- MOV R0,#30H
- MOV R1,#70H
- MOV 30H,#00H
- MOV R5,#00H
- MOV R6,#00H
-
- MAIN2:
-
- MOV @R0,P0
- ANL 30H,#0003H
- CJNE R6,#0001H,LOOP2
- LOOP1:MOV A,10H
- CJNE @R0,#0003H,CC11
- MOV P2,A ;將控制字送端口
- RL A ;控制字循環(huán)左移
- MOV 10H,A
- LCALL DELAY ;延時
- LJMP MAIN2
- LOOP2: MOV A,10H
- CJNE @R0,#0003H,CC21
- MOV P2,A
- RR A
- MOV 10H,A
- LCALL DELAY
- LJMP MAIN2
- CC11:
- MOV A,40H
- CJNE @R0,#0002H,CC12
- MOV P2,A
- RL A
- MOV 40H,A
- LCALL DELAY ;延時
- LJMP MAIN2
- CC12:
- MOV A,50H
- CJNE @R0,#0001H,CC13
- MOV P2,A
- RL A
- MOV 50H,A
- LCALL DELAY ;延時
- LJMP MAIN2
- CC13:
- MOV A,60H
- MOV P2,A
- RL A
- MOV 60H,A
- LCALL DELAY ;延時
- LJMP MAIN2
- CC21:
- MOV A,40H
- CJNE @R0,#0002H,CC22
- MOV P2,A
- RR A
- MOV 40H,A
- LCALL DELAY
- LJMP MAIN2
- CC22: MOV A,50H
- CJNE @R0,#0001H,CC23
- MOV P2,A
- RR A
- MOV 50H,A
- LCALL DELAY
- LJMP MAIN2
- CC23: MOV A,60H
- MOV P2,A
- RR A
- MOV 60H,A
- LCALL DELAY ;延時
- LJMP MAIN2
- DELAY: ;延時大概1秒
- MOV @R1,P0
- ANL 70H,#000CH
- CJNE @R1,#000CH,DD1
- MOV R2,#10
- DLY1:
- MOV R3,#200
- DLY2:
- MOV R4,#250
- DJNZ R4,$
- DJNZ R3,DLY2
- DJNZ R2,DLY1
- RET
- DD1:CJNE @R1,#0008H,DD2
- MOV R2,#5
- DLY3:
- MOV R3,#100
- DLY4:
- MOV R4,#250
- DJNZ R4,$
- DJNZ R3,DLY4
- DJNZ R2,DLY3
- RET
- DD2: CJNE @R1,#0004H,DD3
- MOV R2,#5
- DLY5:
- MOV R3,#100
- DLY6:
- MOV R4,#100
- DJNZ R4,$
- DJNZ R3,DLY6
- DJNZ R2,DLY5
- RET
- DD3:
- MOV R2,#20
- DLY7:
- MOV R3,#250
- DLY8:
- MOV R4,#250
- DJNZ R4,$
- DJNZ R3,DLY8
- DJNZ R2,DLY7
- RET
-
- END
復制代碼
|