單片機(jī)最小系統(tǒng)的調(diào)試方法
首先應(yīng)該確認(rèn)電源電壓是否正常。用電壓表測(cè)量接地引腳跟電源弓|腳之間的電壓,看是否是電源電壓,例如常用的5V。接下來(lái)就是檢查復(fù)位引腳電壓是否正常。分別測(cè)量按下復(fù)位按鈕和放開(kāi)復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一 般用示波器來(lái)看晶振引|腳的波形,注意應(yīng)該使用示波器探頭的“X10”檔。另一個(gè)辦法是測(cè)量復(fù)位狀態(tài)下的I0口電平,按住復(fù)位鍵不放,然后測(cè)量I0口(沒(méi)接外部上拉的P0口除外)的電壓,看是否是高電平,如果不是高電平,則多半是因?yàn)榫д駴](méi)有起振。另外還要注意的地方是,如果使用片內(nèi)ROM的話(huà)(大部分情況下如此,現(xiàn)在已經(jīng)很少有用外部擴(kuò)ROM的了),- 定要將EA弓|腳拉高,否則會(huì)出現(xiàn)程序亂跑的情況。有時(shí)用仿真器可以,而燒入片子不行,往往是因?yàn)镋A引腳。沒(méi)拉高的緣故(當(dāng)然,晶振沒(méi)起振也是原因之一)。經(jīng)過(guò)上面幾點(diǎn)的檢查, -般即可排除故障了。如果系統(tǒng)不穩(wěn)定的話(huà),有時(shí)是因?yàn)殡娫礊V波不好導(dǎo)致的。在單片機(jī)的電源弓|腳跟地弓|腳之間接上一個(gè)0.1uF的電容會(huì)有所改善。如果電源沒(méi)有濾波電容的話(huà),則需要再接一個(gè)更大濾波電容 ,例如220uF的。遇到系統(tǒng)不穩(wěn)定時(shí),就可以并上電容試試(越靠近芯片越好)。
另外,調(diào)試系統(tǒng)時(shí)一定要有耐性,靜下心來(lái)-點(diǎn)點(diǎn)的調(diào),千萬(wàn)不要著急。
復(fù)位電路:
當(dāng)MCS- 5|系列單片機(jī)的復(fù)位引|腳RST(全稱(chēng)RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù) 位狀態(tài)。
根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位和上電或開(kāi)關(guān)復(fù)位。
上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。常用的上電復(fù)位電路如下圖A中左圖所示。圖中電容C1和電阻R1對(duì)電源十5V來(lái)說(shuō)構(gòu)成微分電路。上電后 ,保持RST一段高電平時(shí)間,于單片機(jī)內(nèi)的等效電阻的作用,不用圖中電阻R1 ;也能達(dá)到上電復(fù)位的操作功能
單片機(jī)復(fù)位后的狀態(tài):
單片機(jī)的復(fù)位操作使單片機(jī)進(jìn)入初始化狀態(tài),其中包括使程序計(jì)數(shù)器PC= 0000H ,這表明程序從0000H地址單元開(kāi)始執(zhí)行。單片機(jī)冷啟動(dòng)后,片內(nèi)RAM為隨機(jī)值,運(yùn)行中的復(fù) 位操作不改變片內(nèi)RAM區(qū)中的內(nèi)容, 21個(gè)特殊功能寄存器復(fù)位后的狀態(tài)為確定值,見(jiàn)下表。
值得指出的是,記住一些特殊功能寄存器復(fù)位后的主要狀態(tài),對(duì)于了解單片機(jī)的初態(tài),減少應(yīng)用程序中的韌始化部分是十分必要的。
說(shuō)明:表中符號(hào)*為隨機(jī)狀態(tài);
A= 00H ,表明累加器已被清零;
特殊功能寄存器初始狀態(tài)特殊功能寄存器初始狀態(tài)
單片機(jī)最小系統(tǒng)調(diào)試方法
A 00H TMOD 00H
B 00H TCON 00H 。
PSW 00H THO 00H
SP 07H TLO 00H
DPL
00H TH1 00H
DPH 00H TL1 00H
PO~P3 FFH SBUF不定
IP ***00000B SCON 00H
IE 0**00000B PCON *******B
PSW = 00H ,表明選寄存器0組為工作寄存器組;
SP =07H ,表明堆棧指針指向片內(nèi)RAM 07H字節(jié)單元,根據(jù)堆棧操作的先加后壓法則,第-個(gè)被壓入的內(nèi)容寫(xiě)入到08H單元中;
Po-P3= FFH ,表明已向各端口線(xiàn)寫(xiě)入1 ,此時(shí),各端口既可用于輸入又可用于輸出;IP= xx x00000B ,表明各個(gè)中斷源處于低優(yōu)先級(jí);
IE = 0x x00000B ,表明各個(gè)中斷均被關(guān)斷;
系統(tǒng)復(fù)位是任何微機(jī)系統(tǒng)執(zhí)行的第一步,使整個(gè)控制芯片回到默認(rèn)的硬件狀態(tài)下。51單片機(jī)的復(fù)位是由RESET引腳來(lái)控制的,此弓|腳與融平相接超過(guò)24個(gè)振蕩周期后, 51單片機(jī)即進(jìn)入芯片內(nèi)部復(fù)位狀態(tài),而且一直在此狀態(tài)下等待,直到RESET引腳轉(zhuǎn)為低電平后,才檢查EA弓腳是高電平或低電平,若為高電平則執(zhí)行芯片內(nèi)部的程序代碼,若為低電平便會(huì)執(zhí)行外部程序。
51單片機(jī)在系統(tǒng)復(fù)位時(shí),將其內(nèi)部的一些重要寄存器設(shè)置為特定的值,( 在特殊寄存器介紹時(shí)再做詳細(xì)說(shuō)明)至于內(nèi)部RAM內(nèi)部的數(shù)據(jù)則不變。
單片機(jī)最小系統(tǒng)調(diào)試過(guò)程中會(huì)遇到哪些問(wèn)題
2.用示波器確定晶振是否起振。
3.單片機(jī)的是否工作。比如,有些單片機(jī)一上電,它的有些管腳會(huì)輸出脈沖,可以通過(guò)示波器查看。
單片機(jī)最小系統(tǒng)設(shè)計(jì)制作及開(kāi)發(fā)流程
在電子設(shè)計(jì)中,單片機(jī)作為系統(tǒng)的控制核心廣泛應(yīng)用。通過(guò)對(duì)單片機(jī)最小系統(tǒng)硬件的設(shè)計(jì)制作,可以加深對(duì)單片機(jī)的了解,最小系統(tǒng)也是初學(xué)單片機(jī)要求掌握的最基本的知識(shí)和實(shí)踐內(nèi)容。當(dāng)初,軒酷電子就是通過(guò)自己焊接第一塊最小系統(tǒng)開(kāi)啟自己的單片機(jī)學(xué)習(xí)生涯的。
單片機(jī)最小系統(tǒng)電路板可選用stc89C51、stc89C52等DIP-40封裝的單片機(jī)作為MCU。最小系統(tǒng)包括時(shí)鐘電路,復(fù)位電路,由此再拓展到各類(lèi)制作。
單片機(jī)時(shí)鐘信電路原理圖如圖所示。在引腳XTAL1和XTAL2跨接晶振Y1和微調(diào)電容C5,C6就構(gòu)成了內(nèi)部振蕩方式,由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。其中Y1是可插拔更換的,默認(rèn)值是11.0592MHz
系統(tǒng)板采用上電自動(dòng)復(fù)位或按鍵手動(dòng)復(fù)位方式。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。手動(dòng)復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,用按鈕開(kāi)關(guān)操作使單片機(jī)復(fù)位。
附帶一個(gè)最簡(jiǎn)單的拓展例程:?jiǎn)纹瑱C(jī)驅(qū)動(dòng)發(fā)光二極管的設(shè)計(jì):
首先做設(shè)計(jì)呢我們需要電路原理圖,這個(gè)可以上網(wǎng)查找,也可以自己去畫(huà),我們給出這個(gè)設(shè)計(jì)的電路原理圖:
然后就是軟件設(shè)計(jì)了,這個(gè)例程很簡(jiǎn)單,我們貼出程序,對(duì)于比較復(fù)雜的例程,就需要好好查閱資料,學(xué)習(xí)元器件的相關(guān)協(xié)議和使用規(guī)則,然后進(jìn)行編程,如果遇到實(shí)在沒(méi)有頭緒的問(wèn)題,可以借鑒前人的經(jīng)驗(yàn),好好地分析程序,弄明白程序的原理,然后自己再去嘗試著書(shū)寫(xiě),如此才能夠?qū)W有所成。
程序:
#include 《reg51.h》 //包含頭文件,在“reg51.h”上右鍵單擊,并打開(kāi),可以看到它里面的定義
//當(dāng)然也可以改成 reg52.h STC.H 功能一樣的,只是定義的IO口有一點(diǎn)區(qū)別,51單片機(jī)可以通用。
sbit led=P1^0; //定義一個(gè)LED 為P1.0 IO口
void main() //C語(yǔ)言主函數(shù)
{
led=0; //單片機(jī)IO P1.0腳輸出一個(gè)低電平,點(diǎn)亮發(fā)光管。 高電平為5V 低電平為0。
while(1);
}
最后呢,我們將硬件連接好,焊接好,將程序下載到單片機(jī)中,就實(shí)現(xiàn)了我們的功能,當(dāng)然,對(duì)于復(fù)雜的例程也可能不會(huì)一次成功,這時(shí)候就需要我們查找原因,分析。
小編推薦閱讀:
-
單片機(jī)最小系統(tǒng)
+關(guān)注
關(guān)注
8文章
62瀏覽量
48406
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論