找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2912|回復(fù): 1
收起左側(cè)

基于51單片機(jī)的交通燈程序設(shè)計(匯編語言)

[復(fù)制鏈接]
ID:803529 發(fā)表于 2020-7-15 10:32 | 顯示全部樓層 |閱讀模式
原理圖如下:

原理圖

原理圖

代碼如下:
采用匯編語言
ORG 0000H;偽指令、程序開始、中斷入口地址
LJMP MAIN
ORG 0003H
LJMP A1
ORG 000BH
LJMP A2
ORG 0013H
LJMP A3
ORG 1000H
;主程序
MAIN:MOV TMOD,#01H;設(shè)工作方式
         MOV TL0,#0F0H;設(shè)初值,單片機(jī)晶振12M,定時10ms        
         MOV TH0,#0D8H
         SETB EA;開放總中斷        
         SETB ET0;開放T0中斷         
         SETB TR0;啟動T0定時        
          SETB EX0;開放外中斷0        
         SETB EX1;開放外中斷1        
          SETB IT0;設(shè)外中斷0為邊沿觸發(fā)        
         CLR IT1;設(shè)外中斷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;調(diào)用顯示程序        
          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;調(diào)用顯示程序
         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;調(diào)用顯示程序
          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 ;調(diào)用顯示程序        
          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;調(diào)用顯示程序
         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
;應(yīng)急通道中斷程序        
A3:MOV P1,#85H
         MOV P0,#30H        
         MOV P2,#35H        
         JNB P3.3,A3        
          RETI
;數(shù)顯顯示
DISPLAY:MOV A,R0;東西方向時間的顯示
            MOV B,#10        
            DIV AB;把要顯示的數(shù)的十位存放在A中,個位存放在B中
            ADD A,#10H;位選通十位
            MOV P0,A;顯示十位數(shù)字
TI0:JNB P3.4,TT
    SJMP TI0
TT: SETB P3.4
    MOV A,B
        ADD A,#20H;位選通個位        
    MOV P0,A;顯示個位數(shù)字
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;顯示十位數(shù)字
TI2:JNB P3.4, TT2
    SJMP TI2  
TT2:SETB P3.4        
        MOV A,B        
        ADD A,#20H;位選通個位        
        MOV P2,A;顯示個位數(shù)字
TI3:JNB P3.4, TT3
    SJMP TI3
TT3:SETB P3.4
RET
END





回復(fù)

使用道具 舉報

ID:526721 發(fā)表于 2020-12-2 20:39 來自觸屏版 | 顯示全部樓層
樓主可以吧仿真文件分享出來嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表