微控制器組合語言程式設計 汽車轉向燈控制器

2021-07-09 14:59:50 字數 2862 閱讀 1444

;呵呵,做而論道已經提前一步儲存下來了題目的要求。

;題目:汽車轉向燈控制器的程式設計

;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;試驗的時候,應該釋放了前乙個按鍵,再按下另乙個按鍵,這才能有理想的結果。

微控制器彙編程式設計300例 微控制器基礎組合語言程式設計例項

微控制器組合語言程式設計 1 編寫程式,用位處理指令實現 p1.4 p1.0 p1.1 p1.2 p1.3 的邏輯功能。mov c,p1.1 anl c,p1.2 orl c,p1.0 orl c,p1.3 mov p1.3,c 2 編寫程式,若累加器a的內容分別滿足下列條件,則程式轉到lable儲...

組合語言 微控制器基礎

以老師上課講的例題為例,進行程式分析。前兩步為跳過中斷區,一般程式都直接加上 org 0000h ljmp main org 1000h 定義源位址為1000h main mov a,30h 將 立即數30h 賦給 累加器a movc a,a pc 將 累加器a 下一條命令後程式計數器的值 對應位址...

基於51微控制器交通燈(組合語言)

設計要求 設計交通燈控制系統。模擬交通訊號燈控制 一般情況下正常顯示,東西 南北交替放行,各方向通行時間為30秒。有救護車或警車到達時,兩個方向交通訊號燈全為紅色,以便讓急救車或警車通過,設通行時間為10秒,之後交通恢復正常。用單次脈衝模擬急救車或警車申請外部中斷。proteus 圖 微控制器晶振為...