新聞中心

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    

 

  ;程序如下:

  L_T BIT 00H ;按鍵標志位

  R_T BIT 01H

  S_T BIT 02H

  J_J BIT 03H

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

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

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

  T0_INT:

  MOV TH0, #4CH ;定時

  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: ;關閉所有的燈

  MOV P2, #255

  MOV P0, #255

  SETB P3.7

  SETB P3.6

  T0_END:

  POP ACC

  RETI

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

  END

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



關鍵詞: 單片機 匯編語言

評論


相關推薦

技術專區(qū)

關閉