1樓:匿名使用者
方法:1.p1口做輸入輸出口前要先寫值,1為輸入,0為輸出,且要接上拉電阻,不如換到其他口。
2.if(countsingle=1)改為if(countsingle==1) 。
3.最好先讀取埠值再判斷。
2樓:匿名使用者
最基本的51微控制器的io要讀之前一定得先寫『1』,否則讀的值是隨機的。
if(countsingle=1)
改為countsingle=1;
ifif(countsingle==1)
3樓:匿名使用者
你直接榮 for 就可以了 別問我具體的很久不寫了
例如檢測p1^1 高電平 首先定義 p1^1 = 0 for(p1^1=1;其他的動作=1)這樣迴圈就可以了
4樓:匿名使用者
4點建議
1.p1口做輸入輸出口前要先寫值,1為輸入,0為輸出,且要接上拉電阻,不如換到其他口
2.if(countsingle=1)改為if(countsingle==1)
3.最好先讀取埠值再判斷
4. 一樓說的用中斷也不錯
5樓:匿名使用者
你直接5v進去難道不怕燒了埠啊,多大的電流啊!
你要是用這種查詢電平方式就在埠上接個電阻上拉5v好了,控制電流在你的微控制器管教可承受的範圍內
6樓:做而論道
if(countsingle=1) //錯if(countsingle==1) //應該是「雙等號」。
後面還有一個錯的地方。
----------------------------------試試下面這個:
main()
if(passsingle == 1) }}
7樓:
應該用中斷來檢測吧,有高電平就觸發一次中斷,,可以麼?
微控制器..為什麼io口輸入的時候要置成高電平後才能讀取正確..?
8樓:匿名使用者
這個跟微控制器的埠有關,比如說p0口,p0口當io口時,cup發出控制訊號,使控制=0,這樣q非就和t2連起來了,當p0口中內容為0時,q非為1,t2導通,這時p0口是接地的,這時輸入高電平時會被拉低,導致誤讀,讀出為0,這顯然不對的,所以一般輸出1讓t2截止,這樣相當於讓p0口變成高阻狀態。
其他埠的原理是一樣的。
微控制器io口懸空是高電平嗎?
9樓:匿名使用者
未必。假設輸入電源是5v,懸空的時候電壓一般是3.3v,是一個「中間態」。可能被當作高電平,也可能當作低電平,看微控制器(datasheet)而定。
如果要io確保懸空是高電平,加一個上拉電阻至輸入電源即可。若要確保低電平,下拉電阻拉至地就行。上拉電阻取1k歐姆即可。
懸空是指沒有io訊號輸入。上拉電阻是解決懸空不定狀態的一種常用方法,絕不是io訊號,用來將輸入電平拉到5v或下拉到0v。它是確保數位電路準確性的一種機制方法。
輸入訊號和上拉電阻的關係、概念每本數位電路的書都會講到,lz好好理解下吧~
10樓:做而論道
51微控制器,p1,p2,p3口,內部有上拉電阻,所以io口懸空,預設就是高電平。
51微控制器,p0口做io口用的時候,內部沒有電阻,io口懸空,電平就不確定,易受干擾。
其它微控制器,要看datasheet。
11樓:匿名使用者
樓上說得不對,三態的時候,呈現高阻態,電瓶是完全被動的。
有些微控制器可以設定引腳的內部電阻以改變其磨人的電平。
微控制器IO口懸空是高電平嗎,單片中的IO口定義為高阻態,如果將其懸空,會給微控制器帶來什麼影響
未必。假設輸入電源是5v,懸空的時候電壓一般是3.3v,是一個 中間態 可能被當作高電平,也可能當作低電平,看微控制器 datasheet 而定。如果要io確保懸空是高電平,加一個上拉電阻至輸入電源即可。若要確保低電平,下拉電阻拉至地就行。上拉電阻取1k歐姆即可。懸空是指沒有io訊號輸入。上拉電阻是...
51微控制器如何檢測高電平輸入,51微控制器引腳檢測高電平輸入的問題
做而論道 51微控制器,把引腳設定為輸入狀態,方法就是輸出一個1。這是微控制器的設計者 生產廠家所規定的。在這個前提下,外界,只有輸入低電平,才會改變引腳的狀態。輸入高電平,是沒有反應的。如果,外設,一定要送來高電平,那就必須加上一個反相器,再連線到微控制器的引腳。 這個電路和功能是可以實現的 c2...
關於微控制器IO口電平轉換
做試驗啊,這個沒別的更好的辦法。入pinx的值會隨外部電路輸入高低電平變化而變化,因為它此時屬於輸入狀態,能讀入引腳電平 而所謂的高阻態只是相對於輸出來說的,輸出進入高阻態,並不影響輸入,即pinx的讀入。一次我搭了一個鍵盤電路,沒有使用上拉電阻,且ddrx portx分別配置為0 0,發現pinx...