單片機初學(xué)者的常見(jiàn)問(wèn)題
二十世紀跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現已進(jìn)入的電腦時(shí)代。不過(guò),這種電腦,通常是指個(gè)人計算機,簡(jiǎn)稱(chēng)pc機。它由主機、鍵盤(pán)、顯示器等組成。還有一類(lèi)計算機,大多數人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱(chēng)微控制器)。顧名思義,這種計算機的最小系統只用了一片集成電路,即可進(jìn)行簡(jiǎn)單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個(gè)裝置中,起著(zhù)有如人類(lèi)頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F在,這種單片機的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設備、導航系統、家用電器等。各種產(chǎn)品一旦用上了單片機,就能起到使產(chǎn)品升級換代的功效,常在產(chǎn)品名稱(chēng)前冠以形容詞——“智能型”,如智能型洗衣機等?,F在有些工廠(chǎng)的技術(shù)人員或其它業(yè)余電子開(kāi)發(fā)者搞出來(lái)的某些產(chǎn)品,不是電路太復雜,就是功能太簡(jiǎn)單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機或其它可編程邏輯器件上。
學(xué)習單片機是否很困難呢?應當說(shuō),對于已經(jīng)具有電子電路,尤其是數字電路基本知識的讀者來(lái)說(shuō),不會(huì )有太大困難,如果你對pc機有一定基礎,學(xué)習單片機就更容易。為使絕大多數讀者能用上單片機。我們這里將盡量按深入淺出、刪繁就簡(jiǎn)、理論聯(lián)系實(shí)際的原則把單片機的基本工作原理、使用方法交給讀者,以達到把大家領(lǐng)進(jìn)單片機之“門(mén)”的目的。不過(guò),單片機和pc機一樣,是實(shí)踐性很強的一門(mén)技術(shù),有人說(shuō)“計算機是玩出來(lái)的”,單片機亦一樣,只有多“玩”,也就是多練習、多實(shí)際操作,才能真正掌握它。因此,本講座會(huì )提供各種練習和實(shí)驗,并介紹一些適用于初學(xué)者且性?xún)r(jià)比較高的單片機和開(kāi)發(fā)系統的貨源。你只有認真完成成這些實(shí)踐環(huán)節,才能為進(jìn)一步深造,打好基礎。
“入門(mén)既不難,深造也是辦得到的”,只要你有恒心、有決心,跟隨我們的“連載”一步步走下去,將來(lái)就一定能在單片機世界里遨游。
單片機的組成
單片機要自動(dòng)完成計算,它應該具有哪些最重要的部分呢?
我們以打算盤(pán)為例計算一道算術(shù)題。例:36+163×156-166÷34?,F在要進(jìn)行運算,首先需要一把算盤(pán),其次是紙和筆。我們把要計算的問(wèn)題記錄下來(lái),然后第一步先算163×156,把它與36相加的結果記在紙上,然后計算166÷34,再把它從上一次結果中減去,就得到最后的結果。
現在,我們用單片機來(lái)完成上述過(guò)程,顯然,它首先要有代替算盤(pán)進(jìn)行運算的部件,這就是“運算器”;其次,要有能起到紙和筆作用的器件,即能記憶原始題目、原始數據和中間結果,還要記住使單片機能自動(dòng)進(jìn)行運算而編制的各種命令。這類(lèi)器件就稱(chēng)為“存貯器”。此外,還需要有能代替人作用的控制器,它能根據事先給定的命令發(fā)出各種控制信號,使整個(gè)計算過(guò)程能一步步地進(jìn)行。但是光有這三部分還不夠,原始的數據與命令要輸入,計算的結果要輸出,都需要按先后順序進(jìn)行,有時(shí)還需等待。如上例中,當在計算163×156時(shí),數字36就不能同時(shí)進(jìn)入運算器。因此就需要在單片機上設置按控制器的命令進(jìn)行動(dòng)作的“門(mén)”,當運算器需要時(shí),就讓新數據進(jìn)入?;蛘?,當運算器得到最后結果時(shí),再將此結果輸出,而中間結果不能隨便“溜出”單片機。這種對輸入、輸出數據進(jìn)行一定管理的“門(mén)”電路在單片機中稱(chēng)為“口”(port)。在單片機中,基本上有三類(lèi)信息在流動(dòng),一類(lèi)是數據,即各種原始數據(如上例中的36、163等)、中間結果(如166÷34所得的商4、余數30等)、程序(命令的集合)等。這樣要由外部設備通過(guò)“口”進(jìn)入單片機,再存放在存貯器中,在運算處理過(guò)程中,數據從存貯器讀入運算器進(jìn)行運算,運算的中間結果要存入存貯器中,或最后由運算器經(jīng)“出入口”輸出。用戶(hù)要單片機執行的各種命令(程序)也以數據的形式由存貯器送入控制器,由控制器解讀(譯碼)后變?yōu)楦鞣N控制信號,以便執行如加、減、乘、除等功能的各種命令。所以,這一類(lèi)信息就稱(chēng)為控制命令,即由控制器去控制運算器一步步地進(jìn)行運算和處理,又控制存貯器的讀(取出數據)和寫(xiě)(存入數據)等。第三類(lèi)信息是地址信息,其作用是告訴運算器和控制器在何處去取命令取數據,將結果存放到什么地方,通過(guò)哪個(gè)口輸入和輸出信息等。
存貯器又分為只讀存貯器和讀寫(xiě)存貯器兩種,前者存放調試好的固定程序和常數,后者存放一些隨時(shí)有可能變動(dòng)的數據。顧名思義,只讀存貯器一旦將數據存入,就只能讀出,不能更改(eprom、e2prom等類(lèi)型的rom可通過(guò)一定的方法來(lái)更改、寫(xiě)入數據——編者注)。而讀寫(xiě)存貯器可隨時(shí)存入或讀出數據。
實(shí)際上,人們往往把運算器和控制器合并稱(chēng)為中央處理單元——cpu。單片機除了進(jìn)行運算外,還要完成控制功能。所以離不開(kāi)計數和定時(shí)。因此,在單片機中就設置有定時(shí)器兼計數器,其基本結構與本連載之(二)中的舉例類(lèi)似。到這里為止,我們已經(jīng)知道了單片機的基本組成,即單片機是由中央處理器(即cpu中的運算器和控制器)、只讀存貯器(通常表示為rom)、讀寫(xiě)存貯器(又稱(chēng)隨機存貯器通常表示為ram)、輸入/輸出口(又分為并行口和串行口,表示為i/o口)等等組成。實(shí)際上單片機里面還有一個(gè)時(shí)鐘電路,使單片機在進(jìn)行運算和控制時(shí),都能有節奏地進(jìn)行。另外,還有所謂的“中斷系統”,這個(gè)系統有“傳達室”的作用,當單片機控制對象的參數到達某個(gè)需要加以干預的狀態(tài)時(shí),就可經(jīng)此“傳達室”通報給cpu,使cpu根據外部事態(tài)的輕重緩急來(lái)采取適當的應付措施。
現在,我們已經(jīng)知道了單片機的組成,余下的問(wèn)題是如何將它們的各部分連接成相互關(guān)聯(lián)的整體呢?實(shí)際上,單片機內部有一條將它們連接起來(lái)的“紐帶”,即所謂的“內部總線(xiàn)”。此總線(xiàn)有如大城市的“干道”,而cpu、rom、ram、i/o口、中斷系統等就分布在此“總線(xiàn)”的兩旁,并和它連通。從而,一切指令、數據都可經(jīng)內部總線(xiàn)傳送,有如大城市內各種物品的傳送都經(jīng)過(guò)干道進(jìn)行。
單片機的指令系統和匯編語(yǔ)言程序
前面已經(jīng)講述了單片機的幾個(gè)主要組成部分,這些部分構成了單片機的硬件。所謂硬件(hardware),就是看得到,摸得到的實(shí)體。但是,光有這樣的硬件,還只是有了實(shí)現計算和控制功能的可能性。單片機要真正地能進(jìn)行計算和控制,還必須有軟件(software)的配合。軟件主要指的是各種程序。只有將各種正確的程序“灌入”(存入)單片機,它才能有效地工作。單片機所以能自動(dòng)地進(jìn)行運算和控制,正是由于人把實(shí)現計算和控制的步驟一步步地用命令的形式,即一條條指令(instruction)預先存入到存貯器中,單片機在cpu的控制下,將指令一條條地取出來(lái),并加以翻譯和執行。就以?xún)蓚€(gè)數相加這一簡(jiǎn)單的運算來(lái)說(shuō),當需要運算的數已存入存貯器后,還需要進(jìn)行以下幾步: 第一步:把第一個(gè)數從它的存貯單元(location)中取出來(lái),送至運算器。
評論