本文主要是關于51單片機復位的相關介紹,并著重對51單片機復位方法及其原理進行了詳盡的闡述。
為什么需要單片機復位
這就好比開啟了看門狗但沒有喂狗
單元負載能力不足
電源不穩定
干擾
程序錯誤導致軟件指令復位
還有最重要的:內存溢出,如下:
在只有128byte內存的單片機里面定義過多的全局變量并且其中有指針變量的話,非常容易出現干擾到堆棧指針SP,導致程序異常。
IO接口只能通過直接訪問高128字節才能寫入或讀出數值,無法通過指針等其他途徑訪問。
所以當前情況很有可能是內存溢出導致單片機不斷在重啟。
當內存超過128yte的情況下在編譯的時候編譯器會提示內存不足。
在256byte的單片機中可以通過idata使用高128byte內存,通常一些不常用的變量。
盡量使用局部變量提高內存使用效率。
51單片機復位電路詳解
復位電路的工作原理
在書本上有介紹,51單片機要復位只需要在第9引腳接個高電平持續2us就可以實現,那這個過程是如何實現的呢?在單片機系統中,系統上電啟動的時候復位一次,當按鍵按下的時候系統再次復位,如果釋放后再按下,系統還會復位。所以可以通過按鍵的斷開和閉合在運行的系統中控制其復位。
開機的時候為什么為復位
在電路圖中,電容的的大小是10uf,電阻的大小是10k。所以根據公式,可以算出電容充電到電源電壓的0.7倍(單片機的電源是5V,所以充電到0.7倍即為3.5V),需要的時間是10K*10UF=0.1S。也就是說在電腦啟動的0.1S內,電容兩端的電壓時在0~3.5V增加。這個時候10K電阻兩端的電壓為從5~1.5V減少(串聯電路各處電壓之和為總電壓)。所以在0.1S內,RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機中小于1.5V的電壓信號為低電平信號,而大于1.5V的電壓信號為高電平信號。所以在開機0.1S內,單片機系統自動復位(RST引腳接收到的高電平信號時間為0.1S左右)。
按鍵按下的時候為什么會復位
在單片機啟動0.1S后,電容C兩端的電壓持續充電為5V,這是時候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統正常工作。當按鍵按下的時候,開關導通,這個時候電容兩端形成了一個回路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓在0.1S內,從5V釋放到變為了1.5V,甚至更小。根據串聯電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機系統自動復位。
總結:
1、復位電路的原理是單片機RST引腳接收到2US以上的電平信號,只要保證電容的充放電時間大于2US,即可實現復位,所以電路中的電容值是可以改變的。
2、按鍵按下系統復位,是電容處于一個短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。
51單片機復位的方法有哪些
51單片機有五種常用的復位方法:
1.上電制動復位,注意:只要電源的的上升時間不超過1ms,就可以實現自動上電復位。
2.軟件復位,注意:復位信號保持時間是編程人員預定的時間。
3.按鍵電平復位,注意:復位信號保持時間大于2個時鐘周期。
4.外部脈沖復位,注意:復位信號保持時間大于2個時鐘周期。
5.看門狗溢出復位,注意:復位信號保持時間也是編程人員預定的時間。
【MCS-51單片機地址指針程序設置方法】
下面以數據塊傳送子程序為例,說明R0和R1對外接RAM間接尋址的程序設計方法。假定數據塊的源首地址為1000H,目的首地址為3045H,數據塊長度為50H,程序清單如下所示:
程序1—用DPTR做地址指針
MOV R2,#00H
MOV R3,#10H
MOV R4,45H
MOV R5,#30H
MOV R7,#50H
LOOP: MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
INC DPTR
MOV R2,DPL
MOV R3,DPH
MOV DPL,R4
MOV DPH,R5
MOVX @DPTR,A
INC DPTR
MOV R4,DPL
MOV R5,DPH
DJNZ R7,LOOP
RET
程序2—使用R0和R1做地址指針
MOV DPTR,#1000H
MOV P2,#30H
MOV R0,#45H
MOV R7,#50H
LOOP: MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R7,LOOP
RET
程序1用了19條指令,程序2用了10條指令。適當應用R0和R1地址指針,可以大大提高程序運行效率。
結語
關于51單片機復位的相關介紹就到這了,如有不足之處歡迎指正。
-
單片機
+關注
關注
6037文章
44561瀏覽量
635594 -
復位電路
+關注
關注
13文章
322瀏覽量
44599
發布評論請先 登錄
相關推薦
評論