新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的交通燈設計

        基于單片機的交通燈設計

        作者: 時間:2010-12-08 來源:網絡 收藏


        2、程序
        ORG 0000H
        MOV P0,#00H ;確保P0為低電位
        lJMP MAIN0
        ORG 0030H
        MAIN0: MOV 30H,#08H
        MOV R6,#00H
        MOV R7,#00H
        MOV DPTR,#TABLE ;取數碼管的譯碼
        MOV TMOD,#01H ;定時方式及時間
        MOV TL0,#0CDH
        MOV TH0,#0BH
        SETB TR0
        MOV IE,#00H
        MAIN: MOV P1,#0F3H ;南北綠燈,東西紅燈
        MOV R6,#1EH ;紅燈30s倒計時
        MOV R7,#19H ;綠燈25s倒計時
        MAIN1:CALL DELAY ;1S延時子程序
        JB P0.1,REL1 ;判斷是否有東西方向按鈕按下
        CJNE R7,#00H,MAIN1 ;判斷綠燈25s是否倒計完
        MOV P1,#0F5H ;南北黃燈,東西紅燈
        MAIN2:CALL DELAY
        MOV R7,#00H ;紅燈繼續倒計時,黃燈閃爍,保持0s
        CPL P1.1 ;黃燈閃爍
        CJNE R6,#00H,MAIN2 ;判斷紅燈是否倒計時完
        MOV P1,#0DEH ;南北紅燈,東西綠燈
        MOV R7,#1EH
        MOV R6,#19H
        MAIN3:CALL DELAY
        JB P0.0,REL2
        CJNE R6,#00H,MAIN3
        MOV P1,#0EEH
        MAIN4:CALL DELAY
        MOV R6,#00H
        CPL P1.4
        CJNE R7,#00H,MAIN4
        JMP MAIN
        REL1:MOV P1,#0F5H ;東西方向按鈕按下,南北方向強制由綠燈變成黃燈警告
        MOV R6,#05H
        MOV R7,#00H
        JMP MAIN2
        REL2:MOV P1,#0EEH ;南北方向按鈕按下,東西方向強制由綠燈變成黃燈警告
        MOV R7,#05H
        MOV R6,#00H
        JMP MAIN4
        ;1s延時子程序
        DELAY:MOV A,R6 ;進行南北方向倒計時時間的十進制調整
        MOV B,#0AH
        DIV AB
        MOVC A,@A+DPTR ;找尋相應的數碼管代碼
        MOV P2,#01H
        MOV P3,A ;輸出個位
        MOV R4,#4 ;降低動態顯示頻率
        LOOP2:MOV R3,#125
        LOOP3:DJNZ R3,LOOP3
        DJNZ R4,LOOP2
        MOV A,B
        MOVC A,@A+DPTR
        MOV P2,#02H ;輸出十位
        MOV P3,A
        MOV R4,#4
        LOOP4:MOV R3,#125
        LOOP5:DJNZ R3,LOOP5
        DJNZ R4,LOOP4
        MOV A,R7 ;進行東西方向倒計時時間的十進制調整
        MOV B,#0AH
        DIV AB
        MOVC A,@A+DPTR
        MOV P2,#04H
        MOV P3,A
        MOV R4,#4
        LOOP6:MOV R3,#125
        LOOP7:DJNZ R3,LOOP7
        DJNZ R4,LOOP6
        MOV A,B
        MOVC A,@A+DPTR
        MOV P2,#08H
        MOV P3,A
        MOV R4,#4
        LOOP8:MOV R3,#125
        LOOP9:DJNZ R3,LOOP9
        DJNZ R4,LOOP8
        JBC TF0,LOOP ;判斷是否計滿125ms
        AJMP DELAY
        LOOP:MOV TL0,#0CDH ;計滿125ms重新給定時器賦值
        MOV TH0,#0BH
        MOV A,30H
        DEC A
        MOV 30H,A
        JNZ DELAY ;判斷是否計滿8次125ms,即1s
        DEC R6 ;計滿1s,東西倒計時減1,南北倒計時減1
        DEC R7
        MOV 30H,#08H ;重新1s次數,重新計時
        RET
        TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;相應數值的數碼管代碼
        DB 92H,82H,0F8H,80H,90H
        END

        本文引用地址:http://www.104case.com/article/173108.htm

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 丹东市| 仁寿县| 山东省| 溆浦县| 大同县| 玉林市| 肥乡县| 罗平县| 山西省| 周宁县| 米泉市| 赤峰市| 阳谷县| 章丘市| 安丘市| 通许县| 安福县| 五大连池市| 五寨县| 温州市| 定襄县| 鄂温| 麟游县| 紫阳县| 武冈市| 宜都市| 呼和浩特市| 乌拉特前旗| 迁安市| 南岸区| 宜黄县| 泽普县| 岳西县| 三江| 辉县市| 陵川县| 宜丰县| 凯里市| 务川| 昆山市| 民权县|