您現(xiàn)在的位置是:首頁 >動態(tài) > 2024-03-01 15:10:36 來源:
交通燈程序設(shè)計(jì)(交通燈程序)
大家好,我是小夏,我來為大家解答以上問題。交通燈程序設(shè)計(jì),交通燈程序很多人還不知道,現(xiàn)在讓我們一起來看看吧!
1、這個是我以前單片機(jī)課程設(shè)計(jì)上我做的程序,希望對你有一定幫助。
2、要求:根據(jù)TD-PIT-B實(shí)驗(yàn)箱現(xiàn)有的實(shí)驗(yàn)電路,設(shè)計(jì)電路并編寫程序使六個燈按照交通燈變化規(guī)律亮、滅或者閃爍。十字路口交通燈的變化規(guī)律要求:
3、(6) 南北路口的綠燈,東西路口的紅燈同時亮30秒。
4、(7) 南北路口的黃燈閃爍3次,同時東西路口的紅燈繼續(xù)亮。
5、(8) 南北路口的紅燈,東西路口的綠燈同時亮30秒。
6、(9) 南北路口的紅燈繼續(xù)亮,同時東西路口的黃燈閃爍3次。
7、(10) 轉(zhuǎn)(11)重復(fù)。
8、(
9、當(dāng)時我們采用的只是二極管p7~p0
10、東西交通燈我采用的是P7P6P5分別代表紅黃綠燈
11、 南北交通燈我采用的是P2P1P0分別代表紅黃綠燈,中間的P3P4我空起沒用)
12、LED方面的自己去摸索哈!
13、實(shí)驗(yàn)代碼如下:
14、M8255COUNTB EQU 0D061H
15、M8255COUNTC EQU 0D062H
16、M8255MODE EQU 0D063H
17、M8254COUNT0 EQU 0D040H
18、M8254MODE EQU 0D043H
19、CODE SEGMENT
20、 ASSUME CS:CODE
21、START:MOV DX,M8255MODE ;初始化8255
22、 MOV AL,81H ; 工作方式是B口輸出,方式0
23、 OUT DX,AL
24、 MOV DX,M8255COUNTB
25、 MOV AL,00H ; 初始狀態(tài),燈全亮
26、 OUT DX,AL
27、 CALL DELAY
28、 CALL L00 ;第一個狀態(tài),即南北綠燈亮,東西紅燈亮
29、 CALL L01 ;第二個狀態(tài),即南北黃燈閃,東西紅燈亮
30、 CALL L02 ;第三個狀態(tài),即南北紅燈亮,東西綠燈亮
31、 CALL L03 ;第四個狀態(tài),即南北紅燈亮,東西黃燈閃
32、 CALL L04 ;返回狀態(tài)一
33、 MOV AX,4C00H ;結(jié)束返回DOS
34、 INT 21H
35、L00 PROC NEAR
36、 MOV DX,M8255COUNTB
37、 MOV AL,10000001B ;第一個狀態(tài),即南北綠燈亮,東西紅燈亮
38、 OUT DX,AL
39、 CALL DELAY
40、 CALL GGG ;延時30S
41、RET ;返回
42、L00 ENDP
43、L01 PROC NEAR ;第二個狀態(tài),即南北黃燈閃,東西紅燈亮
44、 PUSH CX
45、 MOV CX,3
46、STA1:MOV DX,M8255COUNTB
47、 MOV AL,10000010B ;南北黃燈亮,東西紅燈亮
48、 OUT DX,AL
49、 CALL DELAY
50、 CALL YYY ;延時1S
51、 MOV DX,M8255COUNTB
52、 MOV AL,10000000B ;南北黃燈滅,東西紅燈亮
53、 OUT DX,AL
54、 CALL DELAY
55、 CALL YYY
56、 LOOP STA1
57、 POP CX
58、 RET
59、L01 ENDP
60、L02 PROC NEAR ; 第三個狀態(tài)
61、 MOV DX,M8255COUNTB
62、 MOV AL,00100100B ; 即南北紅燈亮,東西綠燈亮
63、 OUT DX,AL
64、 CALL DELAY
65、 CALL GGG ;延時30S
66、RET
67、L02 ENDP
68、L03 PROC NEAR ;第四個狀態(tài),即南北紅燈亮,東西黃燈閃
69、 PUSH CX
70、 MOV CX,3
71、STA3:MOV DX,M8255COUNTB
72、 MOV AL,01000100B ; 南北紅燈亮,東西黃燈亮
73、 OUT DX,AL
74、 CALL DELAY
75、 CALL YYY
76、 MOV DX,M8255COUNTB
77、 MOV AL,00000100B ;南北紅燈亮,東西黃燈滅
78、 OUT DX,AL
79、 CALL DELAY
80、 CALL YYY
81、 LOOP STA3 ;循環(huán)STA3
82、 POP CX
83、 RET
84、L03 ENDP
85、L04 PROC NEAR ;回狀態(tài)一
86、 MOV DX,M8255COUNTB
87、 MOV AL,10000001B ;南北綠燈亮,東西紅燈亮
88、 OUT DX,AL
89、 CALL DELAY
90、RET
91、L04 ENDP
92、DELAY PROC NEAR
93、 PUSH CX
94、 MOV CX,0FFH
95、L3:LOOP L3
96、 POP CX
97、 RET
98、DELAY ENDP
99、YYY PROC NEAR
100、 MOV DX,M8254MODE
101、 MOV AL,15H ;采用0號計(jì)數(shù)器,寫入低8位,高8位置0
102、 OUT DX,AL
103、 MOV DX,M8254COUNT0
104、 MOV AL,10H
105、 OUT DX,AL
106、L2: CALL BREAK
107、 MOV DX,M8255COUNTC
108、 IN AL,DX
109、 TEST AL,02H ;測試PC1位
110、 JNZ L2
111、 RET
112、YYY ENDP
113、GGG PROC NEAR
114、 MOV DX,M8254MODE
115、 MOV AL,25H ;寫入高8位,低8位置0
116、 OUT DX,AL
117、 MOV DX,M8254COUNT0
118、 MOV AL,03H ; 計(jì)數(shù)時間30s
119、 OUT DX,AL
120、L1: CALL BREAK
121、 MOV DX,M8255COUNTC
122、 IN AL,DX
123、 TEST AL,02H ;測試PC1位
124、 JNZ L1
125、 RET
126、GGG ENDP
127、BREAK PROC NEAR ;防止進(jìn)入死循環(huán)
128、 MOV AH,06H
129、 MOV DL,0FFH
130、 INT 21H
131、 JE RETURN
132、RETURN: RET
133、BREAK ENDP
134、CODE ENDS
135、 END START
本文到此講解完畢了,希望對大家有幫助。