0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機程序的作用是什么?如何編寫?如何寫入單片機?

j4AI_wujianying ? 來源:未知 ? 作者:李倩 ? 2018-04-27 15:35 ? 次閱讀

1.什么是單片機?

簡單地說,單片機就是一個小計算機系統(tǒng)。為了說明清楚這個問題,得要從計算機說起。提到計算機,大家可能馬上會想到“顯示器、鼠標、鍵盤”,不過,這不是一個計算機的核心和關鍵,計算機的核心部分在一邊的機箱里呢。打開機箱,可以看到,機箱里有主板、硬盤、光驅等。仔細觀察主板,這上面有CPU、內存條、BIOS芯片,通常還有25針的打印機接口等,這些部件都是通過主板上的連線相互連接。

不論計算機復雜程度如何,它總是由運算器,控制器,存儲器,輸入/輸出接口,總線這五個部分組成。通常運算器和控制器被做成一塊芯片,也就是CPU(中央處理器)。在計算機主板上,內存條和BIOS芯片就是存儲器,25針打印機接口就是輸出/輸出設備,而總線則被設計在主板上,即各部件相互連接的線路。

在一些應用場合,人們不需要計算機完成十分復雜的運算,但卻希望計算機小巧,可靠,價格低。于是人們就把組成計算機的這5個部分全部集成到一塊芯片上,也說是一塊芯片就能構成一個獨立的計算機,在當時的技術條件下,這是一件了不起的事情,于是人們就用這個特征來為之命名,稱為“單片機”。

將構成一個計算機所需要的5個部分全部都集成到一塊芯片中,這塊芯片是否要很大、價格是否很高呢?并非如此。如果要把圖1所示主板上的所有元件都集成到一塊芯片中,那當然非常昂貴,可能技術上也無法實現(xiàn),但很多單片機中所需要用到的功能完全沒必要那么強大,因此很多單片機體積很小,價格也很低。如市場上常見的單片機有8,14,16,18,20,28,40,84等引腳,有些甚至只有6個引腳,如圖2所示是微芯公司(Microchip)發(fā)布的一款6引腳單片機。而價格從幾元到幾十、上百元的都有,有些品種在大批量定購時甚至可以低至1元以下。

剛接觸到單片機的人往往會有個疑惑:既然人們已經(jīng)有能力制造功能強大的計算機,為何還要生產些功能不強的計算機?其實,功能強弱并不是決定是否生產的決定因素,市場需要才是關鍵。比如,用來控制一臺電箱的計算機顯然沒必要使用“奔騰”芯片的強大運算能力,只要進行非常簡單的計算,作個比較,看一看溫度是否在所控制區(qū)間之內,然后再做出相應的控制就行了。

單片機在人們的生活中、工農業(yè)生產設備中處處有應用,例如各定時裝置、自動控制裝置等。愛好者學習單片機應該注意觀察事物,找到自己周圍能夠使用單片機的場合,從而將學到的知識應用到實際中去。例如,使用單片機技術改造傳統(tǒng)的機電設備、在特定的場合使用單片機替代PLC等就有著廣闊的應用前景;又如,使用單片機控制電扇、抽油煙機、空調等,從而制作出具有更強功能、能夠通用的控制器,也是可以嘗試的。

2.單片機是如何工作的?

單片機的工作過程就是一個不斷“取指令-分析指令-執(zhí)行指令”的過程。單片機的程序以一條一條指令的形式存放在程序存儲器中,單片機開始工作后,就從程序存儲器的特定位置開始取指令,然后由單片機內部的控制器對指令進行分析,根據(jù)指令要求,進行“取數(shù)、送數(shù)、算術運算、邏輯運算、跳轉”等基本操作中的一種或幾種,這些操作都在一個規(guī)定的周期中完成,執(zhí)行完了以后,到下一個存儲器單元中取指令,重復剛才的操作(當然,這些要執(zhí)行的操作具體內容可能跟上一次不一樣了),如此不斷重復,直到斷電為止。這里所說的“存儲器特定位置”、“規(guī)定的周期”等與單片機的型號有關,下面以51系列單片機為例來說明。

在51系列單片機中有一個名為PC的寄存器(就是用來存數(shù)的一個容器),在單片機復位后,這個寄存器中的內容被置為0000H,單片機內部的控制器總是根據(jù)PC寄存器中的值去相應的程序存儲器單元取指令,因此,開機后,將從0000H單元取第一條指令,分析執(zhí)行,同時,PC值將作相應的調整,指向將要執(zhí)行的下一條指令的位置,下一條指令的位置在哪里呢?對于51單片機來說,一條指令可能占用一個字節(jié)、二個字節(jié)或三個字節(jié),如果第一條指令是單字節(jié)指令,取完第一條指令以后,PC的值就會變?yōu)?001H,因此,第一條指令執(zhí)行完畢以后,將從0001H單元中取出第二條指令來執(zhí)行,以此類推。如果程序是順序執(zhí)行的,PC的值將始終不斷增加,如果程序中有跳轉指令,該指令將影響PC中的值,使PC中的值指向將要執(zhí)行的下一條指令所在地址單元。這種跳轉既可能是正向的,例如由0000H跳轉到0030H,也可能是反向的,即往回跳轉,如由200H跳轉到100H。正是由于指令可以影響到PC中的值,才使得程序可以實現(xiàn)“分支”、“循環(huán)”等各種功能。那么,執(zhí)行一條指令的時間又是多少呢?對于51單片機來說,指令執(zhí)行時間有三種可能,單周期、雙周期和四周期,不管一條指令需要做多少工作,都必然在規(guī)定的時間內完成。

3.單片機程序的作用是什么?如何編寫?如何寫入單片機?

單片機程序的用途是讓單片機“聽話”,按人們所預定的設計完成一系列動作,最終實現(xiàn)一個特定的功能。

例如使用單片機控制流水燈,接通電源后,第一次燈亮,然后延時一段時間,第二次燈亮,然后延時一段時間,第三次燈亮……,延時一段時間后又回到第一次燈亮,如此循環(huán)不已。這里就有這樣的一些問題:第一次亮幾盞燈、延時多少時間、一個循環(huán)中設置多少次不同的燈亮的情況……,這些決定了流水燈的花樣,流動的速度,而這些,單片機顯然沒有自我判斷能力,必須依靠人們給它“布置”任務,而它則是按人們的設計依次執(zhí)行。

要讓單片機“聽話”,就要用單片機能夠聽懂的語言發(fā)布命令,單片機能夠聽懂的語言稱之為“指令”。任何一種型號單片機能夠接受的指令都是有限的,51單片機的指令條數(shù)為111條,而PIC單片機的指令僅有35條。每一條指令完成一個最基本的動作,人們?yōu)榱艘瓿梢粋€特定的功能,就要將這些指令排列組合,成為一個指令序列,這就是程序。

指令的表示形式有兩種:機器語言和匯編語言。以51為例,如果要讓P1.0引腳變?yōu)榈碗娖?,用機器語言來表示就是 C2H 90H,將這兩個數(shù)放進單片機的程序存儲器中,單片機執(zhí)行后,就可以讓P1.0引腳變?yōu)榈碗娖搅?而要讓P1.0引腳變?yōu)楦唠娖?,用機器語言來表示就是D2H,90H。至于為什么是這兩個數(shù)字,大家沒必要追究,這是設計這塊芯片的設計工程師規(guī)定的,我們不能更改,只能學習。

C2H,90H就是一條指令,顯然這樣的指令形式是很難記憶的,編程也非常困難,于是人們使用了“助記符”來代替這些數(shù)字。例如C2H,90H的助記符是CLR P1.0,而D2H,90H的助記符是SETB P1.0,由于助記符采用了英語字母的縮寫,有一定含義,因此比數(shù)字形式的指令易記、易用。使用助記符形式的指令來編寫程序就稱之為“匯編語言源程序”。但是匯編語言源程序是沒有辦法直接送到單片機內部去的,使用助記符形式的指令編寫的程序最終還是要變成為諸如:C2H,90H,D2H,90H,這種形式的指令才能被送入單片機的程序存儲器。將助記符形式的指令變?yōu)閿?shù)字形式的指令的過程稱之“匯編”。匯編有兩種方法,一種是“手工匯編”,即人們通過查表的形式找到所寫匯編指令的數(shù)字形式然后寫下來;另一種是“機器匯編”,即編寫好匯編語言源程序以后,使用一個計算機軟件對這些源程序進行處理,從而得到數(shù)字形式的指令序列,這個指令序列通常被稱為“機器碼”,即可以直接被機器所執(zhí)行的代碼。

機器匯編后得到的數(shù)字形式的指令序列以一個文件的形式保存在磁盤上,這個文件的擴展名一般是HEX,即人們常說的HEX文件。得到了HEX文件后,就可以將其寫入程序存儲器中了。要將程序寫入芯片,通常需要一個稱之為“編程器”的專用設備,在計算機上運行與之配套的編程軟件,然后在這個軟件中打開HEX文件,即可將其寫入芯片中。隨著技術的發(fā)展,編程方式越來越多,但總的概念是這樣的,具體的細節(jié),將在另一個問題“單片機編程器是什么”中回答。

4. 8位、16位、32位單片機中的“XX位”指什么?

8位、16位、32位是指單片機的“字長”,也就是一次運算中參與運算的數(shù)據(jù)長度,這個位是指二進制位。以8位為例,8位二進制的表達范圍是0000,0000~1111,1111即十進制的0~255,即每次參與運算的數(shù)據(jù)最大不能超過255。而16位機的字長是16位,其數(shù)據(jù)表達范圍是0~65535,即每次參與運算的數(shù)據(jù)最大不能超過65535;32位單片機的字長是32位,其數(shù)據(jù)表達范圍是0~4294967295,即每次參與運算的數(shù)據(jù)最大不能超過4294967295。

8位、16位、32位與單片機的性能密切相關,通常32位機的性能要高于16位機,而16位機的性能又要高于8位機。為什么會這樣呢?這要從2個方面來分析。第一,位數(shù)不同,運算效率不同。對于8位機而言,由于在一次運算中的每一個數(shù)都不能超過8位,因此即便如100+200=300這樣的運算,它也不能一次完成,因為300已超過了8位所能表達的最大范圍(255),因此,要對這樣的一個式子進行運算,就要編寫一段程序,將運算分步完成,最后合成起來得到一個正確的結果。而如果采用16位單片機來運算的話,那么一次運算就夠了,顯然分步完成所需要的時間要遠遠大于單步完成所需要的時間。同樣道理,當某個運算的結果或者中間值大于65535時,16位機也不能一次運算,要分步實現(xiàn)它,而32位機則可以一次運算完成。第二,商業(yè)因素。通常運算能力越高,表示這個單片機性能越強,當然,價格高一些人們也可以接受,有了價格空間,生產商通常都會在這些芯片中提供更多的其他的功能,使得芯片的整體性能得到更大的提升。

典型的單片機中,80C51系列,PIC系列,AVR系列都是8位單片機;80C196、MSP430系列是16位機;而目前非常熱門的ARM系列則是32位機。

5. 單片機編程器、仿真器、燒寫器、下載線各是什么?有什么用處?

單片機編程器是用來將程序代碼寫入存儲器芯片或者單片機內部的工具, 當芯片是雙列直插形式時,直接插在座子上就可以燒寫了。 另一種方法是使用下載線。隨著技術的進步,越來越多的單片機芯片開始支持“ISP”功能,即In System Programmer,在線可編程技術。利用這種技術,將空白的(尚未編程的)芯片直接焊在印刷線路板上,利用預先留下的幾個引腳即可對芯片進行編程,不必將芯片拆下來放到編程器上,因此,這給小批量制作帶來了極大的方便,也省去了購買價格昂貴的適配器。

6.自學單片機必備的硬件設備有哪些?

學習單片機,除了需要電腦以外,還需要以下的一些器材。

1.實驗板

如果你對單片機還一無所知,那么自制或者購買一塊實驗板是比較好的選擇。通常在實驗板上會設計一些開關、LED指示燈、數(shù)碼管、各種接口芯片等常用器件,通過對這些器件的編程練習,逐步掌握單片機的編程技術。

2.仿真

仿真機的用途是替代電路板上的單片機芯片,仿真機通過串行口、USB接口等方式與與PC機聯(lián)機通信,接收PC端控制軟件發(fā)出的指令,以單步、過程單步、全速運行等各種方式來執(zhí)行程序,以單步或過程單步方式執(zhí)行程時,每次執(zhí)行完程序后可以將執(zhí)行的結果反饋到PC端的控制軟件中顯示出來。由于單片機編程時必須要明確每一條指令執(zhí)行完畢后會有什么樣的結果,弄清實際運行后的結果是否與設想的結果相符,因此,仿真功能對于單片機的學習和開發(fā)可以起到很重要的幫助作用。

3.編程器或者下載線

其用途是將代碼寫入單片機芯片內部。對于學習者來說,有了仿真機也可暫時不配編程器或下載線,因為有了實驗板、仿真機就可以做實驗了。但是建議配置一臺,這樣可以對單片機開發(fā)的各個環(huán)節(jié)都有所了解。

4.萬用表、電烙鐵等電子制作工具

單片機開發(fā),不是簡單的編程,到目前為止,還少有純粹的“單片機程序員”,通常要求開發(fā)者軟、硬件方面都要熟悉,因此,這些電子制作工作還是要配備的。

需要說明的是,這里所說的仿真機、實驗板、下載線或編程器等都是就一般概念而言的,并不涉及到具體的產品,市場上也有一些產品在設計時將實驗板、仿真功能、下載或編程功能等中的一部分或者全部都集成到一塊板上,構成一整套的實驗系統(tǒng)。

7.目前國內常用的單片機有哪些?

1.80C51及其兼容系列

(1)80C51系列,這是最基本的系列。包括80C31,80C51,87C51,80C32,80C52,87C52等芯片,雖然這些芯片已基本不再使用,但它們是后續(xù)發(fā)展的芯片的基礎。其中80C31單片機片內沒有ROM,80C51內部是一次性可寫4K的PROM,87C51內部是4K的EEPROM,這幾種芯片內部RAM均為128字節(jié)。而后三種芯片其內部RAM均為8K,后兩種芯片的片內ROM為8K字節(jié)。

(2)80C51兼容系列

這些芯片通常都與51系列單片機在指令一級兼容,但都擴充了諸多的新功能。常見的主要有以下一些。

STC89系列單片機,其主要特點有:直接通過串口對單片機編程;可編程為倍速運行;超低功耗;內置看門狗;內部FLASH ROM可作為EEPROM作斷電保存數(shù)據(jù)之用。

STC12系列單片機,其主要特點有:單時鐘周期,工作頻率0~35M,相當于普通80C510~420M;寬電壓范圍;低功耗;芯片內置E2PROM功能;內置硬件看門狗;通用I/O口可以設置為四種工作模式,在強上拉模式時可以“吐出”電流。

菲利普的LPC系列,其主要特點有:內置RC置振蕩器,選擇RC振蕩器時不需外接振蕩器件;所有口線均有20mA的LED驅動能力;有較寬的工作電壓范圍。

C8051F系列,其主要特點有:一個機器周期僅為一個時鐘周期;增加了中斷源;有內部獨立的時鐘源或接外部時鐘,并能在程序運行時實現(xiàn)內、外部時鐘的切換。每個I/O口引腳都可以設置為推挽或漏極開路輸出,C8051F系列單片機I/O口最為獨特的是增加了數(shù)字交叉開關,利用數(shù)字交叉開關可將內部數(shù)字系統(tǒng)資源定向到P0、P1和P2端口I/O引腳。這個系列很多型號的芯片具有ADCDAC、PCA等功能。

2.PIC系列

PIC單片機的發(fā)展思路與51單片機不同,它不搞單純的功能堆積,而是從實際出發(fā),重視產品的性能與價格比,依靠發(fā)展多種型號來滿足不同層次的應用要求;精簡指令使其執(zhí)行效率大為提高。目前有PIC10、PIC12、PIC16、PIC18系列數(shù)百個品種。以PIC16F676芯片為例,該芯片內置1K字FLASH ROM,128字節(jié)EEPROM,64字節(jié)RAM,8路10位AD轉換器,內置精度高達±1%的振蕩器,極低功耗,寬工作電壓范圍,這樣一款高性能的14腳芯片,價格不到¥7,性價比相當高。

3.AVR系列

AVR系列單片機是增強型RISC結構的單片機,其主要特點是:速度快,一個機器周期僅為一個時鐘周期;品種豐富,與PIC系列類似,依靠發(fā)展多種型號來滿足不同層次的應用要求;支持ISP、IAP功能,可在線編程,方便遠程維護;工作范圍寬、抗干擾能力強。以ATMEGA8芯片為例,該芯片內置8K Flash ROM,512字節(jié)EEPROM,1K字節(jié)的RAM,8路10位AD,內置RC振蕩器。這樣一款高性能28引腳的芯片,價格僅在¥7左右,性價比也相當高。

4.其他

其他常用的單片機包括:ST、EMC、摩托羅拉、三星等等。這些單片機有些市場用量很大,但我們并沒有重點介紹,因為我們介紹的內容主要針對業(yè)余愛好者,有些芯片雖然功能強大、性價比也很高,但其并不針對業(yè)余愛好者,小批量的芯片很難買到,仿真機、C編譯器等開發(fā)工具價格極其昂貴,所以這里不作介紹,有興趣可以在網(wǎng)絡上搜索有關資料。

8.常用單片機的大致價位是多少?

單片機的價格相差很大,從小于1元到幾十元,上百元不等。下面就大致介紹一下常用單片機的價格。

9.單片機程序編寫、仿真、調試常用的軟件有哪些?

不同的型號的單片機需要不同的開發(fā)軟件。我們以80C51系列、PIC系列和AVR系列為例分別說明。

單片機程序的編寫不需要任何特殊的軟件,只要是文本編緝軟件就可以了,如WINDOWS自帶的記事本,WORD等,不過這些軟件編寫并不方便,有一些更好的文本編緝器可供選擇,如UltraEdit,PE2等。當然,人們最常用的還是使用開發(fā)軟件自帶的編緝器來進行編寫。以80C51系列單片機為例,最為流行的軟件是Keil軟件。Keil軟件是一款綜合開發(fā)工具,內置了編緝器,ASM匯編器,C51編譯器,調試器等部分。

10.能否推薦學習單片機的書籍或其他形式的教程?

市場上單片機類書極多,作為初學者入門一般還是以選擇80C51系列為宜,如果你有明確的工作對象,那另當別論。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6030

    文章

    44489

    瀏覽量

    631980
  • 寄存器
    +關注

    關注

    31

    文章

    5294

    瀏覽量

    119814

原文標題:單片機常見問題10問

文章出處:【微信號:wujianying_danpianji,微信公眾號:單片機精講吳鑒鷹】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機是什么?單片機的主要作用是什么

    單片機是什么?單片機的主要作用是什么?單片機有哪些應用領域呢?
    發(fā)表于 01-17 06:10

    單片機基礎知識C51版

    單片機基礎知識C51版,學習單片機的基礎知識。包括單片機的簡介,單片機程序如何寫,
    發(fā)表于 11-18 16:48 ?0次下載

    單片機程序燒錄工具集合

    單片機程序燒錄工具集合單片機程序燒錄工具集合單片機程序燒錄工具集合
    發(fā)表于 12-28 15:34 ?101次下載

    使用單片機編寫的音樂程序

    本文檔的主要內容詳細介紹的是使用單片機編寫的音樂程序。
    的頭像 發(fā)表于 01-21 12:18 ?5818次閱讀
    使用<b class='flag-5'>單片機</b><b class='flag-5'>編寫</b>的音樂<b class='flag-5'>程序</b>

    單片機程序如何編寫

    設計編寫單片機程序是一個漸進的過程不可一蹴而就,畢竟單片機程序是與硬件有密切關系的,我們一般稱為單片機
    的頭像 發(fā)表于 02-12 14:38 ?3.8w次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>程序</b>如何<b class='flag-5'>編寫</b>

    單片機按鍵使用程序 (51單片機

    單片機獨立按鍵使用程序 (51單片機)獨立按鍵是單片機中很重要的一個器件,在這篇文章里,通過這個用獨立按鍵控制LED燈的小程序來介紹獨立按鍵
    發(fā)表于 11-11 18:36 ?108次下載
    <b class='flag-5'>單片機</b>按鍵使用<b class='flag-5'>程序</b> (51<b class='flag-5'>單片機</b>)

    基于51單片機的呼吸燈程序編寫

    利用51單片機編寫的呼吸燈小程序,實驗程序內容截圖分享~
    發(fā)表于 11-23 16:36 ?33次下載
    基于51<b class='flag-5'>單片機</b>的呼吸燈<b class='flag-5'>程序</b><b class='flag-5'>編寫</b>

    詳解單片機復位電路的作用及設計

    單片機復位電路的作用是:使單片機恢復到起始狀態(tài),讓單片機程序從頭開始執(zhí)行,運行時鐘處于穩(wěn)定狀態(tài)、各種寄存器、端口處于初始化狀態(tài)等等。目的是
    的頭像 發(fā)表于 05-31 16:32 ?1w次閱讀

    單片機怎么寫入程序并燒錄程序?快收藏

    同的編程語言,有的是C++,有的是匯編語言。可以參考單片機的開發(fā)手冊或技術手冊。寫好程序后,就可以進行下一步了。 程序編寫完成后,還需要通過深圳單片
    的頭像 發(fā)表于 05-24 18:03 ?5253次閱讀
    <b class='flag-5'>單片機</b>怎么<b class='flag-5'>寫入</b><b class='flag-5'>程序</b>并燒錄<b class='flag-5'>程序</b>?快收藏

    單片機仿真器的作用是什么?

    應用程序。在這篇文章中,我們將探討單片機仿真器的作用以及它們在嵌入式系統(tǒng)開發(fā)中的重要性。 首先,單片機仿真器的主要作用是提供一個仿真運行環(huán)境
    的頭像 發(fā)表于 09-08 10:39 ?1836次閱讀

    單片機復位電路的作用 介紹幾種常見的單片機復位電路

    單片機復位電路是單片機系統(tǒng)中非常重要的一個部分,其主要作用是單片機的電源電壓從高電平變?yōu)榈碗娖剑瑥亩?b class='flag-5'>單片機重新開始工作。
    發(fā)表于 09-08 17:02 ?3329次閱讀

    單片機復位電路的作用和實現(xiàn)原理

      單片機復位電路是單片機系統(tǒng)中的一個重要組成部分,它的作用是在系統(tǒng)上電或異常情況下對單片機進行復位操作,使單片機能夠從初始狀態(tài)開始工作。
    的頭像 發(fā)表于 10-20 17:31 ?4980次閱讀

    單片機芯片怎么寫入程序

    單片機芯片的程序寫入是通過將程序代碼寫入單片機芯片的非易失性存儲器(如Flash)中實現(xiàn)的。 在
    的頭像 發(fā)表于 01-05 14:06 ?7676次閱讀

    單片機燒錄程序用什么軟件

    單片機燒錄程序單片機開發(fā)過程中的一個重要環(huán)節(jié),涉及到將編寫好的程序代碼通過燒錄器寫入
    的頭像 發(fā)表于 09-02 10:05 ?736次閱讀

    單片機怎么寫入程序

    程序通常涉及以下幾個步驟: 選擇單片機和開發(fā)環(huán)境 : 確定項目需求,選擇合適的單片機型號。 安裝相應的開發(fā)環(huán)境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機連接到開發(fā)板或
    的頭像 發(fā)表于 10-21 11:21 ?217次閱讀