鍵盤掃描匯編程序
發布時間: 2023-07-08 21:34:32
① 請教關於單片機按鍵掃描的匯編語言
這是一個典型的T掃電路,具體代碼我就不說了,我現在來說一下它的原理
掃描是一次把一個IO置0,其它的IO均為輸入狀態(51是准雙向IO,沒有輸入輸出概念,把輸出高當輸入即可)。比如說,現在是掃描P00,那麼把P00寫0,其它的IO寫1,然後把所有的IO讀取回來,把值賦給一個臨時變數用來判斷,eg key_buffer_temp =P0; 把掃描(寫0的相應)位強制性寫上1, 即
key_buffer_temp=key_buffer_temp|0x01;這時看這個key_buffer_temp的值,有沒有位是0的,即這個值是不是0xff,如果是0xff,則和P00接的按鍵都沒有按鍵。如果不是0xff,則有幾位是0就有幾個按鍵。這樣循環下去,一直掃到P06(不用掃P07)。
程序的注意點:
1掃描P00時,只看讀回來key_buffer_temp的位1--位7,掃描P01時,只看讀回來key_buffer_temp的位2--位7,……掃描P06時,只看讀回來key_buffer_temp的位7,不用掃描P07
2每掃描一個就判斷一次key_buffer_temp的值,一個個位來判斷,同時把計數加1,如果有按鍵則把計數的值賦給key_value0,key_value1……
3掃描結束後看key_value0,key_value1……裡面的值,有幾個就幾個按鍵
4比如說key_value0為1,key_value為10,那麼就是S1,和S10有按鍵
至於消抖,這一般的做法就是多采樣幾次
熱點內容