|
Re: 关于交通灯的设计(初学者的迷茫)
如果先根据各个灯的亮灭情况画出各个灯的"时序图",这样对比着六个灯的时序图进行编程,一目了然,当然就很容易了^_^
设南北方向的灯为R1Y1G1,东西方向的灯为R2Y2G2
P2.0-R2
P2.1-Y2
P2.2-G2
P2.5-G1
P2.6-Y1
P2.7-R1
汇编程序:
1 ORG 00H
2 LOOP:MOV P2,#01111011B
3 MOV R5,#250
4 ACALL DELAY
5 MOV R2,#00000100B
6 ACALL BLINK
7 MOV P2,#11111101B
8 MOV R5,#50
9 ACALL DELAY
10 MOV P2,#11011110B
11 MOV R5,#250
12 ACALL DELAY
13 MOV R2,#00100000B
14 ACALL BLINK
15 MOV P2,#10111110B
16 MOV R5,#50
17 ACALL DELAY
18 AJMP LOOP
19 BLINK:MOV R3,#10
20 MOV A,P2
21 B1:XRL A,R2
22 MOV P2,A
23 MOV R5,#3
24 ACALL DELAY
25 DJNZ R3,B1
26 RET
27 DELAY:MOV R7,#28H
28 D1:MOV R6,#0F9H
29 DJNZ R6,$
30 DJNZ R7,D1
31 DJNZ R5,DELAY
32 RET
33 END
程序说明:
2-4 R1G2亮5s
5-6 G2闪烁0.6s
7-9 R1亮,G2灭,且Y2亮1s
10-12 R2及G1亮5s
13-14 G1闪烁0.6s
15-17 R2亮,G1灭,且Y1亮1s
19-26 闪烁子程序,使P2口的LED亮灭5次,亮灭的LED由R2的内容决定,亮灭时间间隔为60ms
27-33 延迟子程序,延迟时间=R5*20ms
参考一下啦@ |
|