;呵呵,做而論道已經提前一步儲存下來了題目的要求。
;題目:汽車轉向燈控制器的程式設計
;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 圖 微控制器晶振為...