|
如題你們要的匯編版本
幾年沒(méi)碰過(guò)匯編了,有些生疏。寫(xiě)了三種形式的,程序有不足的地方請(qǐng)見(jiàn)諒,話也不多說(shuō)
直接 ~giao 。。。〔粚(duì) 直接上程序、仿真
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
2.png (84.26 KB, 下載次數(shù): 65)
下載附件
2020-6-26 19:49 上傳
1.png (157.93 KB, 下載次數(shù): 69)
下載附件
2020-6-26 19:49 上傳
單片機(jī)源程序如下:
- /**************************第一種**************************************************
- RED_A EQU P0.0
- YELLO_A EQU P0.1
- GREE_A EQU P0.2
- RED_B EQU P0.3
- YELLO_B EQU P0.4
- GREE_B EQU P0.5
- ORG 0000H
- AJMP START
- ORG 0030H
- AJMP MAIN
- START:MOV P0,#0FFH
- CLR RED_A //東西 南北方向紅燈亮
- CLR RED_B
- LCALL DELAY2S
- MOV P0,#0F7H //消影
- MAIN:MOV R3,#3 //閃爍次數(shù)設(shè)置為3
-
- LOOP1:CLR GREE_A //東西方向綠燈亮
- CLR RED_B //南北方向紅燈亮
- LCALL DELAY10S
- MOV P0,#0F5H
- TOP1:CLR YELLO_A //東西方向黃燈亮
- LCALL DELAY100MS //調(diào)用100ms延時(shí)
- SETB YELLO_A //東西方向黃燈滅
- LCALL DELAY100MS
- DJNZ R3,TOP1
- MOV P0,#0DEH //南北綠燈亮 東西紅燈亮
- LOOP2:CLR GREE_B //南北方向綠燈亮
- CLR RED_A //東西方向紅燈亮
- LCALL DELAY10S
- MOV R3,#3 //賦值南北方向黃燈閃爍次數(shù)
- MOV P0,#0FEH
- TOP2:CLR YELLO_B //南北方向黃燈亮
- LCALL DELAY100MS //調(diào)用延時(shí)
- SETB YELLO_B //南北方向黃燈滅
- LCALL DELAY100MS //
- DJNZ R3,TOP2 //R3減1若不等于0跳轉(zhuǎn)至TOP2處執(zhí)行,執(zhí)行3次從而達(dá)到閃爍
- //R3減1等于0則順序執(zhí)行
- MOV P0,#0F7H //東西方向綠燈 南北方向紅燈
- LJMP MAIN //跳轉(zhuǎn)至MAIN處循環(huán)執(zhí)行
- DELAY100MS:MOV R5,#4 //定時(shí)100ms @11.0592MHz
- MOV R6,#93
- MOV R7,#152
- NEXT:DJNZ R7,NEXT
- DJNZ R6,NEXT
- DJNZ R5,NEXT
- RET
- DELAY2S:MOV R7,#20 //延時(shí)2S子程序
- MOV R6,#200
- MOV R5,#248
- B1:DJNZ R5,B1
- DJNZ R6,B1
- DJNZ R7,B1
- RET
- DELAY10S:MOV R5,#81 //延時(shí)10S
- MOV R6,#47
- MOV R7,#121
- D1:DJNZ R7,D1
- DJNZ R6,D1
- DJNZ R5,D1
- RET
- END
- ****************************************************************************************/
-
- /*****************************第二種********************/
- ORG 0100H //預(yù)留空間
- START:MOV A, #0F6H //初始化
- MOV P0, A //東西南北全紅(P0口地址)
- LCALL DELAY //鑒于空間的大小,這里選用LCALL作為調(diào)用函數(shù)
- LOOP:MOV P0,#0F3H //東西綠燈亮 南北紅的亮
- ACALL DTIME //進(jìn)入定時(shí)器中斷
- MOV R0,#3 //閃爍次數(shù) 3
- LOOP1:MOV P0,#0F5H //東西黃燈閃爍,南北紅燈
- ACALL DTIME1 // ||
- MOV P0,#0F7H // ||
- ACALL DTIME1 //
- DJNZ R0,LOOP1 //判斷是否閃爍了3次,滿足則執(zhí)行下一條指令,反之回到LOOP1處繼續(xù)執(zhí)行
- MOV P0,#0DEH //南北綠燈,東西紅燈
- ACALL DTIME
-
- MOV R0,#3
- LOOP2:MOV P0,#0EEH //南北黃燈閃,東西紅燈
- ACALL DTIME1
- MOV P0,#0FEH
- ACALL DTIME1
- DJNZ R0,LOOP2
- JMP LOOP
-
- DTIME1:MOV TMOD,#01H //定時(shí)器T0工作在方式1 @11.0592MHz
- MOV TH0,#3CH //定時(shí)器高四位
- MOV TL0,#0B0H //定時(shí)器低四位
- MOV R6,#10 //定時(shí)0.5S R6賦值20表示1S 10*50ms=500ms=0.5s
- SETB TR0 //啟動(dòng)定時(shí)0 20*50ms=1000ms=1s
- WM:JBC TF0,NEXT1 //判斷中斷溢出位為1則清零,并跳轉(zhuǎn)到NEXT1
- AJMP WM
- NEXT1:DJNZ R6,NEXT2 //定時(shí)0.5S,時(shí)間到則返回進(jìn)入前位置繼續(xù)執(zhí)行
- RET
- NEXT2:MOV TH0,#3CH //重裝定時(shí)器初值
- MOV TL0,#0B0H
- AJMP WM
- RET
- DTIME:MOV TMOD,#01H //定時(shí)器T0工作在方式1
- MOV TH0,#3CH //定時(shí)初值
- MOV TL0,#0B0H //定時(shí)時(shí)間 50ms
- MOV R6,#20 //1s時(shí)間到
- MOV R7,#2 //為了方便調(diào)試 綠燈亮2S 35s定時(shí)則為MOV R7,#35
- SETB TR0 //20*500ms*2=2s
- LM:JBC TF0,NEXT //判斷中斷溢出位為1則清零,并跳轉(zhuǎn)到NEXT
- AJMP LM //檢測(cè)50ms是否到
- NEXT: DJNZ R6,NEXT4
- DJNZ R7,NEXT3
- AJMP JS
- NEXT3:MOV R6,#20 //重裝定時(shí)器初值
- NEXT4:MOV TH0,#3CH
- MOV TL0,#0B0H
- AJMP LM //檢測(cè)50ms是否到
- JS:RET
- DELAY: MOV R7,#50 //延時(shí)5S子程序
- DL1:MOV R6,#200
- DL2:MOV R5,#248
- DJNZ R5,$
- DJNZ R6,DL2
- DJNZ R7,DL1
- RET
- END
- /**************************第二種*****************************************************
- ORG 0000H
- LJMP START
- ORG 0030H
- START:
- MOV A, #0F6H
- MOV P0, A ;東西南北全紅(P0口地址)
- LCALL DELAY ;鑒于空間的大小,這里選用LCALL作為調(diào)用函數(shù)
- MAIN:
- MOV A,#11110011B ;東西車道綠燈亮,通行;南北車道紅燈亮,禁止通行
- MOV P0, A ;CPU中斷
- LCALL DELAY2 ;調(diào)用延時(shí)子程序
- MOV R1,#3
- LOOP1:
- MOV A,#11110101B ;東西車道黃燈閃爍,南北車道紅燈亮,禁止通行
- MOV P0, A
- LCALL DELAY1 ;CPU中斷,調(diào)用函數(shù)
- MOV A,#11110111B
- MOV P0, A
- LCALL DELAY1
- DJNZ R1,LOOP1
- MOV A,#11011110B ;東西車道紅燈亮,禁止通行,南北車道綠燈亮,通行
- MOV P0, A
- LCALL DELAY2
- MOV R2,#3
- LOOP2:
- MOV A,#11101110B ;東西車道紅燈亮,禁止通行,南北車道黃燈閃爍
- MOV P0, A
- LCALL DELAY1
- MOV A,#11111110B
- MOV P0, A
- LCALL DELAY1
- DJNZ R2,LOOP2
- LJMP MAIN ;跳轉(zhuǎn)程序
- DELAY: MOV R7,#20 ;延時(shí)2S子程序
- DL1:MOV R6,#200
- DL2:MOV R5,#248
- DJNZ R5,$
- DJNZ R6,DL2
- DJNZ R7,DL1
- RET
- DELAY1: MOV R5, #3 ;黃燈閃爍3次程序
- Y1: MOV R6, #200
- Y2: MOV R7, #248
- X1: DJNZ R7, X1
- DJNZ R6, Y2
- DJNZ R5, Y1
- RET
- DELAY2: MOV R5, #50 ;綠燈通行延時(shí)程序
- D1: MOV R6, #200
- D2: MOV R7, #248
- D3:
- DJNZ R7, D3
- DJNZ R6, D2
- DJNZ R5, D1
- RET
- END
- */
復(fù)制代碼
3.png (23.65 KB, 下載次數(shù): 61)
下載附件
2020-6-26 19:50 上傳
所有資料51hei提供下載:
交通燈.7z
(132.36 KB, 下載次數(shù): 46)
2020-6-28 04:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|