第1講單片機基礎知識_第1頁
第1講單片機基礎知識_第2頁
第1講單片機基礎知識_第3頁
第1講單片機基礎知識_第4頁
第1講單片機基礎知識_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第1講 單片機基礎知識第1講 單片機基礎知識從1946年2月賓夕法尼亞大學研制出第一臺數(shù)字計算機ENIAC(Electronic Numerical Integrator And Calculator,電子數(shù)字積分器與計算機)至今,計算機的發(fā)展已經(jīng)經(jīng)歷了電子管計算機、晶體管計算機、集成電路計算機以及大規(guī)模集成電路計算機4個時代。如今計算機已經(jīng)不再是當年少數(shù)科研人員使用的“龐然大物”,而是以微機(Microcomputer)的形式進入到了我們?nèi)粘9ぷ?、生活的各個角落。單片機作為微型計算機的一種,在工業(yè)控制以及日常生活中都有十分廣泛的應用。本講將介紹單片機的概念和預備知識,為后面系統(tǒng)詳細

2、學習單片機做好 鋪墊。本講內(nèi)容î 單片機概述î 單片機中的預備知識1.1 單片機概述從儀器儀表到工業(yè)控制,從家用電器到航空航天,單片機在我們的日常生活和工作中有著十分廣泛的應用。而在平時的學習過程中,除了單片機我們還常常聽到微處理器、微型計算機、嵌入式系統(tǒng)等名詞,這些名詞與單片機有著密切的聯(lián)系,同時也有著一定的區(qū)別。本節(jié)將從這幾個概念開始繼而詳細闡述單片機的相關(guān)概念、發(fā)展歷史、基本組成、應用以及發(fā)展趨勢。1.1.1 有關(guān)單片機的幾個概念微處理器、微型計算機、微型計算機系統(tǒng)、嵌入式系統(tǒng)、單片機這幾個概念之間有著一定的聯(lián)系也存在一定的區(qū)別,弄清楚這幾個概念有利于我們更好地理解什

3、么是單片機。(1)微處理器(Micro Processor Unit)微處理器即MPU,是由一塊或者幾塊大規(guī)模集成電路組成的中央處理器(CPU),具有控制運算功能。1971年,計算機發(fā)展進入到大規(guī)模集成電路時代,微處理器得以誕生并開始高速發(fā)展。從第一代4位處理器開始,歷經(jīng)8位處理器、16位處理器、32位處理器,現(xiàn)在64位處理器也已經(jīng)得到廣泛的使用。由于是將CPU集成在一個半導體芯片上,所以相較傳統(tǒng)的CPU,其具有體積小、重量輕以及容易模塊化的特點。微處理器是構(gòu)成微型計算機的核心部件。(2)微型計算機(Micro Computer)微型計算機簡稱微機,是以微處理器為核心單元,配以存儲器、輸入/輸

4、出設備接口電路以及相應輔助電路構(gòu)成的裸機。依據(jù)組成微型計算機電路板數(shù)量類型的不同,可以將微型計算機分為多板微型計算機、單板微型計算機以及單片微型計算機。其中,單片微型計算機即通常所說的單片機,也就是說單片機是微型計算機中的一種。(3)微型計算機系統(tǒng)(Micro Computer System)以微型計算機為核心,再配以相應的外圍設備、電源、輔助電路和控制微型計算機工作的軟件就構(gòu)成了完整的微型計算機系統(tǒng)。因此,所說的單獨的微型計算機并不是一個微型計算機系統(tǒng),一般而言,微型計算機系統(tǒng)包含硬件和軟件兩個部分。通過上面的介紹可以看出,從微處理器到微型計算機再到微型計算機系統(tǒng),這3個概念包含的范圍依次遞

5、增,微處理器是微型計算機的核心單元,微型計算機又是微型計算機系統(tǒng)的核心單元。(4)嵌入式系統(tǒng)(Embedded System)嵌入式系統(tǒng)是一種完全嵌入受控器件內(nèi)部且為特定應用而設計的專用計算機系統(tǒng)。相較于平常使用的個人計算機(Personal Computer)系統(tǒng),嵌入式系統(tǒng)通常執(zhí)行的是有特定要求預先設置的任務。嵌入式系統(tǒng)是面向具體應用的,它能夠與應用緊密結(jié)合,并適應具體應用在功能、可靠性、成本、體積、功耗等方面的嚴格要求。嵌入式系統(tǒng)的核心單元最初是基于單片機的,但是隨著嵌入式系統(tǒng)的發(fā)展,其核心單元也有了許多變化。除了單片機之外,出現(xiàn)了基于DSP、ARM等多種處理器的嵌入式系統(tǒng)。(5)單片機

6、(Single Chip Micro Computer)單片微型計算機即單片機,是將CPU、RAM、ROM、定時器、中斷系統(tǒng)、輸入/輸出接口電路等集成到一塊芯片上的計算機。由于單片機在控制領(lǐng)域得到廣泛的使用,所以逐漸被稱之為微控制器(Micro Controller Unit,MCU)。單片機屬于微型計算機中的一種,具有普通微型計算機的基本組成和功能。1.1.2 單片機的發(fā)展歷史單片機從誕生至今已經(jīng)有30多年的歷史,從最初的低性能8位單片機到如今的單片機,經(jīng)歷了如下幾個階段。(1)第一階段(19741976年)這個階段是單片機的探索階段。1971年,Intel首次宣布了4004的4位微處理器,

7、各大公司就開始醞釀生產(chǎn)單片機。1974年12月,F(xiàn)air Child公司推出8位單片機F8,但是實際上只包含8位CPU、64B的RAM和兩個并行口,還需加一塊3851(由1KB ROM、定時/計數(shù)器和兩個并行I/O口構(gòu)成)才能組成一臺完整的微型計算機。(2)第二階段(19761978年)這個階段是低性能單片機階段。在這個階段出現(xiàn)一些具有單片機結(jié)構(gòu)功能的單片機型號,并在工業(yè)控制領(lǐng)域得到了廣泛的應用。但是這個階段的單片機仍處于初級階段,規(guī)模較小,功能也比較簡單。以Intel 公司推出的MCS-48為例,一塊芯片內(nèi)只含有8位CPU、并行I/O口、8位定時/計數(shù)器、RAM和ROM等,無串行I

8、/O口。中斷處理也比較簡單,片內(nèi)RAM和ROM容量較小,且尋址范圍有限,一般都不大于4KB。(3)第三階段(19781982年)這個階段是高性能單片機階段。這一類單片機帶有串行I/O口,有多級中斷處理,定時/計數(shù)器為16位,片內(nèi)的RAM和ROM相對增大,且尋址范圍可達64KB,有的片內(nèi)還帶有A/D轉(zhuǎn)換接口。這個階段單片機的典型代表是Intel推出的MCS-51單片機,同時各大公司也爭相研制開發(fā)出了自己的單片機,如Zilog公司的Z8系列等。由于這類單片機的性價比高,所以被廣泛應用,目前仍是應用數(shù)量最多的單片機。(4)第四階段(19821990年)這是16位單片機階段。16位單片機除了CPU為1

9、6位外,RAM和ROM容量進一步增大,實時處理的能力更強。如Intel 公司的MCS-96,其集成度為120000管子/片,主振幅為12MHz,片內(nèi)RAM為232字節(jié),ROM為8KB,中斷處理為8級,而且片內(nèi)帶有多通道10位A/D轉(zhuǎn)換和高速輸入/輸出部件(HSIO),實時處理的能力很強。(5)第五階段(1990年至今)這是微控制器的全面發(fā)展階段。各個公司的產(chǎn)品在盡量兼容的同時向更高速度、更強運算能力、更大尋址范圍方面發(fā)展。典型的有美國Microchip公司推出的完全不兼容MCS-51的新一代PIC單片機和Intel公司推出的80960超級32位計算機等。許多高速、強運算能力、大尋址范圍的8位/

10、16位/32位通用型單片機,以及小而廉價的專用型單片機得到了廣泛的發(fā)展和使用。1.1.3 單片機的基本組成與特點圖1-1 單片機的硬件結(jié)構(gòu)體系單片機是微型計算機的一種,如同絕大部分微機一樣,其基本結(jié)構(gòu)由控制器、運算器、存儲器、輸入設備和輸出設備5部分組成。單片機的硬件結(jié)構(gòu)體系如圖1-1所示,主要由存儲器、微處理器(MPU)、輸入/輸出(I/O)接口組成,三者通過數(shù)據(jù)總線(Data Bus)、地址總線(Address Bus)、控制總線(Control Bus)相連接。下面將分別介紹存儲器、MPU、I/O接口和總線的概念。1存儲器(Memory)存儲器是計算機用以存放程序以及數(shù)據(jù)的單元

11、。存儲器的容量單位包括Byte、KB、MB、GB、TB等。其中,1Byte簡稱1B,容量為8個二進制數(shù),即1Byte=8bit。1KB=1024Byte,1MB=1024KB,1GB=1024MB,1TB=1024GB。在存儲器中又將兩個字節(jié)(Byte)稱作一個字(Word),把兩個字稱作雙字(Double Word)。存儲器的讀寫速度指的是讀或者寫一條指令的時間,它是影響計算機速度的主要因素之一。在微型計算機中,存儲器分為內(nèi)部存儲器和外部存儲器兩種。內(nèi)部存儲器為半導體存儲器,具有造價高、速度快、容量小的特征,主要用于存放當前正在運行的程序或者待處理的數(shù)據(jù)。外部存儲器包括軟盤、光盤、硬盤、U盤

12、等存儲器件,它們一般具有造價低、容量大、速度慢的特征,一般用以存放暫時不運行的程序或者數(shù)據(jù)。單片機中的存儲器單元指的是半導體內(nèi)部存儲器。(1)只讀存儲器(Read Only Memory)內(nèi)部存儲器又分為只讀存儲器(ROM)和隨機存取存儲器(RAM)兩種。只讀存儲器通常情況下只允許讀操作,不允許寫操作。在開始階段通過特殊手段向ROM中寫入固定的程序或者數(shù)據(jù),寫入的數(shù)據(jù)則可以長期保存,斷電也不會丟失,需要時從中讀出使用即可。ROM分為掩膜ROM、可編程只讀存儲器(PROM)、可擦除可編程只讀存儲器(EPROM)、電擦除可編程只讀存儲器(E2PROM)和Flash存儲器(閃存)等。隨著ROM技術(shù)的

13、發(fā)展,ROM與RAM的界限逐漸模糊,一些ROM具有了RAM那樣可讀可寫的功能,同時保持了斷電不丟失的功能。下面簡單介紹幾種常見的ROM。u 掩膜ROM掩膜ROM是由廠家寫入數(shù)據(jù)供用戶使用的ROM,用戶不能更改其中的內(nèi)容。在批量很大的情況下,掩膜ROM價格最便宜。u 可編程只讀存儲器(Programmable ROM,PROM)相對于掩膜ROM中的程序完全不能更改,在制造完成后,可編程只讀存儲器中的內(nèi)容可以根據(jù)用戶的需求進行一次更改。這種更改操作有且只有一次,一旦更改之后無法再次更改,PROM成本與掩膜ROM相比較高?,F(xiàn)在有一種被稱為One Time Programmable

14、(OTP)的存儲器,它也屬于PROM的范疇,只是在實現(xiàn)方式上和原來普通的PROM有所區(qū)別。u 可擦除可編程只讀存儲器(Erasable PROM,EPROM)EPROM是一種可以改寫內(nèi)部程序或者數(shù)據(jù)的ROM,但是EPROM的數(shù)據(jù)改寫并不像RAM那么簡單方便。想要改寫EPROM中的數(shù)據(jù)首先需要將EPROM拔下并放于紫外線中照射1030分鐘清除原數(shù)據(jù),因此稱EPROM為電寫入紫外線擦除存儲器。u 電擦除可編程只讀存儲器(Electrically Erasable PROM,E2PROM或者EEPROM)如上所述EPROM是一種電寫入紫外線擦除的存儲器,而E2PROM是一種電寫入電擦除的可編程ROM

15、。E2PROM與RAM一樣讀寫操作簡單,同時又有數(shù)據(jù)不會掉電消失的優(yōu)點,因此使用極為方便。一般E2PROM保存的數(shù)據(jù)至少可達10年以上,每塊芯片可擦寫1000次以上。u Flash存儲器(Flash Memory)Flash存儲器又稱為閃存,是一種快速編程的E2PROM。它既擁有E2PROM讀寫數(shù)據(jù)的方便性,又簡化了結(jié)構(gòu),進一步提高了集成度和可靠性,降低了成本。一般PC機上的BIOS采用的就是Flash存儲器。許多新型單片機內(nèi)部都有片內(nèi)閃速存儲器,如89S52有8KB的Flash存儲器。(2)隨機存取存儲器(Random Access Memory)隨機存取存儲器中存儲的信息可以隨意讀出與寫入

16、,并且讀寫速度與存儲的位置無關(guān)。一旦斷電,則RAM中原來的信息就會消失。按照存儲信息方式的不同,RAM又可分為靜態(tài)隨機存儲器和動態(tài)隨機存儲器。u 靜態(tài)隨機存儲器(Static RAM,SRAM)SRAM的特點是只要有電源加在存儲器上面,則存儲器中的內(nèi)容一直存在不會消失。SRAM具有速度快、控制電路簡單的特征,但其集成度低、功耗大,一般相同存儲容量下SRAM體積較大,價格較貴。一般單片機中RAM多采用SRAM,容量一般在128B64KB之間。u 動態(tài)隨機存儲器(Dynamic RAM,DRAM)與SRAM不同,在供電的情況下,DRAM中寫入的信息只能保存若干毫秒的時間,因此每隔一段時間需要將數(shù)據(jù)

17、重新寫入以保證原來的數(shù)據(jù)不丟失,這種重寫的操作稱為刷新(Refresh)。相較于SRAM而言,DRAM容量較大,價格便宜但是速度較慢,控制電路復雜。一般PC機上的內(nèi)存條多采用DRAM,容量一般在64MB2GB之間。2微處理器(MPU)微處理器是微機的核心單元,是微機的運算和指揮控制中心。一般而言,微處理器的組成包括運算器、控制器以及內(nèi)部總線。微處理器MPU的基本結(jié)構(gòu)如圖1-2所示。下面簡單介紹微處理器的運算器與控制器。圖1-2 MCU結(jié)構(gòu)框圖(1)運算器一般而言,運算器包括算術(shù)邏輯單元ALU、累加器A、暫存器TMP、程序狀態(tài)字PSW以及通用寄存器幾個部分。u 算術(shù)邏輯單元ALU(Arithme

18、tic-Logic Unit)算術(shù)邏輯單元是運算器的核心部件,它以全加器為基礎,配合移位和控制邏輯進行加減乘除以及各種邏輯運算。u 累加器A(Accumulator)累加器是一個移位寄存器,用于運算前存放操作數(shù)以及運算后存放運算結(jié)果。在MPU中,單操作數(shù)運算多從累加器中獲取操作數(shù),多操作數(shù)運算也常常從累加器中獲取一個操作數(shù)。u 暫存器TMP(Temporary)暫存器也是一個移位寄存器,用來存放ALU運算中所需的操作數(shù)或者操作結(jié)果。從本質(zhì)上說,暫存器的作用在于解決MPU處理速度與內(nèi)存速度不匹配的問題。通過將少量需要重復使用的數(shù)據(jù)存放于暫存器中可以避免MPU頻繁向內(nèi)存索取數(shù)據(jù),從而提高計算機數(shù)據(jù)

19、處理速度。u 程序狀態(tài)字PSW(Program Status Word)程序狀態(tài)字PSW包含8個觸發(fā)器,用來存放ALU運算過程中產(chǎn)生的狀態(tài)。運算過程中最高位是否有進位或者借位,低4位是否向高4位進位等都通過程序狀態(tài)字中的狀態(tài)位表示。u 通用寄存器(General Purpose Register)通用寄存器是相對專用寄存器而言的,上面所說的以及后面提及的程序計數(shù)器PC等都是專用計數(shù)器,它們的功能固定。在MPU中還有部分寄存器,它們可以被指定用來存放操作數(shù)或者運算結(jié)果,這部分寄存器被稱為通用寄存器。(2)控制器如果說運算器是計算機的運算中心,那么控制器就是計算機的指揮中心,其作用在于控制MPU中

20、各個部分協(xié)調(diào)工作,共同完成整個程序的自動執(zhí)行。計算機中的典型工作過程為取指令、分析指令、執(zhí)行指令。計算機中要執(zhí)行的指令放在內(nèi)存中,MPU想要執(zhí)行一條指令,首先要從內(nèi)存中找到將要執(zhí)行的指令并將其取出。在單片機MPU中,有一個程序計數(shù)器PC用來存放將要執(zhí)行程序的內(nèi)存地址。計算機根據(jù)PC中的內(nèi)存地址取得想要執(zhí)行的指令,取出指令后,PC自動加1指向下一條指令。分析指令的過程是一個譯碼的過程。在MPU中存在一個指令寄存器IR,用來暫時存放從內(nèi)存中獲取的指令碼。MPU從IR中獲取指令碼后,通過指令譯碼器ID對指令碼進行譯碼。在與時序系統(tǒng)的配合下,MPU譯碼后將按時序產(chǎn)生控制信號,對響應部分進行控制。執(zhí)行指

21、令的過程就是一個將控制信號發(fā)送到I/O接口執(zhí)行的過程。執(zhí)行指令的過程也包括對計算結(jié)果的處理以及MPU中轉(zhuǎn)移地址的形成。為了實現(xiàn)上述所說的典型工作過程,CPU控制器需要包括以下幾個部分的控制功能。u 指令控制指令控制指的是控制計算機按照取指令、分析指令、執(zhí)行指令步驟對指令進行操作的過程。指令控制是控制器的基本功能。如上所述,控制器中包含了程序計數(shù)器PC、指令寄存器IR以及指令譯碼器ID來實現(xiàn)指令控制功能。u 時間控制時間控制指的是MPU控制器對指令執(zhí)行過程中操作時間的控制過程。如上所述,MPU譯碼后會按照時序產(chǎn)生控制信號,這個時序信號就是用來完成MPU的時間控制的。u 操作控制操作控制指的是MP

22、U控制器按照譯碼后的控制信號完成控制的過程。通過操作控制,MPU可以完成指令操作。3輸入/輸出(I/O)接口及設備微機通過輸入/輸出設備來實現(xiàn)具體信號的輸入和輸出。常見的輸入設備包括鼠標、鍵盤、攝像頭等。常見的輸出設備包括CRT屏幕、液晶顯示屏、打印機等。輸入/輸出接口是MPU與外部設備進行信息交互的連接電路。微機通過I/O接口來實現(xiàn)MPU與輸入/輸出設備之間的數(shù)據(jù)、信息通信以及操作控制。在微機系統(tǒng)中,一般較為復雜的I/O接口都在一個電路插板上,電路插板與系統(tǒng)總線相連。當使用外部設備時,只要將外部設備插在電路插板上,即可實現(xiàn)外部設備與微機系統(tǒng)的連接。4系統(tǒng)總線MPU通過系統(tǒng)總線與存儲器、I/O

23、接口以及外部設備進行信息交換。根據(jù)功能的不同,微機中的系統(tǒng)總線分為地址總線、數(shù)據(jù)總線和控制總線3種。(1)地址總線AB(Address Bus)MPU通過地址總線向外傳送地址信息。地址總線是單向總線,只能由MPU向外發(fā)出。在MPU要對存儲器或者外部設備進行讀/寫操作時,首先要將存儲器或者外設的地址碼送到地址總線上進行選中,進而進行讀/寫操作。地址總線的數(shù)量由MPU型號決定,其大小決定了一次尋址的寄存器數(shù)目。假如有n條地址總線,那么一次的最大尋址數(shù)量為個單元。在多數(shù)8位機中地址總線的數(shù)量為16。(2)數(shù)據(jù)總線DB(Data Bus)MPU通過數(shù)據(jù)總線與存儲器和外設進行數(shù)據(jù)交換。數(shù)據(jù)總線為雙向總線

24、,數(shù)據(jù)即可以通過DB從MPU流出,也可以通過DB向MPU流入。數(shù)據(jù)總線的數(shù)量代表了MPU進行數(shù)據(jù)處理的位數(shù)。一般MPU位數(shù)與數(shù)據(jù)總線數(shù)量相同,即8位機數(shù)據(jù)總線數(shù)量為8,16位機數(shù)據(jù)總線數(shù)量為16。但是也有MPU為16位但是外部數(shù)據(jù)總線仍然為8的情況。(3)控制總線CB(Control Bus)MPU通過控制總線對外傳送控制信號,同時存儲器或者外部設備也通過控制總線向MPU發(fā)送狀態(tài)或者請求信號。在微機中,單個控制總線的數(shù)據(jù)傳輸方向是固定的,而所有控制總線呈現(xiàn)的總體情況是雙線的:有的控制總線負責從MPU傳出信號,有的控制總線向MPU傳入信號。1.1.4 單片機的應用單片機具有集成度高、結(jié)構(gòu)簡單、可

25、靠性強、價格低廉等特點,如今已被廣泛應用于國民經(jīng)濟的各個領(lǐng)域。1日常生活中的應用單片機自誕生以后就開始進入人們的日常生活。現(xiàn)在,在空調(diào)、洗衣機、錄音機、微波爐、電飯煲、飲水機等各種日常電器中都可以找到單片機的影子。單片機不僅提高了這些日常電器的智能化程度,還方便了普通百姓的日常生活。2智能儀器儀表中的應用單片機的應用大大降低了傳統(tǒng)儀器儀表的電路復雜程度,不僅使儀器儀表的數(shù)字化、智能化程度得到提高,而且減小了儀表的體積、降低了價格。目前,溫度、濕度、壓力、流量、流速、電壓、電流、角度等量的測量與控制都可以加入單片機來實現(xiàn)。3工業(yè)控制中的應用單片機廣泛應用于工業(yè)控制現(xiàn)場。這既包括工業(yè)機器手、機器人

26、、工業(yè)測控、航空軍工中的實時控制,又包括機械、造紙、去污、紡織生產(chǎn)線中的分布式控制。單片機的實時數(shù)據(jù)處理能力以及I/O口擴展通信能力為工業(yè)控制中的快速、穩(wěn)定性提供了保障。4機電一體化產(chǎn)品中的應用集合機械、電子以及計算機技術(shù)于一體的機電一體化技術(shù)是當今機械工業(yè)的發(fā)展方向。數(shù)控車床、鉆床、電梯、電腦縫紉機等都是機電一體化的典型產(chǎn)品。單片機作為一種微機產(chǎn)品,由于其體積小、可靠性高、功能性強的特點能夠方便地融入到機械產(chǎn)品中去,提高機械產(chǎn)品的自動化和智能化程度。1.1.5 單片機的發(fā)展趨勢從大的角度來看單片機的發(fā)展方向有兩個:一是朝著高性能、大容量的方向發(fā)展,通過新技術(shù)或者高集成提高單片機的性能,使其擁

27、有更加強大的功能;另一方面與上述相反,單片機朝著小容量、低價格的方向發(fā)展,強調(diào)在滿足一定功能條件下盡可能減小體積,降低價格。站在新技術(shù)、新功能的角度上看,單片機的發(fā)展趨勢有以下幾個方面。1CMOS化CHMOS(互補高性能MOS)技術(shù)的出現(xiàn)大大促進了單片機的CMOS化。CMOS芯片具有低功耗、高密度、低價格的特點,通過單片機的CMOS化可以減小單片機的體積以及功耗。CMOS同時有低速度的特點。HMOS工藝芯片的出現(xiàn)解決了低速度的問題但同時提高了芯片的體積以及功耗。CHMOS技術(shù)是CMOS工藝與HMOS工藝的結(jié)合,通過CHMOS技術(shù)能夠在提高速度的同時保持低功耗、高密度的特點,是單片機發(fā)展的方向。

28、2低電壓、低功耗降低單片機工作電壓以及電流,使單片機能夠在低電壓、低功耗條件下運行是單片機的發(fā)展方向。3高性能化通過提高單片機中MPU的性能進一步提高單片機處理速度和可靠性是單片機發(fā)展方向之一。32位處理器以及精簡指令RISC(Reduced Instruction Set Computer)結(jié)構(gòu)可以大幅提高單片機運行速度。4大容量化以往單片機內(nèi)部ROM的大小為14KB,RAM大小為64128B。在復雜場合下,需要通過內(nèi)存擴展的方法來提高單片機的內(nèi)存容量。現(xiàn)在通過閃存技術(shù)和其他方法擴大存儲器容量可以減少單片機內(nèi)存擴展需求,使單片機系統(tǒng)更加簡單。5系統(tǒng)單片化通常所說的單片機包含了MPU、存儲器以

29、及I/O接口幾部分主要結(jié)構(gòu),系統(tǒng)需要的其他一些結(jié)構(gòu),如DMA(Direct Memory Access)控制器、D/A轉(zhuǎn)換、A/D轉(zhuǎn)換器等并沒有集成在單片機內(nèi)部。如果在系統(tǒng)中需要用到上述功能則需要通過外部擴展實現(xiàn)。根據(jù)系統(tǒng)要求將一些外圍功能集成到單片機內(nèi)部也是單片機的一個發(fā)展趨勢。1.2 單片機中的預備知識計算機中的數(shù)據(jù)是以二進制數(shù)進行存儲和運算的。要弄清單片機的工作原理和工作方式,首先要具備一定的計算機數(shù)據(jù)操作基本知識。下面從數(shù)制、編碼、運算幾個方面簡單介紹計算機中的數(shù)據(jù)知識。1.2.1 數(shù)制及其轉(zhuǎn)換13種基本數(shù)制數(shù)制指的是數(shù)據(jù)的表現(xiàn)形式。在計算機中常用的數(shù)制有二進制數(shù)、十進制數(shù)和十六進制數(shù)

30、。無論是什么數(shù)制,將這個數(shù)制所包含的數(shù)碼個數(shù)稱為基,將各個數(shù)字所具有的數(shù)值稱為權(quán)。(1)十進制數(shù)(Decimal)十進制數(shù)是日常生活中最為常用的數(shù)制形式。十進制數(shù)的基為10,其包含10個數(shù)碼,即0、1、2、3、4、5、6、7、8、9。十進制數(shù)的權(quán)是以10為底的冪,每個數(shù)所處位置不同,則其代表值不同。前一個數(shù)的權(quán)值為其相鄰后一個數(shù)權(quán)值的10倍。例如,一個十進制數(shù)為2345.678D,則其代表的數(shù)值為:2345.678D=2×+3×+4×+5×+6×+7×+8×從左到右各位代表的權(quán)值為:也就是平常所說的千、百、十、個、0.1、0

31、.01、0.001。(2)二進制數(shù)(Binary)二進制數(shù)是計算機中的基本數(shù)據(jù)形式,所有數(shù)據(jù)在計算機中都以二進制數(shù)形式進行存儲和運算。二進制數(shù)的基為2,在二進制數(shù)中只包含0和1兩個數(shù)碼。二進制數(shù)的權(quán)是以2為底的冪,每個數(shù)所處位置不同,則其代表值不同。前一個數(shù)的權(quán)值為其相鄰后一個數(shù)權(quán)值的2倍。例如,一個二進制數(shù)為1011.1001B,則其代表的十進制數(shù)值為:1001.1011B=1×+0×+0×+1×+1×+0×+1×+1×  =8+0+0+1+0.5+0.25+0.125+0.0625  =9.

32、9375從左到右各位代表的權(quán)值為:二進制數(shù)之所以能夠成為計算機工作基本數(shù)據(jù)形式,這是由計算機中的電路工作原理決定的。計算機中的電路通常只有兩種狀態(tài),在二進制數(shù)中可以用1代表電路中的高電平,用0代表電路中的低電平;或者用1代表電路中的導通,用0代表電路中的截止。采用二進制數(shù)可以方便地對電路進行計數(shù)工作。(3)十六進制數(shù)(Hexadecimal)十六進制數(shù)的基為16,在十六進制數(shù)中包含了16個數(shù)碼,各個數(shù)碼表示如下:0123456789ABCDEF十六進制數(shù)的權(quán)是以16為底的冪,與二進制數(shù)相同,每個數(shù)所處位置不同,則其代表值不同。前一個數(shù)的權(quán)值為其相鄰后一個數(shù)權(quán)值的16倍。例如,一個十六進制數(shù)為F

33、72.C4H,則其代表的十進制數(shù)值為:F72.C4H=15×7×2×12×4× =3954.765625從左到右各位代表的權(quán)值為:相對于二進制數(shù)而言,十六進制數(shù)能夠用較少的位數(shù)表現(xiàn)較大的數(shù)值,便于書寫和記憶。由于二進制數(shù)與十六進制數(shù)的轉(zhuǎn)換非常簡單,所以在計算機中的數(shù)值常常采用十六進制數(shù)來表示。在匯編語言中,為了將十六進制數(shù)中的A、B、C、D、E、F與字母區(qū)分開來,書寫時常常會在其前面加一個0。例如F7H寫作0F7H。2數(shù)制間的轉(zhuǎn)換由于不同數(shù)制的特性不同,常常需要將一個數(shù)轉(zhuǎn)換為十進制數(shù)來理解數(shù)值大小,將一個數(shù)轉(zhuǎn)換為十六進制數(shù)來編寫程序,將一個數(shù)轉(zhuǎn)

34、換為二進制數(shù)來理解對應數(shù)據(jù)在計算機中的含義。下面介紹計算機中不同數(shù)制的轉(zhuǎn)換方法。(1)轉(zhuǎn)換為十進制數(shù)在前面介紹數(shù)制的過程中已經(jīng)介紹了二進制數(shù)和十六進制數(shù)轉(zhuǎn)換為十進制數(shù)的方法。將一個二進制數(shù)或十六進制數(shù)轉(zhuǎn)換為十進制數(shù)只需將該數(shù)各個數(shù)位的基與權(quán)相乘累加即可。例如:10110101B=1×+0×+1×+1×+0×+1×+0×+1×10110101B=181B5H=11×+5×=181(2)十六進制數(shù)與二進制數(shù)的轉(zhuǎn)換由于十六進制數(shù)的基16是二進制數(shù)基2的4次方,所以二進制數(shù)與十六進制數(shù)的轉(zhuǎn)換十分簡單。十

35、六進制數(shù)轉(zhuǎn)換為二進制數(shù)時,只需從右至左將各個位上的數(shù)以二進制數(shù)表示出來即可。二進制數(shù)轉(zhuǎn)換為十六進制數(shù)時,需要從右至左依次將4個二進制數(shù)表示成一個十六進制數(shù),左側(cè)不滿4個時在前面補0到4個即可。如表1-1所示為015的十進制數(shù)、二進制數(shù)、十六進制數(shù)的轉(zhuǎn)換關(guān)系表。表1-1 不同數(shù)制的數(shù)據(jù)轉(zhuǎn)換表十進制數(shù)D二進制數(shù)B十六進制數(shù)H十進制數(shù)D二進制數(shù)B十六進制數(shù)H000000810008100011910019200102101010A300113111011B401004121100C501015131101D601106141110E701117151111F例如,一個二進制數(shù)10010110101B

36、要轉(zhuǎn)換為十六進制數(shù),其過程如下:10010110101B=0100 1011 0101=4B5H一個十六進制數(shù)A3FBH轉(zhuǎn)換為二進制數(shù)的過程如下:A3FBH=1010 0011 1111 1011B(3)十進制數(shù)轉(zhuǎn)換為二進制數(shù)或者十六進制數(shù)將一個十進制數(shù)轉(zhuǎn)換為二進制數(shù)時,對于十進制數(shù)整數(shù)部分采用“除2取整”的方法,小數(shù)部分采用“乘2取整”的方法。十進制數(shù)轉(zhuǎn)換為十六進制數(shù)時可以采用類似的“除16取整”以及“乘16取整”的方法。由于十六進制數(shù)與二進制數(shù)之間的轉(zhuǎn)換十分簡單,在十進制數(shù)轉(zhuǎn)換為十六進制數(shù)時,也可以先轉(zhuǎn)換為二進制數(shù)繼而轉(zhuǎn)換為十六進制數(shù)。下面以一個十進制數(shù)78.8125D為例來介紹“除2取整

37、”以及“乘2取整”方法的使用。78.8125D整數(shù)部分為78,轉(zhuǎn)換為二進制數(shù)時將此數(shù)不停除2直到商為0為止,然后將所有余數(shù)逆向整合即可得到想要的二進制數(shù)。2 78余數(shù)為0 低位2 39余數(shù)為1219余數(shù)為12 9余數(shù)為12 4余數(shù)為02 2余數(shù)為021余數(shù)為1 高位如上所示將余數(shù)逆向整合得到78D=1001110B。小數(shù)部分0.8125轉(zhuǎn)換為二進制數(shù)時將該數(shù)的純小數(shù)部分不停乘以2直至乘積為1為止,將所有結(jié)果整數(shù)部分一次組合即可得到想要的二進制數(shù)。0.8125×2=1.625 整數(shù)部分為1 高位 0.625×2=1.25 整數(shù)部分為1 0.25×2=0.5整數(shù)部分為

38、0 0.5×2=1整數(shù)部分為1 低位如上所示將整數(shù)順次整合得到0.8125D=0.1101B。將小數(shù)部分以及整數(shù)部分整合得到78.8125D=1001110.1101B。1.2.2 計算機中的常用編碼計算機中的數(shù)據(jù)都是以二進制數(shù)形式進行存儲和運算的。計算機只能識別用二進制數(shù)表示的信息,所以計算機中需要進行處理的數(shù)字、符號都必須進行二進制編碼。下面介紹有符號數(shù)、ACSII碼以及BCD碼編碼方法。1有符號數(shù)編碼計算機中數(shù)據(jù)的存儲都以字節(jié)(即8位)作為存儲單位,一個數(shù)據(jù)占據(jù)的位數(shù)代表了其可以表示的數(shù)據(jù)范圍。對于一個無符號數(shù),8位數(shù)據(jù)對應二進制存儲范圍為0000 00001111

39、1111B,對應十六進制存儲范圍為000FFH,對應十進制存儲范圍為028-1(即0255)。而對于一個16位數(shù)據(jù),其對應二進制存儲范圍為0000 0000 0000 00001111 1111 1111 1111B,對應十六進制存儲范圍為00000FFFFH,對應十進制存儲范圍為0216-1(即065535)。對于一個有符號數(shù),計算機中將對應數(shù)據(jù)的最高位作為符號位來表示數(shù)據(jù)的正負。最高位為0代表為正數(shù),最高位為1代表為負數(shù)。最高位后面的位數(shù)用以表示數(shù)據(jù)的絕對值大小。計算機中有符號數(shù)的編碼方式有3種,即原碼、反碼和補碼。(1)原碼(True Form)設一個8位二進制數(shù)最高位為b7,最低位為b

40、0。當原碼表示一個有符號數(shù)時,對于一個正數(shù)而言,b7位為0,對于一個負數(shù)而言,b7位為1。其余7位b6b0用來表示數(shù)值的大小。由于7位數(shù)表示的大小范圍為027-1(即0127),故8位原碼數(shù)表示的數(shù)值范圍為-127+127。例如:+58原=+011 1010原=0011 1010 -58原=-011 1010原=1011 1010對于0的表示,則+0原=0000 0000原,-0原=1000 0000原。采用原碼表示一個有符號數(shù)簡單易懂,轉(zhuǎn)換方便。但是在原碼中0分為+0以及-0兩種表示方法,給運算帶來了不便。同時,對于兩個異符號數(shù)相加或者同符號數(shù)相減,原碼在運算中需要做減法運算。由于計算機中一

41、般只有加法器而無減法器,這就會給計算帶來不便,為了解決這個問題,在計算機中引入了反碼以及補碼的概念。(2)反碼(Ones Complement)如果一個數(shù)是正數(shù),那么其反碼與原碼相同。如果一個數(shù)是負數(shù),那么保持原碼符號位不變,將數(shù)值位按位依次取反可以得到它的反碼。例如: +58反=0011 1010 -58反=1100 0101對于0的表示,則+0反=0000 0000,-0反=1111 1111可見對于反碼而言,+0與-0的表示仍然不同。對于一個反碼如果要得到它的真值,那么首先要轉(zhuǎn)換為其原碼,繼而轉(zhuǎn)換為真值。8位反碼能夠表示的數(shù)值范圍為-127+127。(3)補碼(Twos Compleme

42、nt)對于補碼而言,如果一個數(shù)是正數(shù),那么其補碼與其原碼以及反碼相同。如果一個數(shù)是負數(shù),那么它的補碼為其反碼加1,即X補=X反+1。例如:+58補= 0011 1010 -58補=1100 0101+1=1100 0110對于0而言,+0補=0000 0000,-0補=1111 1111+1=1 0000 0000=0000 0000(最高位丟失)。可以看出對于補碼而言,0的表示是唯一的,都是0000 0000。一個補碼轉(zhuǎn)換為真值時,對于正數(shù),真值與補碼相同。對于負數(shù),保持最高位1不變,將數(shù)值位取反加1即可。對于一個補碼數(shù)1000 0

43、000B而言,保持負數(shù)位1不變,將數(shù)字位000 0000取反后為111 1111,加1后為1000 0000,代表真值-128。所以-128補=1000 0000B。8位補碼能夠表示的數(shù)值范圍為-128+127。為了幫助理解補碼中出現(xiàn)第9位丟失的現(xiàn)象,我們用日常生活中撥動時鐘的概念來幫助理解?,F(xiàn)在時鐘指向9點整,那么要使時鐘時間變?yōu)?點,有兩種方法:一種是逆時針撥動5格使其回到4;另一種是順時針撥動7格,使其經(jīng)過12后變?yōu)?。第一種方法相當于9-5等于4,做的減法運算。第二種相當于9+7=16,但是由于過了12,12自動丟失,變?yōu)?。這里第二種方法中12

44、丟失的現(xiàn)象與補碼中第9位丟失的現(xiàn)象一致,都是超過了一定的范疇產(chǎn)生了數(shù)據(jù)的丟失,時鐘中超過了一周的最大數(shù)值12,補碼中超過了最大位數(shù)8。通過這種數(shù)據(jù)丟失,我們發(fā)現(xiàn)此時9-5與9+7的計算結(jié)果相同,可以將減法運算轉(zhuǎn)換為加法運算。補碼引入的最大功能就是可以通過補碼將減法運算變?yōu)榧臃ㄟ\算,方便計算機的數(shù)據(jù)運算的處理。2ASCII碼(字符編碼)要將字符字母以二進制方式在計算機中表現(xiàn)出來,則需要對可能涉及的字符以一定的方式進行二進制編碼。ASCII(American Standard Coded for Information Interchange)是“美國信息交換標準”的簡稱,是目前最為流行的字符編碼

45、方式。ASCII碼是一種8位碼,其中后7位用以編碼代表字符信息。7個bit共可表示27=128個字符。在這些字符當中32個為控制字符,不能用于顯示打印,包括回車符、換行符、退格符、設備控制符等。另外96個為圖形字符,可以用于顯示以及打印,包括10個十進制數(shù)、52個大小寫英文字母以及34個其他字符。ACSII碼表如表1-2所示。表1-2 ASCII碼表高位低位000000010010001101000101011001110000NULSLESP0Pp0001SOHDC1(XON)!1AQaq0010STXDC2"2BRbr0011ETXDC3(XOFF)#3CScs0100EOTDC

46、4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;Kk1100FFFS,<Ll|1101CRGS-=Mm1110SORS.>Nn1111SIUS/?O_o第8位b7為奇偶校驗位,用以判斷數(shù)據(jù)傳送中信息是否出錯。奇偶校驗分為奇校驗以及偶校驗。奇校驗是指在發(fā)送端通過加入第8位使得整個字節(jié)中包含“1”的個數(shù)為奇數(shù)個,偶校驗是指發(fā)送端通過加入第8位使得整個字節(jié)中包含“1”的個數(shù)為偶數(shù)個。例如ACSII中A、

47、B、C、D幾個數(shù)采用奇校驗,則ASCII碼為:A 100 0001 奇校驗則為 1100 0001B 100 0010 奇校驗則為 1100 0010C 100 0011 奇校驗則為 0100 0011D 100 0100 奇校驗則為 1100 0100通過第8位的加入使得ASCII碼發(fā)送端中“1”的個數(shù)保持為奇數(shù)個。接收端接收到數(shù)據(jù)后,通過判斷數(shù)據(jù)中1的數(shù)量是否為奇數(shù)個,即可判斷通信過程中是否出現(xiàn)錯誤。3BCD碼(十進制數(shù)的二進制表示)BCD(Binary Coded Decimal)碼是一種以二進制代碼表示十進制數(shù)的方法。在BCD碼中最為常用的是8421BCD碼。在84

48、21BCD碼中以4位二進制數(shù)00001010為09這10個數(shù)字進行編碼。8421分別代表二進制中4個數(shù)字的權(quán)值。BCD碼與十進制數(shù)之間的轉(zhuǎn)換非常方便,只需要將十進制數(shù)各位數(shù)字依次轉(zhuǎn)換為8421BCD碼表示即可。用8421BCD碼表示015這幾個數(shù)字的轉(zhuǎn)換表如表1-3所示。表1-3 十進制與BCD碼轉(zhuǎn)換表十進制數(shù)D8421BCD碼十進制數(shù)D8421BCD碼十進制數(shù)D8421BCD碼十進制數(shù)D8421BCD碼000004010081000120001001010001501019100113000100112001060110100001000014000101003001170111110001

49、00011500010101BCD碼與其他數(shù)制之間的轉(zhuǎn)換不是直接的,要轉(zhuǎn)換為二進制數(shù)或者十六進制數(shù),首先要轉(zhuǎn)換為十進制數(shù)繼而進行轉(zhuǎn)換。1.2.3 計算機中的運算計算機中的數(shù)據(jù)是以二進制的方式存儲與運算的。二進制的運算包括了算術(shù)運算和邏輯運算兩個方面。1算術(shù)運算二進制數(shù)的加減乘除與十進制數(shù)的加減乘除相似。在加法以及乘法中如果超過了原來的范圍則需要進位,在減法或者除法中如果原來的數(shù)不夠用則需要借位。從本質(zhì)上說,乘法可以轉(zhuǎn)換為加法進行運算,而除法可以轉(zhuǎn)換為減法進行運算。如上所述,通過補碼的引入,可以將減法運算轉(zhuǎn)換為加法運算,因此在計算機中只需要有累加器就可以完成加減乘除四則運算。下面主要介紹補碼的運

50、算以及溢出判斷。對于一個n位的機器數(shù),只要X、Y以及X+Y都在-2n-1+(2n-1)范圍內(nèi),則兩數(shù)和的補碼與兩數(shù)補碼之和相同。即:X+Y補=X補+Y補在補碼的運算過程中,無論是做加法運算或者減法運算,都可以將其視為有符號數(shù)的加法來進行運算。如果在運算過程中出現(xiàn)了進位現(xiàn)象,那么進位的位數(shù)自然丟失不計入計算結(jié)果。下面以幾個例子來進行說明?!緦嵗?-1】用補碼運算求56-24。用補碼表示56補=0011 1000用補碼表示-24補=1110 1000用補碼運算為:最高位自然丟失后計算機結(jié)果為0010 0000=32【實例1-2】用補碼運算求-18-13。用補碼表示-18補=1110 1110用補碼

51、表示-13補=1111 0011用補碼運算為:最高位自然丟失后結(jié)果為 1110 0001= -31當X+Y結(jié)果不在 -2n-1+(2n-1)范圍內(nèi)時,計算結(jié)果超出了n位機器數(shù)補碼能夠表示的數(shù)據(jù)范圍,此時上面的公式不再成立。如下例所示?!緦嵗?-3】用補碼運算求67+68。用補碼表示67補=0100 0011用補碼表示68補=0100 0100用補碼運算為:如果將最高進位省去,那么此時結(jié)果為1000 0111=-121。兩個正數(shù)相加得到一個負數(shù),結(jié)果產(chǎn)生了錯誤。上面的這種現(xiàn)象稱為溢出,這種錯誤稱為溢出錯誤。所謂溢出就是指計算機在運行過程中產(chǎn)生的數(shù)超過了計算機所能表示的數(shù)的范圍。如上面實際運算結(jié)果應該

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論