⑴ 為什麼在讀51,系列單片機的並行埠之前要先對埠初始化
保證讀入數據不出錯。
51系列單片機在並行口PO、Pl、P2或P3作輸入數據的埠時,先給此8位並行口送去全1,然後再讀這些並行埠,才能保證讀入的數據不會出錯。這是由於單片機在設計之初存在的一個缺陷。
⑵ 簡述單片機應用時串列口初始化的內容
設置定時器工作方式:裝入定時初值,啟動定時器,設置串口工作方式。
當執行一條指令時,先把它從內存中取到數據寄存器中,然後再傳送到指令寄存器。當系統執行給定的指令時,必須對操作碼進行解碼,以確定所要求的操作,指令解碼器就是負責這項工作的。其中,指令寄存器中操作碼欄位的輸出就是指令解碼器的輸入。
(2)單片機埠初始化擴展閱讀:
在單片機中主要包含CPU、只讀存儲器ROM和隨機存儲器RAM等,多樣化數據採集與控制系統能困櫻夠讓單片機完成各項復雜的運算,無論是對運算符號進行控制,還是對系統下達運算指令都能通過單片機完成。
單片機就是一塊晶元,這塊晶元組成了一個系統,通過集成電路技術的應用,將數據運算與處理能力集成到晶元中,實現對數瞎源據的高速化處理。
參汪神叢考資料來源:網路-單片機
⑶ 如何給單片機系統進行初始化
復位電路和晶振電路屬於純硬體,不用理會,其它的需要軟體做好初始化。軟體的初始化一般是以下幾個步驟。
如果採用的是匯編語言,一般有如下幾項內容
1、設置堆棧地址:比如MOV SP, #60H。
2、設定PSW值,也就是預設的工作寄存器區。
3、設定與定時器、中斷、串口相關的特殊功能寄存器
4、設定各IO口的初始狀態,比如將連接鍵盤的輸入輸出口均設為1,紅外發射電路的初始狀態。
5、內存中需要賦初值的寄存器賦初值,比如上電後要顯示的內容最好先賦個初值。
6、打開中斷允許、啟動定時器(這一步也可根據具體需要放在前面或其它地方)
7、開始主程序循環
對前兩項的設置可能不是必須的,但是應該成為一種好的習慣。
如果是C語言,除了第1、2項不用管,其它也一樣。
如果整個系統在上電後,需要一段時間才能進入穩定狀態,可在一開始加入一段循環延時程序,然後再進行其它初始化操作。
⑷ 單片機中,當I/O口作輸入時,應先初始化為什麼
因為IO口作為輸入時初始被置1, 這樣就可以被外部器件拉低, 檢測IO口的電平高低就可以知道有沒有被外部器件拉低了
⑸ 單片機程序初始化要做些什麼啊
分二點解釋:
1、單片機初始化主要是對單片機所用到的功能或外設進行初始化。
比如,用到了定時器T0,則需要在開始對T0進行初始化,其相關SFR為:TMOD,TH0,TL0,TR0。其他類似。
2、當然如果你使用匯編編寫程序,在程序比較大時,可以考慮對堆棧等進行初始化,保證程序運行的可靠性。這點,對於初學者來說,我覺得能理解最好,不理解不用著急。
對於C語言設計來說,堆棧的初始化則考慮較少,一般編譯器會幫助進行優化。
⑹ 單片機的輸入輸出口初始化是0還是1
初始狀態是高電平
以後根據程序的功能去定義它們的狀態。
⑺ 單片機 IO口初始化
1、首先注意51單片機上電的時候會有個復位的操作,復位的時候不執行單片機內部程序,復位之後51單片機的所有io口都為高電平;
2、在單片機復位之後在main函數里執行程序,如果要使io口初始化為低電平,就要在while循環的上方把io置低;例如:
一般程序的結構是這樣的:
void
main()
{
....
io
=
0
;
//在while的上方對io置低,
......
while(1)
{
}
}
3、基於上面的原理,在設計單片機外圍電路的時候,為了不讓外圍電路誤動作,一般把外圍電路設置成單片機io口低電平的時候
盡心動作,
比如:
點亮led燈的時候,,一般把led的負極接io口,,這樣單片機上電的時候,沒有進入程序之前,led是不會亮的,