新聞中心

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

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

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

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

本文引用地址:http://www.butianyuan.cn/article/201602/287211.htm

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

  ;題目:汽車(chē)轉(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)鍵(剎車(chē)鍵)按下時(shí) 實(shí)現(xiàn)P0-P2口同時(shí)亮;

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

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

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

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

    

 

  ;程序如下:

  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 ;開(kāi)中斷

  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ī) 匯編語(yǔ)言

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉