• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)匯編語言編程:汽車轉(zhuǎn)向燈控制器

    單片機(jī)匯編語言編程:汽車轉(zhuǎn)向燈控制器

    作者: 時(shí)間:2016-02-22 來源:網(wǎng)絡(luò) 收藏

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

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

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

      ;題目:汽車轉(zhuǎn)向燈控制器的編程

      ;1號(hào)鍵(左轉(zhuǎn)向)按下時(shí) 實(shí)現(xiàn)P3.6閃亮,P0-P2口左流水;

      ;2號(hào)鍵(右轉(zhuǎn)向)按下時(shí) 實(shí)現(xiàn)P3.7閃亮,P0-P2口右流水;

      ;3號(hào)鍵(剎車鍵)按下時(shí) 實(shí)現(xiàn)P0-P2口同時(shí)亮;

      ;4號(hào)鍵(緊急狀況鍵) 按下時(shí) 實(shí)現(xiàn)P3.6和P3.7同時(shí)閃亮。

      ;按鍵按住時(shí),執(zhí)行上述程序,按鍵松開后關(guān)閉所有燈。

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

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

        

     

      ;程序如下:

      L_T BIT 00H ;按鍵標(biāo)志位

      R_T BIT 01H

      S_T BIT 02H

      J_J BIT 03H

      SAME EQU 30H;按鍵緩沖區(qū)

      Runw EQU 31H ;31H 32H,共16位數(shù),當(dāng)做流水燈

      SP_B EQU 33H ;棧底位置

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

      ORG 0000H

      SJMP START

      ORG 000BH

      SJMP T0_INT

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

      START:

      MOV TMOD, #01H

      MOV TH0, #4CH ;定時(shí)

      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 ;延時(shí)約20ms

      MOV R6, #0

      DJNZ R6, $

      DJNZ R7, $ - 4

      MOV A, P1 ;再讀一次按鍵

      ANL A, #0FH

      CJNE A, SAME, M_LOOP ;兩次不等則是抖動(dòng)

      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 ;繼續(xù)去讀

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

      T0_INT:

      MOV TH0, #4CH ;定時(shí)

      PUSH ACC

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

      MOV R3, #5

      ;----------------------;以下每隔250ms執(zhí)行一次

      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: ;關(guān)閉所有的燈

      MOV P2, #255

      MOV P0, #255

      SETB P3.7

      SETB P3.6

      T0_END:

      POP ACC

      RETI

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

      END

      ;試驗(yàn)的時(shí)候,應(yīng)該釋放了前一個(gè)按鍵,再按下另一個(gè)按鍵,這才能有理想的結(jié)果。



    關(guān)鍵詞: 單片機(jī) 匯編語言

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 卢龙县| 五华县| 琼结县| 轮台县| 巢湖市| 隆化县| 法库县| 九江县| 乌鲁木齐县| 措美县| 洪雅县| 泾阳县| 江北区| 遂平县| 德安县| 东乡族自治县| 阳朔县| 莆田市| 平利县| 密云县| 墨脱县| 开原市| 栖霞市| 郯城县| 托克逊县| 东安县| 镇平县| 阜南县| 建湖县| 大宁县| 宝鸡市| 北流市| 柏乡县| 大悟县| 保靖县| 堆龙德庆县| 桑植县| 玉门市| 教育| 米脂县| 玛纳斯县|