新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機匯編語言編程:汽車轉向燈控制器

        單片機匯編語言編程:汽車轉向燈控制器

        作者: 時間:2016-02-22 來源:網絡 收藏

          按照題目要求,編寫了程序,用 PROTEUS 繪出了仿真電路圖。

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

          ;=============================================

          ;題目:汽車轉向燈控制器的編程

          ;1號鍵(左轉向)按下時 實現P3.6閃亮,P0-P2口左流水;

          ;2號鍵(右轉向)按下時 實現P3.7閃亮,P0-P2口右流水;

          ;3號鍵(剎車鍵)按下時 實現P0-P2口同時亮;

          ;4號鍵(緊急狀況鍵) 按下時 實現P3.6和P3.7同時閃亮。

          ;按鍵按住時,執行上述程序,按鍵松開后關閉所有燈。

          ;=============================================

          ;按照題目要求,編寫了程序,用 PROTEUS 繪出了仿真電路圖,運行起來如下所示:

            

         

          ;程序如下:

          L_T BIT 00H ;按鍵標志位

          R_T BIT 01H

          S_T BIT 02H

          J_J BIT 03H

          SAME EQU 30H;按鍵緩沖區

          Runw EQU 31H ;31H 32H,共16位數,當做流水燈

          SP_B EQU 33H ;棧底位置

          ;--------------------------------

          ORG 0000H

          SJMP START

          ORG 000BH

          SJMP T0_INT

          ;--------------------------------

          START:

          MOV TMOD, #01H

          MOV TH0, #4CH ;定時

          MOV R3, #5 ;250ms閃爍一次

          SETB TR0

          MOV IE, #82H ;開中斷

          MOV SP, #SP_B

          MOV Runw, #255

          MOV Runw + 1, #0

          ;--------------------------------

          M_LOOP:

          MOV A, P1 ;讀一次按鍵

          ANL A, #0FH

          MOV SAME, A ;保存

          MOV R7, #40 ;延時約20ms

          MOV R6, #0

          DJNZ R6, $

          DJNZ R7, $ - 4

          MOV A, P1 ;再讀一次按鍵

          ANL A, #0FH

          CJNE A, SAME, M_LOOP ;兩次不等則是抖動

          CPL A

          MOV C, ACC.3 ;保存按鍵信息

          MOV R_T, C

          MOV C, ACC.2

          MOV J_J, C

          MOV C, ACC.1

          MOV S_T, C

          MOV C, ACC.0

          MOV L_T, C

          SJMP M_LOOP ;繼續去讀

          ;--------------------------------

          T0_INT:

          MOV TH0, #4CH ;定時

          PUSH ACC

          DJNZ R3, T0_END ;不到5次就退出

          MOV R3, #5

          ;----------------------;以下每隔250ms執行一次

          LEFT:

          JNB L_T, RIGHT

          MOV A, Runw

          RRC A

          MOV Runw, A

          MOV A, Runw + 1

          RRC A

          MOV Runw + 1, A

          MOV A, Runw

          MOV ACC.7, C

          MOV Runw, A

          MOV P2, Runw

          MOV P0, Runw + 1

          SETB P3.7

          CPL P3.6

          JMP T0_END

          RIGHT:

          JNB R_T, STOP

          MOV A, Runw

          RLC A

          MOV Runw, A

          MOV A, Runw + 1

          RLC A

          MOV Runw + 1, A

          MOV A, Runw

          MOV ACC.0, C

          MOV Runw, A

          MOV P2, Runw

          MOV P0, Runw + 1

          CPL P3.7

          SETB P3.6

          JMP T0_END

          STOP:

          JNB S_T, JINJI

          MOV P2, #0

          MOV P0, #0

          SETB P3.7

          SETB P3.6

          JMP T0_END

          JINJI:

          JNB J_J, NOTHING

          MOV P2, #255

          MOV P0, #255

          CPL P3.7

          CPL P3.6

          JMP T0_END

          NOTHING: ;關閉所有的燈

          MOV P2, #255

          MOV P0, #255

          SETB P3.7

          SETB P3.6

          T0_END:

          POP ACC

          RETI

          ;--------------------------------

          END

          ;試驗的時候,應該釋放了前一個按鍵,再按下另一個按鍵,這才能有理想的結果。



        關鍵詞: 單片機 匯編語言

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 商河县| 岳阳市| 泾源县| 镇远县| 康乐县| 尚义县| 宁强县| 赣榆县| 武平县| 永康市| 沐川县| 宜川县| 桃园市| 临猗县| 金山区| 巴彦淖尔市| 灵石县| 综艺| 基隆市| 贵德县| 镇平县| 江阴市| 文化| 天峻县| 当涂县| 佛冈县| 泰顺县| 陇西县| 鹤峰县| 印江| 鹰潭市| 喀什市| 太湖县| 沾化县| 阿合奇县| 新巴尔虎左旗| 新宾| 基隆市| 庆阳市| 张家川| 格尔木市|