Ⅰ 如何實現51單片機的按鍵k1按下,LED流水燈向右移動,按鍵k2被按下,LED流水燈向左移動
51單片機實現方法:
按鍵控制標志位flag取反。
然後把下面的代碼放到循環里:
U8 temp0 = 1。
U8 temp1 = 0x80。
U8 i = 0。
if(flag == 1)。
{。
for(i=0;i<8;i++)。
{。
P1=temp0<<i。
}。
}。
else。
{。
for(i=0;i<8;i++)。
{。
P1=temp1>>i。
}。
}。
}。
對控制LED口的寄存器進行位操作,按k1左移,按K2就是右移了。
51單片機是對兼容英特爾8051指令系統的單片機的統稱。51單片機廣泛應用於家用電器、汽車、工業測控、通信設備中。因為51單片機的指令系統、內部結構相對簡單,所以國內許多高校用其進行單片機入門教學。
51單片機的特點:
同樣的一段程序,在各個單片機廠家的硬體上運行的結果都是一樣的,如ATMEL的89C51(已經停產)、89S51,PHILIPS,和WINBOND等,我們常說的已經停產的89C51指的是ATMEL公司的AT89C51單片機。
同時是在原基礎上增強了許多特性,如時鍾,更優秀的是由Flash(程序存儲器的內容至少可以改寫1000次)存儲器取代了原來的ROM(一次性寫入),AT89C51的性能相對於8051已經算是非常優越的了。
Ⅱ 51單片機的准雙向I/O口在使用前必須進行寫1操作,但上電時,單片機默認為高電平,即還需要進行寫1操作不
51單片機的准雙向I/O口在使用前通常需要進行寫1操作,但僅是在讀取IO口之前,而並非每次使用都需要。實際上,單片機上電時,默認狀態為高電平,因此在使用前無需再次寫1。這主要是因為當將其作為輸入介面使用時,寫1的操作才有意義。
一旦進行了寫1操作(或在復位後自動置1),就可以確保能夠正確輸入數據。然而,如果在非必要的時候寫0,可能會導致後續輸入的數據不準確。因此,強烈建議避免在非必要情況下寫0。
需要注意的是,由於單片機上電時會自動置1,所以通常情況下寫1操作並不是必須的。這並不是說寫1不重要,而是因為在大多數情況下,這種操作已經自動完成,無需額外處理。
總而言之,51單片機的准雙向I/O口在上電時默認為高電平,因此無需在每次使用前都進行寫1操作。但在特定情況下,如讀取輸入數據前,寫1操作仍然是必要的。