當前位置:編程學習大全網 - 編程軟體 - 嵌入式系統編程

嵌入式系統編程

其實這鬼程序看起來寫的好像很復雜,實際上也就壹句話:輪流給GPE0-GPE3信號(輪流置0),檢測GPE4-GPE7是否有輸出(0),如果有,說明按鍵被按下,沒有,則無按鍵按下。

這種風格的程序也就考試會用到了,生產環境寫這種代碼要被罵死。在速度不是至關重要的環節(人操作按鍵速度遠低於掃描速度,掃描程序不必過分苛求運行效率)過分強調代碼運行速度(何況這堆代碼完全沒效率可言)而犧牲代碼可讀性,會給日後維護代碼帶來災難(想象壹下滿屏位移操作代碼,而妳要從裏面查出哪個位移操作移反了或者'|'寫成'&'的時候)。

比如上面的代碼,for循環的i變量,為什麽不能直接賦初值為0xFE,而非要賦為0x01,然後取反?這樣我就能直接令 output = 0xFF & i 了

key的話我可以

key_h = (i << 8) & 0xF0;

key_l = temp & 0x0F;

key = key_h | key_l;

是不是直觀不少

另外,涉及按鍵掃描程序,按鍵按下之後的信號波形有可能因為器件原因信號短時間出現波動,這段程序並沒有做抖動處理,會造成實際只按了壹次按鍵而檢測到按了好幾次的情況(主頻越高的設備這個情況越嚴重)。

實際程序中會根據按鍵設備廠商給的參數,進行防抖處理。

最後,壹個建議就是少用temp這類意義不明確的命名

  • 上一篇:挖礦系統app軟件開發公司推薦
  • 下一篇:請問VB編程中,如何連接SQL數據庫?
  • copyright 2024編程學習大全網