[問題] 8051 按鈕控制問題

看板ASM (組合語言)作者 (Maxwell)時間11年前 (2013/08/22 19:26), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/3 (看更多)
各位版大們好,小弟最近在自學8051, 有一些地方不太知道該怎麼寫, 目前小弟想要做到的功能是: 有兩個按鍵,按鍵1按下去後,輸出1會ON(停滯200ms), 然後這時候偵測按鍵二是否有按下去, 如果按鍵二也按下去,則輸出1會一直ON的狀態, 假設按鍵二沒按下去,則輸出1就會off。 上面的功能都算是有寫出來, 不過,小弟還差一個功能沒寫出來, 如果在輸出1一直ON的狀態的時候,按鍵1又按下去, 則輸出1會變成off的狀態,若此時再按按鍵1, 又會回復到上面的狀態,偵測按鍵二是否有按下去, 若有則呈現on的狀態,若沒有則off。 小弟的程式碼如下: main() { while(1) { if(switch_A==0) //按鈕1按下 { run_dly(5); //debounce flag3=1; if(switch_A==0 && flag3==1) // 確認按鈕1有按下 { flag3=0; P0_0=1; //啟動 run_dly(200); if(air_A==0 && flag3==0) //確認按鈕2有按下 { P0_0=1; //到達A狀態} else if(air_A==1 && flag3==0) //若按鈕2沒按下 {P0_0=0; //未到達A狀態} } else if(switch_A==1 && flag3==1) //若按鈕1沒按下 {P0_0=0; //停止} } }//while }//main 目前卡在不知道怎麼在到達A狀態的時候, 若按下按鍵1,則又將輸出(P0_0)off掉, 如果又再按按鍵1,則判斷是否按鍵2有按下... 整個邏輯初步是這樣,還請版上前輩們解惑... 謝謝.....感恩!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.221.195

08/23 01:33, , 1F
建議先把縮排弄好, 縮排很重要
08/23 01:33, 1F
回k大,已盡量縮排,謝謝建議!! ※ 編輯: victim0130 來自: 220.135.221.195 (08/23 19:06)

08/24 01:12, , 2F
請不要嫌我囉嗦... 但你的縮排還有待加強
08/24 01:12, 2F

08/24 01:14, , 3F
維持好的coding style是寫程式的基本要求
08/24 01:14, 3F

08/24 01:16, , 5F
其他部份我晚點回文好了
08/24 01:16, 5F

08/24 01:41, , 6F
謝謝提供相關訊息...我會試著再縮排看看!
08/24 01:41, 6F
文章代碼(AID): #1I5VLwKV (ASM)
討論串 (同標題文章)
文章代碼(AID): #1I5VLwKV (ASM)