1樓:匿名使用者
我建議一種按鍵的寫法,不需要延時來消抖。不過請注意,這種寫法造成的後果是,例如在設定電子時鐘的時間加減時,你按下按鍵,無論按多久,只有在你鬆開手之後,對應的資料才加/減1.
這樣寫:
if( key == 0 )
另外就是,可以用外部中斷來觸發操作,接法一般是這樣:
_--_ key1 -> io p10| _--_ key2 -> io p11| _--_ key3 -> io p12| _--_ key4 -> io p13|________ -> io p32不知道你是否看得懂,意思是獨立按鍵的右端各自接在p10~p13(其他也可以),左端作為公共端,不是接地,而是接在外部中斷的埠上,可以是p32或p33。
**大概這樣寫:一上來先給按鍵獨立端低電平,當按鍵觸發時,觸發了外部中斷,所以在外部中斷的服務函式裡,關閉外部中斷,給獨立端高電平。這時候由於按鍵還是按下的狀態,所以會有乙個埠是低電平,通過檢測p1口的電平,判斷是哪個按鍵按下,執行你的**。
之後繼續給獨立端低電平,開啟外部中斷,退出中斷,等待下一次按鍵到達。
2樓:
這個用51裡面的定時器就可以了。當然你也可以嘗試一下用硬體消抖。
3樓:做而論道
用《埠輸出的函式》,代替《消抖延時函式》,即可消抖,又可以不間斷輸出。
51微控制器按鍵控制流水燈左移,51微控制器的c語言 左移右移怎麼用?想用來控制流水燈,請幫忙寫個完整的c程式,參考下,埠隨意
按鍵不能用while函式來寫,第八行 if k1 0 按一次執行一次函式內容 開始學習微控制器的同學們寫注意了,在執行程式後,現象不正確的時候,不要首先就找軟體的錯誤,我的經驗是從源頭開始找問題,首先你得確定你的平臺是正確的,你說是按鍵沒效果,先用萬用表測試一下你的引腳的電平,是否被拉低了如果按鍵沒...
51微控制器怎麼識別高電平,51微控制器怎麼識別乙個高電平?
首先確認在p21已經有上拉為高的情況下,接在339輸出口,是不是為低,然後讓339為高後,p21口是否為高,用表測下,再寫程式。p2 0,是不能這樣寫的,做為輸入口,之前都得送1。除非可用沒有內部上接的p0口,做這些,硬體狀態很重要,先確認339一定有輸出哦。首先,你要確定輸入到微控制器引腳的電平是...
51微控制器中ACC怎麼用,51微控制器中ACC怎麼用??
a和acc的實質是一樣的,對應位址都是0e0h,只是彙編在使用時,在格式上取了兩個名字。你看看它們的使用方法,有的地方用a,有的地方用acc,會發現有一定的規律。當其要進行位表示時,必須用acc,比如要寫成acc.7,而不能寫成a.7 但當其作為8位二進位制數時,acc和a都能用 但還是有區別 比如...