標題: 基于51單片機的交通燈程序設計(匯編語言) [打印本頁]
作者: lalaYeol 時間: 2020-7-15 10:32
標題: 基于51單片機的交通燈程序設計(匯編語言)
原理圖如下:
交通燈原理圖.png (68.58 KB, 下載次數: 38)
下載附件
原理圖
2020-7-15 10:31 上傳
代碼如下:
采用匯編語言
ORG 0000H;偽指令、程序開始、中斷入口地址
LJMP MAIN
ORG 0003H
LJMP A1
ORG 000BH
LJMP A2
ORG 0013H
LJMP A3
ORG 1000H
;主程序
MAIN:MOV TMOD,#01H;設工作方式
MOV TL0,#0F0H;設初值,單片機晶振12M,定時10ms
MOV TH0,#0D8H
SETB EA;開放總中斷
SETB ET0;開放T0中斷
SETB TR0;啟動T0定時
SETB EX0;開放外中斷0
SETB EX1;開放外中斷1
SETB IT0;設外中斷0為邊沿觸發
CLR IT1;設外中斷1為低電平有效
SETB PT0
CYCLE: MOV R0,#60;南北方向綠燈顯示時間
MOV R1,#65;東西方向紅燈顯示時間
MOV R2,#25;為延時1秒而用
;東西紅燈南北綠燈
LOOP1:SETB P3.4
MOV P1,#01H
SETB P1.7;點亮紅燈
SETB P1.4;點亮綠燈
LCALL DISPLAY;調用顯示程序
DJNZ R2,LOOP1
MOV R2,#25
DEC R1
DJNZ R0,LOOP1
MOV R0,#3;南北方向黃燈顯示時間
;東西紅燈南北黃燈
LOOP2:MOV P1,#01H
SETB P1.7;點亮紅燈
SETB P1.3;點亮黃燈
LJ: LCALL DISPLAY;調用顯示程序
CPL P1.3
DJNZ R2,LJ
DEC R1
MOV R2,#25
DJNZ R0,LOOP2
MOV R0,#40;南北方向紅燈顯示時間
;東西紅燈南北紅燈
LOOP3:MOV P1, #01H
SETB P1.7;點亮紅燈
SETB P1.2;點亮紅燈
LCALL DISPLAY;調用顯示程序
DJNZ R2,LOOP3
MOV R2,#25
DEC R0
DJNZ R1,LOOP3
MOV R1,#35;東西方向綠燈顯示時間
;東西綠燈南北紅燈
LOOP4:MOV P1,#01H
SETB P1.5;點亮綠燈
SETB P1.2;點亮紅燈
LCALL DISPLAY ;調用顯示程序
DJNZ R2,LOOP4
MOV R2,#25
DEC R0
DJNZ R1,LOOP4
MOV R1,#3;東西方向黃燈顯示時間
;東西黃燈南北紅燈
LOOP5:MOV P1,#01H
SETB P1.6;點亮黃燈
SETB P1.2;點亮紅燈
LJ1:LCALL DISPLAY;調用顯示程序
CPL P1.6
DJNZ R2,LJ1
MOV R2,#25
DEC R0
DJNZ R1,LOOP5
LJMP CYCLE
;鍵盤中斷程序
A1:LCALL DISPLAY
JB P3.6,Q2
INC R1
INC R0
CJNE R1,#99,JIAO2
MOV R1,#00H
JIAO2:CJNE R0,#99,JIAO3
MOV R0,#00H
JIAO3:LCALL DISPLAY
JNB P1.0, Z2
Q2: JB P3.7,WAIT1
DEC R1
DEC R0
CJNE R1,#00H, JIAO
MOV R1,#99
JIAO: CJNE R0,#00H, JIAO1
MOV R0, #99
JIAO1:LCALL DISPLAY
WAIT1:JNB P1.0, Z2
WAIT: LJMP A1
Z2:RETI
;時間中斷程序
A2:MOV TL0,#0F0H;重新賦值
MOV TH0,#0D8H
CLR P3.4
RETI
;應急通道中斷程序
A3:MOV P1,#85H
MOV P0,#30H
MOV P2,#35H
JNB P3.3,A3
RETI
;數顯顯示
DISPLAY:MOV A,R0;東西方向時間的顯示
MOV B,#10
DIV AB;把要顯示的數的十位存放在A中,個位存放在B中
ADD A,#10H;位選通十位
MOV P0,A;顯示十位數字
TI0:JNB P3.4,TT
SJMP TI0
TT: SETB P3.4
MOV A,B
ADD A,#20H;位選通個位
MOV P0,A;顯示個位數字
TI1:JNB P3.4, TT1
SJMP TI1
TT1:SETB P3.4;南北方向的顯示
MOV A,R1;南北方向時間的顯示
MOV B,#10
DIV AB
ADD A,#10H;位選通十位
MOV P2,A;顯示十位數字
TI2:JNB P3.4, TT2
SJMP TI2
TT2:SETB P3.4
MOV A,B
ADD A,#20H;位選通個位
MOV P2,A;顯示個位數字
TI3:JNB P3.4, TT3
SJMP TI3
TT3:SETB P3.4
RET
END
作者: badass 時間: 2020-12-2 20:39
樓主可以吧仿真文件分享出來嗎
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |