單片機(jī)學(xué)習(xí)方法
一、總線:我們知道,一個(gè)電路總是由元器件通過(guò)電線連接而成的,在模擬電路中,連線并不成為一個(gè)問(wèn)題,因?yàn)楦髌骷g一般是串行關(guān)系,各器件之間的連線并不很多,但計(jì)算機(jī)電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協(xié)調(diào),所以需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨(dú)連線,則線的數(shù)量將多得驚人,所以在微處理機(jī)中引入了總線的概念,各個(gè)器件共同享用連線,所有器件的8根數(shù)據(jù)線全部接到8根公用的線上,即相當(dāng)于各個(gè)器件并聯(lián)起來(lái),但僅這樣還不行,如果有兩個(gè)器件同時(shí)送出數(shù)據(jù),一個(gè)為0,一個(gè)為1,那么,接收方接收到的究竟是什么呢?這種情況是不允許的,所以要通過(guò)控制線進(jìn)行控制,使器件分時(shí)工作,任何時(shí)候只能有一個(gè)器件發(fā)送數(shù)據(jù)(可以有多個(gè)器件同時(shí)接收)。器件的數(shù)據(jù)線也就被稱(chēng)為數(shù)據(jù)總線,器件所有的控制線被稱(chēng)為控制總線。在單片機(jī)內(nèi)部或者外部存儲(chǔ)器及其它器件中有存儲(chǔ)單元,這些存儲(chǔ)單元要被分配地址,才能使用,分配地址當(dāng)然也是以電信號(hào)的形式給出的,由于存儲(chǔ)單元比較多,所以,用于地址分配的線也較多,這些線被稱(chēng)為地址總線。二、數(shù)據(jù)、地址、指令:之所以將這三者放在一起,是因?yàn)檫@三者的本質(zhì)都是一樣的——數(shù)字,或者說(shuō)都是一串‘0’和‘1’組成的序列。換言之,地址、指令也都是數(shù)據(jù)。指令:由單片機(jī)芯片的設(shè)計(jì)者規(guī)定的一種數(shù)字,它與我們常用的指令助記符有著嚴(yán)格的一一對(duì)應(yīng)關(guān)系,不可以由單片機(jī)的開(kāi)發(fā)者更改。地址:是尋找單片機(jī)內(nèi)部、外部的存儲(chǔ)單元、輸入輸出口的依據(jù),內(nèi)部單元的地址值已由芯片設(shè)計(jì)者規(guī)定好,不可更改,外部的單元可以由單片機(jī)開(kāi)發(fā)者自行決定,但有一些地址單元是一定要有的(詳見(jiàn)程序的執(zhí)行過(guò)程)。數(shù)據(jù):這是由微處理機(jī)處理的對(duì)象,在各種不同的應(yīng)用電路中各不相同,一般而言,被處理的數(shù)據(jù)可能有這么幾種情況:
1?地址(如MOV DPTR,1000H),即地址1000H送入DPTR。
2?方式字或控制字(如MOV TMOD,#3),3即是控制字。
3?常數(shù)(如MOV TH0,#10H)10H即定時(shí)常數(shù)。
4?實(shí)際輸出值(如P1口接彩燈,要燈全亮,則執(zhí)行指令:MOV P1,#0FFH,要燈全暗,則執(zhí)行指令:MOV P1,#00H)這里0FFH和00H都是實(shí)際輸出值。又如用于LED的字形碼,也是實(shí)際輸出的值。
理解了地址、指令的本質(zhì),就不難理解程序運(yùn)行過(guò)程中為什么會(huì)跑飛,會(huì)把數(shù)據(jù)當(dāng)成指令來(lái)執(zhí)行了。
三、P0口、P2口和P3的第二功能用法:初學(xué)時(shí)往往對(duì)P0口、P2口和P3口的第二功能用法迷惑不解,認(rèn)為第二功能和原功能之間要有一個(gè)切換的過(guò)程,或者說(shuō)要有一條指令,事實(shí)上,各端口的第二功能完全是自動(dòng)的,不需要用指令來(lái)轉(zhuǎn)換。如P3.6、P3.7分別是WR、RD信號(hào),當(dāng)微片理機(jī)外接RAM或有外部I/O口時(shí),它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機(jī)一執(zhí)行到MOVX指令,就會(huì)有相應(yīng)的信號(hào)從P3.6或P3.7送出,不需要事先用指令說(shuō)明。事實(shí)上‘不能作為通用I/O口使用’也并不是‘不能’而是(使用者)‘不會(huì)’將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,并且當(dāng)單片機(jī)執(zhí)行到這條指令時(shí),也會(huì)使P3.7變?yōu)楦唠娖,但使用者不?huì)這么去做,因?yàn)檫@通常會(huì)導(dǎo)致系統(tǒng)的崩潰。
四、程序的執(zhí)行過(guò)程: 單片機(jī)在通電復(fù)位后8051內(nèi)的程序計(jì)數(shù)器(PC)中的值為‘0000’,所以程序總是從‘0000’單元開(kāi)始執(zhí)行,也就是說(shuō):在系統(tǒng)的ROM中一定要存在‘0000’這個(gè)單元,并且在‘0000’單元中存放的一定是一條指令。
五、堆棧: 堆棧是一個(gè)區(qū)域,是用來(lái)存放數(shù)據(jù)的,這個(gè)區(qū)域本身沒(méi)有任何特殊之處,就是內(nèi)部RAM的一部份,特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的‘先進(jìn)后出,后進(jìn)先出’,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即‘PUSH’和‘POP’,有一個(gè)特殊的專(zhuān)為其服務(wù)的單元,即堆棧指針SP,每當(dāng)執(zhí)一次PUSH指令時(shí),SP就(在原來(lái)值的基礎(chǔ)上)自動(dòng)加1,每當(dāng)執(zhí)行一次POP指令,SP就(在原來(lái)值的基礎(chǔ)上)自動(dòng)減1。由于SP中的值可以用指令加以改變,所以只要在程序開(kāi)始階段更改了SP的值,就可以把堆棧設(shè)置在規(guī)定的內(nèi)存單元中,如在程序開(kāi)始時(shí),用一條MOV SP,#5FH指令,就時(shí)把堆棧設(shè)置在從內(nèi)存單元60H開(kāi)始的單元中。一般程序的開(kāi)頭總有這么一條設(shè)置堆棧指針的指令,因?yàn)殚_(kāi)機(jī)時(shí),SP的初始值為07H,這樣就使堆棧從08H單元開(kāi)始往后,而08H到1FH這個(gè)區(qū)域正是8031的第二、三、四工作寄存器區(qū),經(jīng)常要被使用,這會(huì)造成數(shù)據(jù)的混亂。不同作者編寫(xiě)程序時(shí),初始化堆棧指令也不完全相同,這是作者的習(xí)慣問(wèn)題。當(dāng)設(shè)置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專(zhuān)用內(nèi)存,它還是可以象普通內(nèi)存區(qū)域一樣使用,只是一般情況下編程者不會(huì)把它當(dāng)成普通內(nèi)存用了。
六、單片機(jī)的開(kāi)發(fā)過(guò)程: 這里所說(shuō)的開(kāi)發(fā)過(guò)程并不是一般書(shū)中所說(shuō)的從任務(wù)分析開(kāi)始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫(xiě)軟件的工作。在編寫(xiě)軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來(lái)了。如當(dāng)某器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來(lái)后,其控制字也就被確定了。然后用文本編輯器(如EDIT、CCED等)編寫(xiě)軟件,編寫(xiě)好后,用編譯器對(duì)源程序文件編譯,查錯(cuò),直到?jīng)]有語(yǔ)法錯(cuò)誤,除了極簡(jiǎn)單的程序外,一般應(yīng)用仿真機(jī)對(duì)軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫(xiě)片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴(kuò)展名為HEX的目標(biāo)文件,一般編程器能夠識(shí)別這種格式的文件,只要將此文件調(diào)入即可寫(xiě)片。在此,為使大家對(duì)整個(gè)過(guò)程有個(gè)認(rèn)識(shí),舉一例說(shuō)明:
單片機(jī)試驗(yàn)板ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;設(shè)堆棧
LOOP:
NOP
LJMP LOOP ;循環(huán)
END ;結(jié)束
單片機(jī)學(xué)習(xí)
目前,很多人對(duì)匯編語(yǔ)言并不認(rèn)可。可以說(shuō),掌握用C語(yǔ)言單片機(jī)編程很重要,可以大大提高開(kāi)發(fā)的效率。不過(guò)初學(xué)者可以不了解單片機(jī)的匯編語(yǔ)言,但一定要了解單片機(jī)具體性能和特點(diǎn),不然在單片機(jī)領(lǐng)域是比較致命的。如果不考慮單片機(jī)硬件資源,在KEIL中用C胡亂編程,結(jié)果只能是出了問(wèn)題無(wú)法解決!可以肯定的說(shuō),最好的C語(yǔ)言單片機(jī)工程師都是從匯編走出來(lái)的編程者因?yàn)閱纹瑱C(jī)的C語(yǔ)言雖然是高級(jí)語(yǔ)言,但是它不同于臺(tái)式機(jī)個(gè)人電腦上的VC++什么的單片機(jī)的硬件資源不是非常強(qiáng)大,不同于我們用VC、VB等高級(jí)語(yǔ)言在臺(tái)式PC上寫(xiě)程序畢竟臺(tái)式電腦的硬件非常強(qiáng)大,所以才可以不考慮硬件資源的問(wèn)題。還有就是在單片機(jī)編程中C語(yǔ)言雖然編程方便,便于人們閱讀,但是在執(zhí)行效率上是要比匯編語(yǔ)言低10%到20%,所以用什么語(yǔ)言編寫(xiě)程序是要看具體用在什么場(chǎng)合下。總的來(lái)說(shuō)做單片機(jī)編程要靈活使用匯編語(yǔ)言與C語(yǔ)言,讓單片機(jī)的強(qiáng)大功能以最高是效率展示給用戶。
以8051單片機(jī)為例講解單片機(jī)的引腳及相關(guān)功能;
《單片機(jī)引腳圖》
40個(gè)引腳按引腳功能大致可分為4個(gè)種類(lèi):電源、時(shí)鐘、控制和I/O引腳。
⒈ 電源:
、 VCC - 芯片電源,接+5V;
⑵ VSS - 接地端;
注:用萬(wàn)用表測(cè)試單片機(jī)引腳電壓一般為0v或者5v,這是標(biāo)準(zhǔn)的TTL電平。但有時(shí)候在單片機(jī)程序正在工作時(shí)候測(cè)試結(jié)果并不是這個(gè)值而是介于0v-5v之間,其實(shí)這是萬(wàn)用表的響應(yīng)速度沒(méi)這么快而已,在某一個(gè)瞬間單片機(jī)引腳電壓仍保持在0v或者5v。
、 時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。
⒊ 控制線:控制線共有4根,
、 ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖
① ALE功能:用來(lái)鎖存P0口送出的低8位地址
、 PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。
、 PSEN:外ROM讀選通信號(hào)。
、 RST/VPD:復(fù)位/備用電源。
、 RST(Reset)功能:復(fù)位信號(hào)輸入端。
、 VPD功能:在Vcc掉電情況下,接備用電源。
、 EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。
、 EA功能:內(nèi)外ROM選擇端。
、 Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。
、 I/O線
80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。
P3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)
5. P3口第二功能
P30 RXD 串行輸入口
P31 TXD 串行輸出口
P32 INT0 外部中斷0(低電平有效)
P33 INT1 外部中斷1(低電平有效)
P34 T0 定時(shí)計(jì)數(shù)器0
P35 T1 定時(shí)計(jì)數(shù)器1
P36 WR 外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通(低電平有效)
P37 RD 外部數(shù)據(jù)存儲(chǔ)器讀選通(低電平有效)
常用單片機(jī)芯片簡(jiǎn)介
STC單片機(jī)
STC公司的單片機(jī)主要是基于8051內(nèi)核,是新一代增強(qiáng)型單片機(jī),指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號(hào),加密性好,抗干擾強(qiáng).
PIC單片機(jī):
是MICROCHIP公司的產(chǎn)品,其突出的特點(diǎn)是體積小,功耗低,精簡(jiǎn)指令集,抗干擾性好,可靠性高,有較強(qiáng)的模擬接口,代碼保密性好,大部分芯片有其兼容的FLASH程序存儲(chǔ)器的芯片.
EMC單片機(jī):
是臺(tái)灣義隆公司的產(chǎn)品,有很大一部分與PIC 8位單片機(jī)兼容,且相兼容產(chǎn)品的資源相對(duì)比PIC的多,價(jià)格便宜,有很多系列可選,但抗干擾較差.
ATMEL單片機(jī)(51單片機(jī)):
ATMEl公司的8位單片機(jī)有AT89、AT90兩個(gè)系列,AT89系列是8位Flash單片機(jī),與8051系列單片機(jī)相兼容,靜態(tài)時(shí)鐘模式;AT90系列單片機(jī)是增強(qiáng)RISC結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程Flash的單片機(jī),也叫AVR單片機(jī).
PHLIPIS 51plc系列單片機(jī)(51單片機(jī)):
PHILIPS公司的單片機(jī)是基于80C51內(nèi)核的單片機(jī),嵌入了掉電檢測(cè)、模擬以及片內(nèi)RC振蕩器等功能,這使51LPC在高集成度、低成本、低功耗的應(yīng)用設(shè)計(jì)中可以滿足多方面的性能要求.
HOLTEK單片機(jī):
臺(tái)灣盛揚(yáng)半導(dǎo)體的單片機(jī),價(jià)格便宜,種類(lèi)較多,但抗干擾較差,適用于消費(fèi)類(lèi)產(chǎn)品.
TI公司單片機(jī)(51單片機(jī)):
德州儀器提供了TMS370和MSP430兩大系列通用單片機(jī).TMS370系列單片機(jī)是8位CMOS單片機(jī),具有多種存儲(chǔ)模式、多種外圍接口模式,適用于復(fù)雜的實(shí)時(shí)控制場(chǎng)合;MSP430系列單片機(jī)是一種超低功耗、功能集成度較高的16位低功耗單片機(jī),特別適用于要求功耗低的場(chǎng)合
松翰單片機(jī)(SONIX):
是臺(tái)灣松翰公司的單片,大多為8位機(jī),有一部分與PIC 8位單片機(jī)兼容,價(jià)格便宜,系統(tǒng)時(shí)鐘分頻可選項(xiàng)較多,有PMW ADC 內(nèi)振 內(nèi)部雜訊濾波。缺點(diǎn)RAM空間過(guò)小,抗干擾較好。
從無(wú)線電世界到單片機(jī)世界
現(xiàn)代計(jì)算機(jī)技術(shù)的產(chǎn)業(yè)革命,將世界經(jīng)濟(jì)從資本經(jīng)濟(jì)帶入到知識(shí)經(jīng)濟(jì)時(shí)代。在電子世界領(lǐng)域,從20世紀(jì)中的無(wú)線電時(shí)代也進(jìn)入到21世紀(jì)以計(jì)算機(jī)技術(shù)為中心的智能化現(xiàn)代電子系統(tǒng)時(shí)代。現(xiàn)代電子系統(tǒng)的基本核心是嵌入式計(jì)算機(jī)系統(tǒng)(簡(jiǎn)稱(chēng)嵌入式系統(tǒng)),而單片機(jī)是最典型、最廣泛、最普及的嵌入式系統(tǒng)。
一、 無(wú)線電世界造就了幾代英才
在20世紀(jì)五六十年代,最具代表的先進(jìn)的電子技術(shù)就是無(wú)線電技術(shù),包括無(wú)線電廣播、收音、無(wú)線通信(電報(bào))、業(yè)余無(wú)線電臺(tái)、無(wú)線電定位、導(dǎo)航等遙測(cè)、遙控、遙信技術(shù)。早期就是這些電子技術(shù)帶領(lǐng)著許多青少年步入了奇妙的電子世界,無(wú)線電技術(shù)展示了當(dāng)時(shí)科技生活美妙的前景。電子科學(xué)開(kāi)始形成了一門(mén)新興學(xué)科。無(wú)線電電子學(xué)、無(wú)線通信開(kāi)始了電子世界的歷程。
無(wú)線電技術(shù)不僅成為了當(dāng)時(shí)先進(jìn)科學(xué)技術(shù)的代表,而且從普及到專(zhuān)業(yè)的科學(xué)領(lǐng)域,吸引了廣大青少年,并使他們從中找到了無(wú)窮的樂(lè)趣。從床頭的礦石收音機(jī)到超外差收音機(jī);從無(wú)線電發(fā)報(bào)到業(yè)余無(wú)線電臺(tái);從電話、電鈴到無(wú)線電操縱模型。無(wú)線電技術(shù)成為當(dāng)時(shí)青少年科普、科技教育最普及、最廣泛的內(nèi)容。至今,許多老一輩的工程師、專(zhuān)家、教授當(dāng)年都是無(wú)線電愛(ài)好者。無(wú)線電技術(shù)的無(wú)窮樂(lè)趣、無(wú)線電技術(shù)的全面訓(xùn)練,從電子學(xué)基本原理、電子元器件基礎(chǔ)到無(wú)線電遙控、遙測(cè)、遙信電子系統(tǒng)制作,培養(yǎng)出了幾代科技英才。
二、 從無(wú)線電時(shí)代到電子技術(shù)普及時(shí)代
早期的無(wú)線電技術(shù)推動(dòng)了電子技術(shù)的發(fā)展,其中最主要的是真空管電子技術(shù)向半導(dǎo)體電子技術(shù)的發(fā)展。半導(dǎo)體電子技術(shù)使有源器件實(shí)現(xiàn)了微小型化和低成本,使無(wú)線電技術(shù)有了更大普及和創(chuàng)新,并大大地開(kāi)闊了許多非無(wú)線電的控制領(lǐng)域。
半導(dǎo)體技術(shù)發(fā)展導(dǎo)致集成電路器件的產(chǎn)生,形成了近代電子技術(shù)的飛躍,電子技術(shù)從分立器件時(shí)代走進(jìn)了電路集成時(shí)代。電子設(shè)計(jì)工程師不再用分立的電子元器件設(shè)計(jì)電路單元,而直接選擇集成化的電路單元器件構(gòu)成系統(tǒng)。他們從電路單元設(shè)計(jì)中解放出來(lái),致力于系統(tǒng)設(shè)計(jì),大大地解放了科技生產(chǎn)力,促進(jìn)了電子系統(tǒng)更大范圍的普及。
半導(dǎo)體集成電路首先在基本數(shù)字邏輯電路上取得突破。大量數(shù)字邏輯電路,如門(mén)電路、計(jì)數(shù)器、定時(shí)器、移位寄存器以及模擬開(kāi)關(guān)、比較器等,為電子數(shù)字控制提供了極佳的條件,使傳統(tǒng)的機(jī)械控制轉(zhuǎn)向電子控制。功率電子器件以及傳感技術(shù)的發(fā)展使原先以無(wú)線電為中心的電子技術(shù)開(kāi)始轉(zhuǎn)向工程領(lǐng)域中的機(jī)械系統(tǒng)的數(shù)字控制,檢測(cè)領(lǐng)域中的信息采集,運(yùn)動(dòng)機(jī)械對(duì)象的電氣伺服驅(qū)動(dòng)控制。
半導(dǎo)體及其集成電路技術(shù)將我們帶入了一個(gè)電子技術(shù)普及時(shí)代,無(wú)線電技術(shù)成為電子技術(shù)應(yīng)用領(lǐng)域的一個(gè)部分。
進(jìn)入20世紀(jì)70年代,大規(guī)模集成電路出現(xiàn),促進(jìn)了常規(guī)的電子電路單元的專(zhuān)用電子系統(tǒng)發(fā)展。許多專(zhuān)用電子系統(tǒng)單元變成了集成化器件,如收音機(jī)、電子鐘、計(jì)算器等,在這些領(lǐng)域的電子工程師從電路、系統(tǒng)的精心設(shè)計(jì)、調(diào)試轉(zhuǎn)變?yōu)槠骷x擇、外圍器件適配工作。電子技術(shù)發(fā)展了,電子產(chǎn)品豐富了,電子工程師的難度減少了,但與此同時(shí),無(wú)線電技術(shù)、電子技術(shù)的魅力卻削弱了。半導(dǎo)體集成電路的發(fā)展使經(jīng)典電子系統(tǒng)日趨完善,留在大規(guī)模集成電路以外的電子技術(shù)日益減少,電子技術(shù)沒(méi)有了往昔無(wú)線電時(shí)代的無(wú)窮樂(lè)趣和全面的工程訓(xùn)練。
三、 從經(jīng)典電子技術(shù)時(shí)代到現(xiàn)代電子技術(shù)時(shí)代
進(jìn)入20世紀(jì)80年代,世紀(jì)經(jīng)濟(jì)中最重要的變革是計(jì)算機(jī)的產(chǎn)業(yè)革命。而計(jì)算機(jī)產(chǎn)業(yè)革命的最重要標(biāo)志則是計(jì)算機(jī)嵌入式應(yīng)用的誕生。近代電子計(jì)算機(jī)是應(yīng)數(shù)值計(jì)算要求誕生的。在很長(zhǎng)的時(shí)間內(nèi),電子計(jì)算機(jī)都是以發(fā)展海量數(shù)值計(jì)算為己任。但是電子計(jì)算機(jī)表現(xiàn)出的邏輯運(yùn)算、處理、控制能力,吸引了電子控制領(lǐng)域的專(zhuān)家,他們要求發(fā)展能滿足控制對(duì)象要求,實(shí)現(xiàn)嵌入式應(yīng)用的計(jì)算機(jī)系統(tǒng)。如果將滿足海量數(shù)據(jù)處理的計(jì)算機(jī)系統(tǒng)稱(chēng)為通用計(jì)算機(jī)系統(tǒng),那么則可把嵌入到對(duì)象體系(如艦船、飛機(jī)、機(jī)車(chē)等)中的計(jì)算機(jī)系統(tǒng)稱(chēng)作嵌入式計(jì)算機(jī)。顯而易見(jiàn),兩者的技術(shù)發(fā)展方向是不同的。前者要求海量數(shù)據(jù)存儲(chǔ)、吞吐、高速數(shù)據(jù)處理分析及傳輸;而后者要求在對(duì)象環(huán)境中可靠運(yùn)行,對(duì)外部物理參數(shù)的高速采集、邏輯分析處理和對(duì)外部對(duì)象的快速控制等。早期人們將通用計(jì)算機(jī)加上數(shù)據(jù)采集單元、輸出驅(qū)動(dòng)電路勉為其難地構(gòu)成一個(gè)熱處理爐的溫控系統(tǒng)。這樣的通用計(jì)算機(jī)系統(tǒng)不可能為大多數(shù)電子系統(tǒng)采用,而且要使通用計(jì)算機(jī)系統(tǒng)滿足嵌入式應(yīng)用要求,必然影響高速數(shù)值處理技術(shù)的發(fā)展。為了解決計(jì)算機(jī)技術(shù)發(fā)展的矛盾,在20世紀(jì)70年代,半導(dǎo)體專(zhuān)家另辟蹊徑,完全按照電子系統(tǒng)的計(jì)算機(jī)嵌入式應(yīng)用要求,將一個(gè)微型計(jì)算機(jī)的基本系統(tǒng)集成在一個(gè)芯片上,形成了早期的單片機(jī)(Single Chip Microcomputer)。單片機(jī)問(wèn)世后,在計(jì)算機(jī)領(lǐng)域中開(kāi)始出現(xiàn)了通用計(jì)算機(jī)系統(tǒng)和嵌入式系統(tǒng)的兩大分支。此后,無(wú)論是嵌入式系統(tǒng),還是通用計(jì)算機(jī)系統(tǒng)都得到了飛速的發(fā)展。
早期雖然有通用計(jì)算機(jī)改裝而成的嵌入式計(jì)算機(jī)系統(tǒng),而真正意義上的嵌入式系統(tǒng)始于單片機(jī)的出現(xiàn)。因?yàn)閱纹瑱C(jī)是專(zhuān)門(mén)為嵌入式應(yīng)用設(shè)計(jì)的,單片機(jī)只能實(shí)現(xiàn)嵌入式應(yīng)用。單片機(jī)能最好地滿足嵌入式應(yīng)用的環(huán)境要求,例如,芯片級(jí)的物理空間、大規(guī)模集成電路的低價(jià)位、良好的外圍接口總線和突出控制功能的指令系統(tǒng)。
單片機(jī)有計(jì)算機(jī)系統(tǒng)內(nèi)核,嵌入到電子系統(tǒng)中,為電子系統(tǒng)智能化奠定了基礎(chǔ)。因此,當(dāng)前單片機(jī)在電子系統(tǒng)中的廣泛使用,使經(jīng)典電子系統(tǒng)迅速過(guò)渡到智能化的現(xiàn)代電子系統(tǒng)。
四、 單片機(jī)開(kāi)創(chuàng)了現(xiàn)代電子系統(tǒng)時(shí)代
1單片機(jī)與嵌入式系統(tǒng)
嵌入式系統(tǒng)源于計(jì)算機(jī)的嵌入式應(yīng)用,早期嵌入式系統(tǒng)為通用計(jì)算機(jī)經(jīng)改裝后嵌入到對(duì)象體系中的各種電子系統(tǒng),如艦船的自動(dòng)駕駛儀,輪機(jī)監(jiān)測(cè)系統(tǒng)等。嵌入式系統(tǒng)首先是一個(gè)計(jì)算機(jī)系統(tǒng),其次它被嵌入到對(duì)象體系中、在對(duì)象體系中實(shí)現(xiàn)對(duì)象要求的數(shù)據(jù)采集、處理、狀態(tài)顯示、輸出控制等功能,由于嵌入在對(duì)象體系中,嵌入式系統(tǒng)的計(jì)算機(jī)沒(méi)有計(jì)算機(jī)的獨(dú)立形式及功能。單片機(jī)完全是按照嵌入式系統(tǒng)要求設(shè)計(jì)的,因此單片機(jī)是最典型的嵌入式系統(tǒng)。早期的單片機(jī)只是按嵌入式應(yīng)用技術(shù)要求設(shè)計(jì)的計(jì)算機(jī)單芯片集成,故名單片機(jī)。隨后,單片機(jī)為滿足嵌入式應(yīng)用要求不斷增強(qiáng)其控制功能與外圍接口功能,尤其是突出控制功能,因此國(guó)際上已將單片機(jī)正名為微控制器(MCU,Microcontroller Unit)。
2單片機(jī)構(gòu)成的現(xiàn)代電子系統(tǒng)將成為主流電子系統(tǒng)
單片機(jī)是器件級(jí)計(jì)算機(jī)系統(tǒng),它可以嵌入到任何對(duì)象體系中去,實(shí)現(xiàn)智能化控制。小到微型機(jī)械,如手表、助聽(tīng)器。集成器件級(jí)的低價(jià)位,低到幾元、十幾元,足以使單片機(jī)普及到許多民用家電、電子玩具中去。單片機(jī)構(gòu)成的現(xiàn)代電子系統(tǒng)已深入到各家各戶,正改變我們的生活,如家庭中的音響、電視機(jī)、洗衣機(jī)、微波爐、電話、防盜系統(tǒng)、空調(diào)機(jī)等。單片機(jī)革新了原有電子系統(tǒng),如微波爐采用單片機(jī)控制后,可方便地進(jìn)行時(shí)鐘設(shè)置、程序記憶、功率控制;空調(diào)機(jī)采用單片機(jī)后不但遙控參數(shù)設(shè)置方便,運(yùn)行狀態(tài)自動(dòng)變換,還可實(shí)現(xiàn)變頻控制。目前許多家用電器如VCD、DVD只有單片機(jī)出現(xiàn)后才可能實(shí)現(xiàn)其功能。
3嵌入式系統(tǒng)帶動(dòng)了整個(gè)電子產(chǎn)業(yè)
目前電子元器件產(chǎn)業(yè)除了微處理器、嵌入式系統(tǒng)器件外,大多是圍繞現(xiàn)代電子系統(tǒng)配套的元器件產(chǎn)業(yè),例如滿足人機(jī)交互用的按鍵,LED/LCD顯示驅(qū)動(dòng)、LED/LCD顯示單元、語(yǔ)音集成器件等,滿足數(shù)據(jù)采集通道要求的數(shù)字傳感器、ADC、數(shù)據(jù)采集模塊、信號(hào)調(diào)理模塊等,滿足伺服驅(qū)動(dòng)控制的DAC、固體繼電器、步進(jìn)電機(jī)控制器、變頻控制單元等,滿足通信要求的各種總線驅(qū)動(dòng)器、電平轉(zhuǎn)換器等。
世界電子元器件在嵌入式系統(tǒng)帶動(dòng)下,沿著充分滿足嵌入式應(yīng)用的現(xiàn)代電子系統(tǒng)要求發(fā)展。這就使原來(lái)經(jīng)典電子系統(tǒng)的天地愈來(lái)愈小。電子系統(tǒng)中的各類(lèi)從業(yè)人員應(yīng)盡早轉(zhuǎn)向現(xiàn)代電子系統(tǒng)的康莊大道。
五、 單片機(jī)將造就新一代電子精英
如果說(shuō)五十年代起,無(wú)線電世界造就了幾代精英,那么當(dāng)今的單片機(jī)世界將會(huì)造就出新一代電子精英。
1單片機(jī)帶你進(jìn)入智能化電子領(lǐng)域
若將經(jīng)典電子系統(tǒng)當(dāng)作一個(gè)僵死的電子系統(tǒng),那么智能化的現(xiàn)代電子系統(tǒng)則是一個(gè)具有“生命”的電子系統(tǒng)。單片機(jī)應(yīng)用系統(tǒng)的硬件結(jié)構(gòu)給予電子系統(tǒng)“身軀”,單片機(jī)應(yīng)用系統(tǒng)的應(yīng)用程序賦予其“生命”。例如,在設(shè)計(jì)智能化儀器顯示器的顯示功能時(shí),可在開(kāi)機(jī)時(shí)顯示系統(tǒng)自檢結(jié)果,未進(jìn)入工作時(shí)顯示各種待機(jī)狀態(tài),儀器運(yùn)行時(shí)顯示運(yùn)行過(guò)程,工作結(jié)束后可顯示當(dāng)前結(jié)果、自檢結(jié)果、原始數(shù)據(jù)、各種處理報(bào)表等。在無(wú)人值守時(shí),可給定各種自動(dòng)運(yùn)行功能。
電子系統(tǒng)的智能化為無(wú)止境境界,常常不需硬件資源的增添就能實(shí)現(xiàn)各種翻新功能。這也是當(dāng)前許多家用電器功能大量增設(shè)的因素之一。
2單片機(jī)帶你進(jìn)入計(jì)算機(jī)工控領(lǐng)域
21世紀(jì)是全人類(lèi)進(jìn)入計(jì)算機(jī)時(shí)代的世紀(jì),許多人不是在制造計(jì)算機(jī)便是在使用計(jì)算機(jī)。在使用計(jì)算機(jī)的人們中,只有從事嵌入式系統(tǒng)應(yīng)用的人才真正地進(jìn)入到計(jì)算機(jī)系統(tǒng)的內(nèi)部軟、硬件體系中,才能真正領(lǐng)會(huì)計(jì)算機(jī)的智能化本質(zhì)并掌握智能化設(shè)計(jì)的知識(shí)。從學(xué)習(xí)單片機(jī)應(yīng)用技術(shù)入手是當(dāng)今培養(yǎng)計(jì)算機(jī)應(yīng)用軟、硬件技術(shù)人才的最佳道路之一。
3單片機(jī)帶你進(jìn)入最具魅力的電子世界
獨(dú)具魅力的單片機(jī)能使你體會(huì)到電腦的真諦,你可以用單片機(jī)親自動(dòng)手設(shè)計(jì)智能玩具,可以設(shè)計(jì)不同的應(yīng)用程序?qū)崿F(xiàn)不同的功能。既有硬件制作又有軟件設(shè)計(jì),既動(dòng)腦、又動(dòng)手。初級(jí)水平可開(kāi)發(fā)智能玩具,用宏指令編程。中級(jí)水平可開(kāi)發(fā)一些智能控制器,如電腦鼠、智能車(chē)、各種遙控模型。高級(jí)水平可開(kāi)發(fā)機(jī)器人,如機(jī)器人足球賽,開(kāi)發(fā)工業(yè)控制單元,網(wǎng)絡(luò)通信等,并用匯編語(yǔ)言或高級(jí)語(yǔ)言設(shè)計(jì)應(yīng)用程序。圍繞單片機(jī)及嵌入式系統(tǒng)形成的電子產(chǎn)業(yè)的未來(lái),將會(huì)為電子愛(ài)好者提供廣闊的天地,一個(gè)比當(dāng)年無(wú)線電世界更廣闊、更豐富、更持久、更具魅力的電子世界。投身到單片機(jī)世界來(lái),將使你一生受益。
單片機(jī)攻擊技術(shù)
目前,攻擊單片機(jī)主要有四種技術(shù),分別是:
。ǎ保┸浖
該技術(shù)通常使用處理器通信接口并利用協(xié)議、加密算法或這些算法中的安全漏洞來(lái)進(jìn)行攻擊。軟件攻擊取得成功的一個(gè)典型事例是對(duì)早期ATMEL AT89C 系列單片機(jī)的攻擊。攻擊者利用了該系列單片機(jī)擦除操作時(shí)序設(shè)計(jì)上的漏洞,使用自編程序在擦除加密鎖定位后,停止下一步擦除片內(nèi)程序存儲(chǔ)器數(shù)據(jù)的操作,從而使加過(guò)密的單片機(jī)變成沒(méi)加密的單片機(jī),然后利用編程器讀出片內(nèi)程序。
(2) 電子探測(cè)攻擊
該技術(shù)通常以高時(shí)間分辨率來(lái)監(jiān)控處理器在正常操作時(shí)所有電源和接口連接的模擬特性,并通過(guò)監(jiān)控它的電磁輻射特性來(lái)實(shí)施攻擊。因?yàn)閱纹瑱C(jī)是一個(gè)活動(dòng)的電子器件,當(dāng)它執(zhí)行不同的指令時(shí),對(duì)應(yīng)的電源功率消耗也相應(yīng)變化。這樣通過(guò)使用特殊的電子測(cè)量?jī)x器和數(shù)學(xué)統(tǒng)計(jì)方法分析和檢測(cè)這些變化,即可獲取單片機(jī)中的特定關(guān)鍵信息。
。ǎ常┻^(guò)錯(cuò)產(chǎn)生技術(shù)
該技術(shù)使用異常工作條件來(lái)使處理器出錯(cuò),然后提供額外的訪問(wèn)來(lái)進(jìn)行攻擊。使用最廣泛的過(guò)錯(cuò)產(chǎn)生攻擊手段包括電壓沖擊和時(shí)鐘沖擊。低電壓和高電壓攻擊可用來(lái)禁止保護(hù)電路工作或強(qiáng)制處理器執(zhí)行錯(cuò)誤操作。時(shí)鐘瞬態(tài)跳變也許會(huì)復(fù)位保護(hù)電路而不會(huì)破壞受保護(hù)信息。電源和時(shí)鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行。
。ǎ矗┨结樇夹g(shù)
該技術(shù)是直接暴露芯片內(nèi)部連線,然后觀察、操控、干擾單片機(jī)以達(dá)到攻擊目的。為了方便起見(jiàn),人們將以上四種攻擊技術(shù)分成兩類(lèi),一類(lèi)是侵入型攻擊(物理攻擊),這類(lèi)攻擊需要破壞封裝,然后借助半導(dǎo)體測(cè)試設(shè)備、顯微鏡和微定位器,在專(zhuān)門(mén)的實(shí)驗(yàn)室花上幾小時(shí)甚至幾周時(shí)間才能完成。所有的微探針技術(shù)都屬于侵入型攻擊。另外三種方法屬于非侵入型攻擊,被攻擊的單片機(jī)不會(huì)被物理?yè)p壞。在某些場(chǎng)合非侵入型攻擊是特別危險(xiǎn)的,這是因?yàn)榉乔秩胄凸羲柙O(shè)備通?梢宰灾坪蜕(jí),因此非常廉價(jià)。
大部分非侵入型攻擊需要攻擊者具備良好的處理器知識(shí)和軟件知識(shí)。與之相反,侵入型的探針攻擊則不需要太多的初始知識(shí),而且通?捎靡徽紫嗨频募夹g(shù)對(duì)付寬范圍的產(chǎn)品。
單片機(jī)侵入型攻擊的一般過(guò)程
侵入型攻擊的第一步是揭去芯片封裝。有兩種方法可以達(dá)到這一目的:第一種是完全溶解掉芯片封裝,暴露金屬連線。第二種是只移掉硅核上面的塑料封裝。第一種方法需要將芯片綁定到測(cè)試夾具上,借助綁定臺(tái)來(lái)操作。第二種方法除了需要具備攻擊者一定的知識(shí)和必要的技能外,還需要個(gè)人的智慧和耐心,但操作起來(lái)相對(duì)比較方便。
芯片上面的塑料可以用小刀揭開(kāi),芯片周?chē)沫h(huán)氧樹(shù)脂可以用濃硝酸腐蝕掉。熱的濃硝酸會(huì)溶解掉芯片封裝而不會(huì)影響芯片及連線。該過(guò)程一般在非常干燥的條件下進(jìn)行,因?yàn)樗拇嬖诳赡軙?huì)侵蝕已暴露的鋁線連接。
接著在超聲池里先用丙酮清洗該芯片以除去殘余硝酸,然后用清水清洗以除去鹽分并干燥。沒(méi)有超聲池,一般就跳過(guò)這一步。這種情況下,芯片表面會(huì)有點(diǎn)臟,但是不太影響紫外光對(duì)芯片的操作效果。最后一步是尋找保護(hù)熔絲的位置并將保護(hù)熔絲暴露在紫外光下。一般用一臺(tái)放大倍數(shù)至少100倍的顯微鏡,從編程電壓輸入腳的連線跟蹤進(jìn)去,來(lái)尋找保護(hù)熔絲。若沒(méi)有顯微鏡,則采用將芯片的不同部分暴露到紫外光下并觀察結(jié)果的方式進(jìn)行簡(jiǎn)單的搜索。操作時(shí)應(yīng)用不透明的紙片覆蓋芯片以保護(hù)程序存儲(chǔ)器不被紫外光擦除。將保護(hù)熔絲暴露在紫外光下5~10分鐘就能破壞掉保護(hù)位的保護(hù)作用,之后,使用簡(jiǎn)單的編程器就可直接讀出程序存儲(chǔ)器的內(nèi)容。
對(duì)于使用了防護(hù)層來(lái)保護(hù)EEPROM單元的單片機(jī)來(lái)說(shuō),使用紫外光復(fù)位保護(hù)電路是不可行的。對(duì)于這種類(lèi)型的單片機(jī),一般使用微探針技術(shù)來(lái)讀取存儲(chǔ)器內(nèi)容。在芯片封裝打開(kāi)后,將芯片置于顯微鏡下就能夠很容易的找到從存儲(chǔ)器連到電路其它部分的數(shù)據(jù)總線。
由于某種原因,芯片鎖定位在編程模式下并不鎖定對(duì)存儲(chǔ)器的訪問(wèn)。利用這一缺陷將探針?lè)旁跀?shù)據(jù)線的上面就能讀到所有想要的數(shù)據(jù)。在編程模式下,重啟讀過(guò)程并連接探針到另外的數(shù)據(jù)線上就可以讀出程序和數(shù)據(jù)存儲(chǔ)器中的所有信息。
還有一種可能的攻擊手段是借助顯微鏡和激光切割機(jī)等設(shè)備來(lái)尋找保護(hù)熔絲,從而尋查和這部分電路相聯(lián)系的所有信號(hào)線。由于設(shè)計(jì)有缺陷,因此,只要切斷從保護(hù)熔絲到其它電路的某一根信號(hào)線,就能禁止整個(gè)保護(hù)功能。由于某種原因,這根線離其它的線非常遠(yuǎn),所以使用激光切割機(jī)完全可以切斷這根線而不影響臨近線。這樣,使用簡(jiǎn)單的編程器就能直接讀出程序存儲(chǔ)器的內(nèi)容。
雖然大多數(shù)普通單片機(jī)都具有熔絲燒斷保護(hù)單片機(jī)內(nèi)代碼的功能,但由于通用低檔的單片機(jī)并非定位于制作安全類(lèi)產(chǎn)品,因此,它們往往沒(méi)有提供有針對(duì)性的防范措施且安全級(jí)別較低。加上單片機(jī)應(yīng)用場(chǎng)合廣泛,銷(xiāo)售量大,廠商間委托加工與技術(shù)轉(zhuǎn)讓頻繁,大量技術(shù)資料外瀉,使得利用該類(lèi)芯片的設(shè)計(jì)漏洞和廠商的測(cè)試接口,并通過(guò)修改熔絲保護(hù)位等侵入型攻擊或非侵入型攻擊手段來(lái)讀取單片機(jī)的內(nèi)部程序變得比較容易。
編輯:admin 最后修改時(shí)間:2018-05-08