本文主要是關(guān)于51單片機(jī)復(fù)位的相關(guān)介紹,并著重對(duì)51單片機(jī)復(fù)位方法及其原理進(jìn)行了詳盡的闡述。
為什么需要單片機(jī)復(fù)位
這就好比開啟了看門狗但沒(méi)有喂狗
單元負(fù)載能力不足
電源不穩(wěn)定
干擾
程序錯(cuò)誤導(dǎo)致軟件指令復(fù)位
還有最重要的:內(nèi)存溢出,如下:
在只有128byte內(nèi)存的單片機(jī)里面定義過(guò)多的全局變量并且其中有指針變量的話,非常容易出現(xiàn)干擾到堆棧指針SP,導(dǎo)致程序異常。
IO接口只能通過(guò)直接訪問(wèn)高128字節(jié)才能寫入或讀出數(shù)值,無(wú)法通過(guò)指針等其他途徑訪問(wèn)。
所以當(dāng)前情況很有可能是內(nèi)存溢出導(dǎo)致單片機(jī)不斷在重啟。
當(dāng)內(nèi)存超過(guò)128yte的情況下在編譯的時(shí)候編譯器會(huì)提示內(nèi)存不足。
在256byte的單片機(jī)中可以通過(guò)idata使用高128byte內(nèi)存,通常一些不常用的變量。
盡量使用局部變量提高內(nèi)存使用效率。
51單片機(jī)復(fù)位電路詳解
復(fù)位電路的工作原理
在書本上有介紹,51單片機(jī)要復(fù)位只需要在第9引腳接個(gè)高電平持續(xù)2us就可以實(shí)現(xiàn),那這個(gè)過(guò)程是如何實(shí)現(xiàn)的呢?在單片機(jī)系統(tǒng)中,系統(tǒng)上電啟動(dòng)的時(shí)候復(fù)位一次,當(dāng)按鍵按下的時(shí)候系統(tǒng)再次復(fù)位,如果釋放后再按下,系統(tǒng)還會(huì)復(fù)位。所以可以通過(guò)按鍵的斷開和閉合在運(yùn)行的系統(tǒng)中控制其復(fù)位。
開機(jī)的時(shí)候?yàn)槭裁礊閺?fù)位
在電路圖中,電容的的大小是10uf,電阻的大小是10k。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(單片機(jī)的電源是5V,所以充電到0.7倍即為3.5V),需要的時(shí)間是10K*10UF=0.1S。也就是說(shuō)在電腦啟動(dòng)的0.1S內(nèi),電容兩端的電壓時(shí)在0~3.5V增加。這個(gè)時(shí)候10K電阻兩端的電壓為從5~1.5V減少(串聯(lián)電路各處電壓之和為總電壓)。所以在0.1S內(nèi),RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機(jī)中小于1.5V的電壓信號(hào)為低電平信號(hào),而大于1.5V的電壓信號(hào)為高電平信號(hào)。所以在開機(jī)0.1S內(nèi),單片機(jī)系統(tǒng)自動(dòng)復(fù)位(RST引腳接收到的高電平信號(hào)時(shí)間為0.1S左右)。
按鍵按下的時(shí)候?yàn)槭裁磿?huì)復(fù)位
在單片機(jī)啟動(dòng)0.1S后,電容C兩端的電壓持續(xù)充電為5V,這是時(shí)候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下的時(shí)候,開關(guān)導(dǎo)通,這個(gè)時(shí)候電容兩端形成了一個(gè)回路,電容被短路,所以在按鍵按下的這個(gè)過(guò)程中,電容開始釋放之前充的電量。隨著時(shí)間的推移,電容的電壓在0.1S內(nèi),從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個(gè)時(shí)候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機(jī)系統(tǒng)自動(dòng)復(fù)位。
總結(jié):
1、復(fù)位電路的原理是單片機(jī)RST引腳接收到2US以上的電平信號(hào),只要保證電容的充放電時(shí)間大于2US,即可實(shí)現(xiàn)復(fù)位,所以電路中的電容值是可以改變的。
2、按鍵按下系統(tǒng)復(fù)位,是電容處于一個(gè)短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。
51單片機(jī)復(fù)位的方法有哪些
51單片機(jī)有五種常用的復(fù)位方法:
1.上電制動(dòng)復(fù)位,注意:只要電源的的上升時(shí)間不超過(guò)1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。
2.軟件復(fù)位,注意:復(fù)位信號(hào)保持時(shí)間是編程人員預(yù)定的時(shí)間。
3.按鍵電平復(fù)位,注意:復(fù)位信號(hào)保持時(shí)間大于2個(gè)時(shí)鐘周期。
4.外部脈沖復(fù)位,注意:復(fù)位信號(hào)保持時(shí)間大于2個(gè)時(shí)鐘周期。
5.看門狗溢出復(fù)位,注意:復(fù)位信號(hào)保持時(shí)間也是編程人員預(yù)定的時(shí)間。
【MCS-51單片機(jī)地址指針程序設(shè)置方法】
下面以數(shù)據(jù)塊傳送子程序?yàn)槔f(shuō)明R0和R1對(duì)外接RAM間接尋址的程序設(shè)計(jì)方法。假定數(shù)據(jù)塊的源首地址為1000H,目的首地址為3045H,數(shù)據(jù)塊長(zhǎng)度為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條指令。適當(dāng)應(yīng)用R0和R1地址指針,可以大大提高程序運(yùn)行效率。
結(jié)語(yǔ)
關(guān)于51單片機(jī)復(fù)位的相關(guān)介紹就到這了,如有不足之處歡迎指正。
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635356 -
復(fù)位電路
+關(guān)注
關(guān)注
13文章
322瀏覽量
44594
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論