單片機(jī)復(fù)習(xí)概念與上課例題整理合輯_第1頁
單片機(jī)復(fù)習(xí)概念與上課例題整理合輯_第2頁
單片機(jī)復(fù)習(xí)概念與上課例題整理合輯_第3頁
單片機(jī)復(fù)習(xí)概念與上課例題整理合輯_第4頁
單片機(jī)復(fù)習(xí)概念與上課例題整理合輯_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第一部分 89C51 單片機(jī)硬件結(jié)構(gòu)和原理 單片機(jī)(SingleChip Micro Computer)是將微處理器MPU、一定容量的RAM和ROM、I/O口、定時器、內(nèi)部總線等全部集成在一片大規(guī)模集成芯片中,而構(gòu)成的具有基本功能的計(jì)算機(jī)。1,89C51單片機(jī)的基本配置組成89C51單片機(jī)在片內(nèi)包括那些基本配置單元? 一個8位的8051微處理器(CPU)。片內(nèi)256字節(jié)數(shù)據(jù)存儲器RAMSFR。片內(nèi)4KB程序存儲器Flash ROM。4個8位并行IO端口P0P3。具有5個中斷源、兩個中斷優(yōu)先級的中斷控制。一個全雙工UART(通用異步收發(fā)器)片內(nèi)振蕩器和時鐘電路,外界晶振的最高頻率為24MHz。2

2、,89C51單片機(jī)(MCS51)引腳及功能89C51(MCS51)單片機(jī)的40只引腳按其功能來分,可分為三部分:電源及時鐘引腳;控制引腳;I/O引腳。圖23為引腳分類圖,這些引腳構(gòu)成了典型的三總線形式。即地址總線、數(shù)據(jù)總線、控制總線。圖中鎖存器為外部擴(kuò)展器件,常用74LS373、74LS573。3,89C51 單片機(jī)存儲器配置MCS51系列單片機(jī)與一般的微機(jī)的存儲空間的配置方式很不相同。一般的微機(jī)(如X86系列)只有一個存儲地址空間,即ROM和RAM安排在一個地址空間的不同區(qū)域內(nèi)。CPU訪問存儲器時,一個地址對應(yīng)一個存儲單元,這個存儲單元可以是ROM也可以是RAM,而且使用同樣的訪問指令。這種

3、存儲結(jié)構(gòu)成為普林斯頓結(jié)構(gòu)(Structure of Princeton)。 MCS51系列單片機(jī)的存儲器在結(jié)構(gòu)上分為:程序存儲器空間和數(shù)據(jù)存儲器空間。而這兩大存儲器空間又可以分為4個存儲空間:片內(nèi)程序存儲器空間和片外程序存儲器空間;片內(nèi)數(shù)據(jù)存儲器空間和片外數(shù)據(jù)存儲器空間。這種把程序存儲器空間和數(shù)據(jù)存儲器空間分開的結(jié)構(gòu),被稱為哈佛結(jié)構(gòu)(Structure of Harvard)。對使用者來說存儲空可分為以下三塊:程序存儲器空間:(1)片內(nèi)、片外統(tǒng)一編址的(0000HFFFFH)64KB程序存儲器地址空間。用16位地址碼。 數(shù)據(jù)存儲器空間:(2)片外編址的(0000HFFFFH)64KB數(shù)據(jù)存儲器

4、地址空間。用16位地址碼。(3)片內(nèi)編制的(00HFFH)256B數(shù)據(jù)存儲器地址空間。用8位地址碼。上述3個存儲空間地址是重疊的,MCS51系列單片機(jī)的指令系統(tǒng)設(shè)置了3種數(shù)據(jù)傳送指令,以區(qū)別這3個重疊的地址空間。(1)MOVC指令用于訪問片內(nèi)外程序存儲器ROM空間。(2)MOVX指令用于訪問片外數(shù)據(jù)存儲器RAM空間。4,片內(nèi)RAM89C51片內(nèi)數(shù)據(jù)存儲器RAM的容量為256B(字節(jié)),這256字節(jié)的RAM又分為兩個區(qū)段:低128字節(jié)(00H7FH)是真正意義上的RAM區(qū)(使用者可以定義使用的RAM區(qū))。高128字節(jié)(80HFFH)是特殊功能寄存器區(qū)(使用者可以按規(guī)定使用,但不可以定義使用的RA

5、M區(qū))。(1)低128字節(jié)RAM 見教材(2)高128字節(jié)RAM 見教材5,時鐘電路及89C51 CPU時序(1)振蕩周期與節(jié)拍、狀態(tài)S、時鐘周期、機(jī)器周期 一個狀態(tài)S包括兩個節(jié)拍P1、P2,一個狀態(tài)的前1/2所對應(yīng)的節(jié)拍是P1,后1/2對應(yīng)的節(jié)拍是P2。一個節(jié)拍對應(yīng)一個振蕩周期;一個狀態(tài)S對應(yīng)二個振蕩周期,而二振蕩周期對應(yīng)一個時鐘周期,也就是一個時鐘周期即為一個狀態(tài)S。節(jié)拍、狀態(tài)、振蕩周期、時鐘周期的對應(yīng)關(guān)系見圖29。 圖29節(jié)拍、狀態(tài)、振蕩周期、時鐘周期的對應(yīng)關(guān)系(2)機(jī)器周期 機(jī)器周期是指CPU訪問一次存儲器所用的時間。MCS51規(guī)定一個機(jī)器周期為6個狀態(tài),并依次表示為S1,S2S6。一

6、個狀態(tài)S,包括了二個節(jié)拍P1、P2,所以一個機(jī)器周期共有12節(jié)拍,分別記為:S1P1、S1P2,S2P1、S2P2,S6P1、S6P2。由于一個機(jī)器周期包含12個振蕩周期,因此機(jī)器周期就是振蕩脈沖12分頻后的周期信號。(3)指令周期 計(jì)算機(jī)的一條指令由一個或多個字節(jié)構(gòu)成,執(zhí)行一條指令所需要的時間為指令周期。指令周期根據(jù)指令的不同而不同,可包含1個到4個機(jī)器周期。4時序定時單位 振蕩周期:晶體振蕩器的振蕩周期。振蕩周期是最小的時序定時單位。 時鐘周期(狀態(tài)周期):一個時鐘周期包括2個振蕩周期。 機(jī)器周期:1個機(jī)器周期由6個狀態(tài)即12個振蕩周期組成,是計(jì)算機(jī)執(zhí)行一條指令所需時間的定時(計(jì)時)單位。

7、 指令周期:執(zhí)行一條指令所需的時間。指令周期根據(jù)指令的不同而不同,可包含1個到4個機(jī)器周期。當(dāng)單片機(jī)外接12MHZ石英晶體時,各個周期的計(jì)算表達(dá)式如下:振蕩周期 時鐘周期 機(jī)器周期指令周期(14)機(jī)器周期145,微型計(jì)算機(jī)硬件系統(tǒng)的連接結(jié)構(gòu)微型計(jì)算機(jī)的硬件包括:微處理器MPU(CPU)、存儲器(Memory)輸入輸出設(shè)備(Input & Output Device)、輸入輸出接口(IO Interface)。這四大部分構(gòu)成了計(jì)算機(jī)的實(shí)體,而他們?nèi)绾芜B接,這就涉及到計(jì)算機(jī)的結(jié)構(gòu)問題了。典型的計(jì)算機(jī)結(jié)構(gòu)見圖1·5。 時鐘存儲器 存儲器 RAM ROM 微處理數(shù)據(jù)總線(雙向)器 D

8、BCPU地址總線(單項(xiàng)) AB控制總線(雙向)CB I/O接口 I/O接口 外部設(shè)備 外部設(shè)備 圖1·5 計(jì)算機(jī)結(jié)構(gòu)示意圖 總線(BUS)就是把把多個功能單元連接起來,用于各個功能單元之間的信息、數(shù)據(jù)交換的共同通訊線路。在CPU、存儲器、I/O口之間信息傳輸?shù)墓餐ㄓ嵕€路稱為系統(tǒng)總線。系統(tǒng)總線按功能分可以分成三類;地址總線AB、數(shù)據(jù)總線DB、控制總線CB。6,CPU取指令、執(zhí)行指令時序指令系統(tǒng)中的指令可按長度分為單字節(jié)指令、雙字節(jié)指令和3字節(jié)指令。執(zhí)行這些指令所需機(jī)器周期是不同的,概括起來有:單字節(jié)單機(jī)器周期指令,單字節(jié)雙機(jī)器周期指令,雙字節(jié)單機(jī)器周期指令,雙字節(jié)雙機(jī)器周期指令,3字

9、節(jié)都是雙機(jī)器周期指令,乘、除法指令則為4個機(jī)器周期指令7,輸入輸出端口(并行IO口)MCS51系列單片機(jī)共有4個8位并行I/O口,每個I/O端口由鎖存器、輸出驅(qū)動器和輸入緩沖器器組成,其中的鎖存器屬于SFR。這4個I/O端口f分別記為P0、P1、P2、P3。這4個8位并行I/O口不但可以按字節(jié)尋址,而且還可以按位尋址。故而使用這些端口可以很方便地實(shí)現(xiàn)CPU與外部設(shè)備的連接與信息交換。8,準(zhǔn)雙向口的概念P0P3都是準(zhǔn)雙向口,準(zhǔn)雙向口的意思是,當(dāng)準(zhǔn)雙向口作為輸入端口時,必須先對端口鎖存器寫1。第二部分 指令系統(tǒng)1,指令和程序設(shè)計(jì)語言指令是CPU根據(jù)人的意圖來執(zhí)行某種操作的命令。一臺計(jì)算機(jī)所能執(zhí)行的

10、全部指令的集合稱為這個CPU的指令系統(tǒng)。能被計(jì)算機(jī)直接識別和執(zhí)行的程序,稱為目標(biāo)程序(Object Program)。用二進(jìn)制碼直接編寫目標(biāo)程序是很困難和費(fèi)時的事情。于是人們采用了英文縮寫的符號,即指令助記符來表示指令。這樣就一種程序語言-匯編語言(Assembly Language)。2,指令構(gòu)成及格式微型計(jì)算機(jī)的指令系統(tǒng)由幾十條至幾百條指令構(gòu)成,每條指令由兩個字段構(gòu)成,即操作碼(OpCode)字段和操作數(shù)(Operand)字段。 操作碼字段是表明指令執(zhí)行何種性質(zhì)的操作。例如加法操作、減法操作、傳送操作等。在匯編語言中用助記符(Mnemonic)代表。 操作數(shù)字段是指明指令執(zhí)行的操作所需要的

11、操作數(shù)。在操作數(shù)字段中,可以是操作數(shù)本身或操作數(shù)地址。指令中操作數(shù)可以是一個或者兩個,前者稱為單操作數(shù)指令,后者稱為雙操作數(shù)指令。而雙操作數(shù)又分為源操作數(shù)SRC(Source)和目的操作數(shù)DST(Destination),在指令執(zhí)行之前,SRC和DST均為參加運(yùn)算處理的兩個操作數(shù),指令執(zhí)行之后,DST中存放運(yùn)算處理的結(jié)果。 操作碼 目的操作數(shù),源操作數(shù) 操作碼和操作數(shù)都對應(yīng)著二進(jìn)制代碼,指令代碼有若干字節(jié)組成。對于不同的指令,指令的字節(jié)數(shù)或許相同、或許不同。MCS51的指令系統(tǒng)中,有單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。3,尋址方式尋址方式就是在指令中說明操作數(shù)所在地址的方法。即按什么方式找到操

12、作數(shù)所在的地址。MCS51系列單片機(jī)共有7種尋址方式: 寄存器尋址(Register Addressing)MOV A,R0 ; (A)(R0) 直接尋址(Direct Addressing)MOV A,4AH ;(A)(4AH) 立即尋址(Immediate Addressing)MOV A,#48H ;(A) #48H 寄存器間接尋址(Register Addressing)MOV R1,#60HMOV A,R1 ;(A)(60H) 變址尋址(Indexed Addressing)假設(shè)(A)=54H;(DPTR)=3F21H,執(zhí)行指令MOVC A,A+DPTR ;(A)(A)+(DPTR)

13、其功能是將程序存儲空間3F75H單元的內(nèi)容讀入累加器A。 相對尋址(Relative Addressing)目的地址 = 轉(zhuǎn)移指令所在地址 + 轉(zhuǎn)移指令字節(jié)數(shù) + rel例如:SJMP rel ;(PC)(PC)+ 2+ rel位尋址(Bit Addressing)尋址時,操作數(shù)是二進(jìn)制數(shù)表示的地址,其位地址出現(xiàn)在指令中。例如:CLR bit ;(bit) 04,89C51單片機(jī)的指令系統(tǒng)MCS51指令系統(tǒng)共有111條指令,分為5大類;數(shù)據(jù)傳送類指令(29條);算術(shù)運(yùn)算類指令(24條);邏輯運(yùn)算及位移類指令(24條);控制轉(zhuǎn)移類指令(17條);位操作類指令(17條);第三部分 中斷系統(tǒng)1,中斷

14、的概念計(jì)算機(jī)的中斷處理技術(shù)解決了兩個根本問題。第一個問題是,在輸入或輸出過程中如何提高CPU的執(zhí)行效率;第二個問題是,在計(jì)算機(jī)系統(tǒng)工作中,能對外界隨機(jī)發(fā)生的事件做出及時的處理。當(dāng)CPU正在運(yùn)行主程序時,外界隨機(jī)發(fā)生了某一事件(如一個電平發(fā)生變化、一個脈沖沿的產(chǎn)生或一個計(jì)數(shù)器的計(jì)數(shù)溢出等)請求CPU即刻去處理,于是CPU暫時中止當(dāng)前運(yùn)行的程序,轉(zhuǎn)去執(zhí)行處理所發(fā)生事件的程序。中斷事件處理完成后,CPU再回到原來運(yùn)行程序被中止的地方,繼續(xù)運(yùn)行原來的程序。這樣的過程稱為中斷。實(shí)現(xiàn)這種功能的部件稱中斷系統(tǒng)。產(chǎn)生中斷的請求的源,稱為中斷源。中斷源向CPU提出數(shù)據(jù)、信息處理請求,稱為中斷請求。CPU暫時中止

15、當(dāng)前運(yùn)行的程序,轉(zhuǎn)去處理中斷請求處理的事件,稱為CPU的中斷響應(yīng)。對中斷事件的整個處理過程,稱為中斷服務(wù)。中斷處理完畢,再回到原來被中止的地方,稱為中斷返回。2,89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制89C51單片機(jī)中斷系統(tǒng)結(jié)構(gòu)的結(jié)構(gòu)如圖53所示。從圖中可以看出,89C51單片機(jī)有5個中斷源,4個中斷控制寄存器(IE、IP、TCON和SCON),用來控制中斷的類型、中斷的開與關(guān)和中斷的優(yōu)先級。89C51單片機(jī)的中段系統(tǒng)有兩個優(yōu)先級,每個中斷源都可以編程為高優(yōu)先級或低優(yōu)先級中斷源??梢詫?shí)現(xiàn)二級中段服務(wù)程序的嵌套。中斷系統(tǒng)結(jié)構(gòu)圖見教材。1, 89C51單片機(jī)的中斷源 89C51共有6個中斷源:2個外部中

16、斷源;2個定時器溢出中斷源;2個串行中斷源。 外部中斷(和):外部中斷包括外部中斷0和外部中斷1。外部中斷的中斷請求信號是由89C51單片引腳(P3.2)和(P3.3)輸入。外部中斷請求信號有二種信號方式:電平方式:電平方式的中斷請求是低電平有效,只要在(P3.2)和(P3.3)引腳上出現(xiàn)低電平時,就可以激活外部中斷標(biāo)志。脈沖方式: 脈沖方式的中斷請求則是由脈沖的負(fù)跳變來實(shí)現(xiàn)激活外部中標(biāo)志的。在脈沖請求中斷方式下,在兩個相鄰機(jī)器周期內(nèi),引腳或上的電平需要發(fā)生變化,即在前一個機(jī)器周期里為高電平,后一個機(jī)器周期里為低電平,這樣就可以激活外部中斷標(biāo)志位。所以在脈沖方式下,中斷請求信號的高電平、低電平

17、狀態(tài)都必須維持至少一個機(jī)器周期,以便CPU能采樣到引腳電平的變化,使中斷請求有效。 內(nèi)部定時和外部計(jì)數(shù)中斷:單片機(jī)內(nèi)部有二個定時器計(jì)數(shù)器(T0T1),對脈沖信號進(jìn)行計(jì)數(shù)。若脈沖信號為周期不變的內(nèi)部脈沖(周期為一個機(jī)器周期),則計(jì)數(shù)脈沖的個數(shù)就能反映時間的長短。這種計(jì)數(shù)方式稱為定時方式。若脈沖信號來自單片機(jī)外部,則由引腳T0P3.4或T1P3.5輸入。這樣的脈沖往往周期是不固定的,計(jì)數(shù)脈沖的個數(shù)僅僅反映了外部脈沖輸入個數(shù)的多少。這種計(jì)數(shù)方式稱為計(jì)數(shù)方式。 有以上的兩種方式可見,定時器計(jì)數(shù)器是同一個脈沖計(jì)數(shù)結(jié)構(gòu),僅僅因?yàn)檩斎朊}沖的方式不同而被稱為定時器或計(jì)數(shù)器。就其實(shí)質(zhì)T0和T1都是計(jì)數(shù)器。 當(dāng)計(jì)

18、數(shù)器計(jì)數(shù)滿后再計(jì)數(shù)就會發(fā)生溢出(計(jì)數(shù)值為FFFFH再加1),單片機(jī)硬件會自動設(shè)置一個溢出標(biāo)志位,CPU查到這個標(biāo)志位為1時,便激活定時器計(jì)數(shù)器中斷。 串行口中斷:串行口中斷是為了串行口通訊而設(shè)置的。每當(dāng)串行口發(fā)送或接受完一幀數(shù)據(jù)時,就自動將串行口發(fā)送或接收中斷標(biāo)志位置1。當(dāng)CPU查到發(fā)送或接收中斷標(biāo)志位是1時,便激活串行中斷。串行中斷是單片機(jī)內(nèi)部自動發(fā)生的,不需要在芯片外設(shè)置引入端。2,中斷控制 中斷控制是單片機(jī)提供給用戶控制中斷的一些手段,要實(shí)現(xiàn)對中斷的控制,用戶只能通過以下4個SFR寄存器來實(shí)施: 定時器控制寄存器TCON(用6位); 串行口控制寄存器SCON(用2位); 中斷允許寄存器I

19、E; 中斷優(yōu)先級寄存器IP;通過對以上4個特殊功能寄存器的各位進(jìn)行置位或復(fù)位操作,可以實(shí)現(xiàn)對中斷的控制。3,中斷響應(yīng)及中斷處理過程中斷響應(yīng)就是CPU對中斷源提出的中斷請求予以接收。中斷處理過程包括3個過程階段:中斷響應(yīng)、中斷處理和中斷返回。 當(dāng)CPU執(zhí)行主程序的第K條指令時,外設(shè)向CPU提出中斷請求,CPU接收中斷請求,在第K條指令執(zhí)行完后,中斷主程序的執(zhí)行,保存斷點(diǎn)地址(第K+1條指令的地址),轉(zhuǎn)向中斷服務(wù)程序,這即為中斷響應(yīng)。CPU執(zhí)行中斷服務(wù)程序,即為中斷服務(wù)。CPU執(zhí)行完中斷服務(wù)程序之后,CPU返回到主程序第K+1條指令處繼續(xù)執(zhí)行主程序,即為中斷返回。4,中斷響應(yīng)的自主操作過程 中斷響

20、應(yīng)自主操作過程從一般用戶的使用出發(fā)大致可以簡述如下: CPU按IP設(shè)定的優(yōu)先級響應(yīng)中斷,對于設(shè)定為同優(yōu)先級的中斷響應(yīng)順序按片內(nèi)硬件的查詢順序響應(yīng)中斷。 CPU接收一個中斷請求后,會自動阻止除高優(yōu)先級以外的一切中斷請求。如果CPU接收的中斷源在IP中設(shè)為高優(yōu)先級,那么一切中斷請求都會被阻止。 CPU接收中斷請求后,CPU會自動將主程序的斷點(diǎn)地址壓入堆棧保存。程序計(jì)數(shù)器PC的內(nèi)容會自動裝入中斷源對應(yīng)的矢量地址。所謂矢量地址就是與中斷源對應(yīng)的中斷服務(wù)程序的入口地址。中斷矢量地址表,見表51。表51 中斷源及其對應(yīng)的矢量地址 中斷源中斷矢量地址外部中斷0() 0003H定時器T0中斷 000BH外部中

21、斷1() 0013H定時器T1中斷001BH串行口中斷 0023H考試出編程題第四部分 定時器89C51內(nèi)部有兩個可編程的定時器計(jì)數(shù)器,分別稱為定時計(jì)數(shù)器T0和定時計(jì)數(shù)器T1(簡稱定時T0;定時器T1)。T0和T1有四種工作模式可供用戶編程選擇。61定時計(jì)數(shù)器結(jié)構(gòu)及概述定時計(jì)數(shù)器的結(jié)構(gòu)圖如圖61所示。CPU是通過內(nèi)部總線與定時計(jì)數(shù)器交換數(shù)據(jù)。定時計(jì)數(shù)器T0由兩個8位寄存器TH0和TL0組成;而定時計(jì)數(shù)器T1也是由兩個8位寄存器TH1和TL1組成。TH0(TH1)存儲高8位數(shù);TL0(TL1)存儲低8位數(shù)。這4個寄存器都是SFR寄存器。TMOD寄存器用于確定定時計(jì)數(shù)器的工作模式;TCON寄存器用

22、來控制T0和T1定時計(jì)數(shù)器的啟動、停止和保存定時計(jì)數(shù)器的T0和T1的溢出標(biāo)志位。定時器結(jié)構(gòu)圖見教材。1計(jì)數(shù)功能 設(shè)置為計(jì)數(shù)工作方式時,89C51有T0(P34)和T1(P35)兩個引腳,分別用于計(jì)數(shù)器的計(jì)數(shù)脈沖輸入端。輸入的計(jì)數(shù)脈沖在負(fù)跳變時有效,計(jì)數(shù)器加1.。CPU在每個機(jī)器周期的S5P2期間采樣T0和T1引腳的輸入電平,若前一個機(jī)器周期采樣為高電平;后一個機(jī)器周期采樣為低電平,則緊接著的下一個機(jī)器周期S3P1期間,計(jì)數(shù)器計(jì)數(shù)(加1計(jì)數(shù))。由此可見,檢測1到0的電平變化需要兩個機(jī)器周期,所以最高計(jì)數(shù)頻率為震蕩頻率的124。計(jì)數(shù)器的計(jì)數(shù)長度與計(jì)數(shù)器裝入的初值有關(guān),初值為0時,最大計(jì)數(shù)值為:=

23、65536。2定時功能設(shè)置為定時工作方式時,計(jì)數(shù)脈沖來自89C51片內(nèi)振蕩器經(jīng)12分頻后的脈沖,也就是每個機(jī)器周期,計(jì)數(shù)器加1計(jì)數(shù),直到計(jì)數(shù)器記滿,記滿后,在計(jì)數(shù)計(jì)數(shù)器計(jì)數(shù)值歸零,溢出標(biāo)志位由硬件自動置1。因?yàn)闄C(jī)器周期的時間是固定不變的,所以從開始計(jì)數(shù)到計(jì)數(shù)溢出的時間也是固定不變的。這樣計(jì)數(shù)器也就成了定時器了。在機(jī)器周期一定的條件下,每次定時的長短與定時器裝入的初值有關(guān)。初值為0時,最大計(jì)數(shù)值為:= 65536。若晶振為12MHZ,則機(jī)器周期為1S,最大定時長即為,65536 ms??荚嚦鼍幊填}第五部分 串行通訊一、串行通訊的方式串行通訊的傳輸方式有3種數(shù)據(jù)傳送形式:單工形式(Simplex)

24、;半雙工形式(Halfduplex);全雙工形式(Fullduplex)。這三種方式見圖72。圖72串行通訊傳輸方式的三種連接形式二、串行通訊的傳輸方式 串行通訊的基本原理框圖如圖73所示。發(fā)送器是由一個發(fā)送緩沖器和一個并串變換移位寄存器組成。CPU將要發(fā)送的數(shù)據(jù)以并行方式送入并暫存在發(fā)送緩沖器中。在發(fā)送時鐘的控制下,位移寄存器的內(nèi)容逐位被送到通訊線路上,傳送到對方。在發(fā)送完畢時,移位寄存的內(nèi)容變空,發(fā)送緩沖器中的內(nèi)容會并行送入移位寄存器,準(zhǔn)備新的發(fā)送;發(fā)送緩沖器內(nèi)容為空時,將準(zhǔn)備接收下一次要發(fā)送的數(shù)據(jù)。 接收器只是與發(fā)送器數(shù)據(jù)變換的過程相反,從線路送來的數(shù)據(jù),在接收時鐘的控制下,被逐位送入串

25、并變換移位寄存器。在全部數(shù)據(jù)位被串行移入后,串并變換移位寄存器的內(nèi)容會并行送入接收緩沖器,并由CPU讀取。 圖73串行通訊的基本原理框圖三、同步通訊與異步通訊串行通訊是指將數(shù)據(jù)的每個二進(jìn)制數(shù)據(jù)位,依據(jù)一定的順序逐位進(jìn)行傳送的通訊方法。在串行通訊中,有兩種基本的通訊方法。(一)異步串行通訊ASYNC(Asynchronous Data Communication) 異步通訊規(guī)定了字符數(shù)據(jù)的傳輸格式,即每個數(shù)據(jù)以相同的幀格式傳送。如圖74所示。每一幀數(shù)據(jù)由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成。 圖 74 異步通訊的數(shù)據(jù)傳送格式1起始位(Start bit)在通訊線路上沒有數(shù)據(jù)傳送時,線路處于邏輯

26、1狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送數(shù)據(jù)時,首先要發(fā)出一個邏輯0信號,這個邏輯低電平就是起始位。起始位通過通訊線路傳向接收設(shè)備,接收設(shè)備檢測到這個邏輯低電平后,就開始接收數(shù)據(jù)位信號,所以起始位所起的作用,就是表示數(shù)據(jù)開始傳送。2數(shù)據(jù)位(Data bit) 當(dāng)接收設(shè)備收到起始位后,緊接著就會收到數(shù)據(jù)位。數(shù)據(jù)位的個數(shù)(對89C51而言)可以是5、6、7或8位數(shù)據(jù)。在數(shù)據(jù)傳送過程中,數(shù)據(jù)位從數(shù)據(jù)的最低位開始傳送。3奇偶校驗(yàn)位(Parity bit) 數(shù)據(jù)位發(fā)送完畢之后,可以發(fā)送(也可以不發(fā)送)奇偶校驗(yàn)位。用于校驗(yàn)是否正確傳送了數(shù)據(jù)。可以選擇奇校驗(yàn),也可以選擇偶校驗(yàn)或者不設(shè)置校驗(yàn)位。4停止位(Stop bit)在

27、奇偶校驗(yàn)位之后(若沒有奇偶校驗(yàn)位數(shù)就在據(jù)位之后)必須有停止位,用以表示一幀數(shù)據(jù)傳送結(jié)束。停止位采用邏輯1電平,可以選擇其長度為1位、位、2位。 從起始位到停止位表示一幀的數(shù)據(jù)或者表示一個字符傳送結(jié)束??梢越又鴤飨乱粋€字符(下一幀數(shù)據(jù)),也可以停一段空閑時間再傳下一個字符??臻e位為邏輯1電平。一幀數(shù)據(jù)代表一個特定的字符,一幀數(shù)據(jù)的各個位的時間間隔都是固定的,異步通訊的字符(也就是數(shù)據(jù))是一幀一幀發(fā)送的。5 數(shù)據(jù)位寬度的概念:在并行通訊時,每根傳輸線上的每位信息的時間寬度只要滿足接收方的接收響應(yīng)時間既可以進(jìn)行正確的信息接收,無需發(fā)送方用位寬度來滿足接收方,就能正確接收信息。在串行通訊時,串行通訊除

28、了用高(1)、低(0)電平表示信息外,還要用一根傳輸線上的位寬度來區(qū)分信息。也就是接收方要在有效的位時間寬度內(nèi)檢測到信息。由于發(fā)送方,發(fā)送數(shù)據(jù)的位寬取決于發(fā)送的時鐘頻率;接收方,在位寬內(nèi)采集信息的時刻(理想采樣時刻在位寬中心)取決于接收時鐘的頻率。為了保證傳送數(shù)據(jù)的正確,發(fā)送時鐘和接收時鐘應(yīng)該保持一定精度的同步。發(fā)送時鐘與數(shù)據(jù)、接收時鐘與數(shù)據(jù)的時序見圖75。 圖 75 發(fā)送時鐘與數(shù)據(jù)、接收時鐘與數(shù)據(jù)的時序 如果接收時鐘與發(fā)送時鐘不能按一定精度保持同步,則接收的數(shù)據(jù)位寬與發(fā)送的數(shù)據(jù)位寬之間必然存在誤差。倘若最后一位數(shù)據(jù)位寬的累計(jì)誤差超過一定的限度,那么接收端就不能接收到正確的數(shù)據(jù)。圖76表明接收

29、時鐘頻率高于發(fā)送時鐘頻率時,出現(xiàn)的接收錯誤。 圖76接收時鐘頻率高于發(fā)送時鐘頻率6異步通訊的特點(diǎn)異步通訊的基本特點(diǎn)是:發(fā)送時鐘與接收時鐘是相互獨(dú)立的,要求發(fā)送方與接收方具有相同的標(biāo)稱頻率值。這就是采用“異步通訊”這個名稱的由來。按照串行通訊的基本原理,實(shí)現(xiàn)正確通訊的基本要求是:保持接收方與發(fā)送方的收發(fā)時鐘一致。只有這樣,才能保證在整個數(shù)據(jù)傳輸過程中,接收時鐘始終處于發(fā)送數(shù)據(jù)位的位寬之內(nèi),以正確檢測到每位數(shù)據(jù)。但是在實(shí)際的通訊中,因?yàn)橥ㄓ嶋p方的時鐘是各自獨(dú)立的,而且距離遠(yuǎn),所以難以保證發(fā)送方與接收方的時鐘完全一致。不過可以通過正確選擇雙方的時鐘,加以選取適合的數(shù)據(jù)格式,就可以使雙方的時鐘誤差限定

30、在允許的范圍內(nèi),使得異步通訊滿足串行通訊的基本要求。異步通訊是一種簡便的串行通訊方式。(二)同步串行通訊SYNC(Synchronous Data Communication)1同步通訊的一般數(shù)據(jù)格式在異步通訊中,每一個字符(比如一個字符的ASCII碼是7位二進(jìn)制數(shù))都要用到起始位和停止位作為字符的開始和結(jié)束的標(biāo)志,以至于占用了20%左右的沉余時間。所以在數(shù)據(jù)傳送中為了提高傳送效率,常去掉這些標(biāo)志,采用同步傳送。同步通訊是一次傳送一批數(shù)據(jù)塊。在每個數(shù)據(jù)塊的開始約定發(fā)送12個同步字符碼(SYNC(16H)Synchronousidle。詳見ASCII(美國標(biāo)準(zhǔn)信息交換碼)字符表傳輸控制符),通過

31、同步字符使每個數(shù)據(jù)塊傳送開始時,收發(fā)雙方時鐘同步。同步通訊的數(shù)據(jù)格式如圖77所示。 圖77同步通訊的一般數(shù)據(jù)格式2同步通訊的特點(diǎn)同步通訊的最基本特點(diǎn)是;接收與發(fā)送時鐘嚴(yán)格保持同步,發(fā)送和接收的數(shù)據(jù)位寬,相互之間不存在累計(jì)誤差,從而保證了每個數(shù)據(jù)位的區(qū)分和正確接收。同步通訊數(shù)據(jù)塊與數(shù)據(jù)塊(也就是字符與字符)之間,不允許有空隙,當(dāng)線路空閑或沒有字符發(fā)送時,發(fā)送同步字符。同步通訊原則上講,一次性傳送數(shù)據(jù)碼長度不作嚴(yán)格限定,但在實(shí)際應(yīng)用中考慮到傳輸?shù)目煽啃?,對?shù)據(jù)碼的長度還是做了一些限定。在數(shù)據(jù)碼的后面是校驗(yàn)碼,校驗(yàn)碼是對傳送的字符進(jìn)行校驗(yàn),現(xiàn)在大部分校驗(yàn)碼都是采用CRC方法產(chǎn)生,校驗(yàn)碼長度一般為2字

32、節(jié)。同步通訊和異步通訊一樣,發(fā)送方和接收方必須使用一樣的數(shù)據(jù)格式。但同步通訊和異步通訊不同,發(fā)送時鐘和接收時鐘不是獨(dú)立產(chǎn)生的,接收時鐘是從接收數(shù)據(jù)流中提取出來的。這種依靠發(fā)送時鐘信息獲得接收時鐘的方法,能確保接收時鐘與發(fā)送時鐘的嚴(yán)格同步。同步通訊常用于傳輸信息量大,速度要求高的場合(速度可達(dá)800Kb/s),但是同步通訊的硬件設(shè)備較為復(fù)雜,成本略高。(三)波特率和接收發(fā)送時鐘(Baud rate and Receiver Transmitter Clock)1波特率在串行通訊中數(shù)據(jù)信息是按位傳送的,因此傳送數(shù)率用每秒傳送二進(jìn)制碼的位數(shù)來表示,稱為波特率(Baud rate)。波特率的單位為波特

33、(bitS)。例如:數(shù)據(jù)傳送速率為10個字符每秒,而每個字符包含11個二進(jìn)制數(shù)(一個起始位、一個奇偶位、一個終止位、8個數(shù)據(jù)位)。這樣傳送的波特率為:10字符×11bitS = 110bs = 110波特位時間(每位寬)Td = 波特率的倒數(shù):Td = 1110(Baud)00091s = 91ms數(shù)據(jù)位的發(fā)送和接收分別由發(fā)送時鐘和接收時鐘進(jìn)行定時控制。時鐘頻率的高低決定了波特率的高低,即通訊速度的快慢。在異步通訊中,接收方和發(fā)送方應(yīng)保持相同的波特率,接收方以每個字符數(shù)據(jù)的起始位與發(fā)送方保持時鐘同步。起始位、數(shù)據(jù)位、奇偶位和停止位的約定,在同一次傳送過程中必須保持一致,這樣才能成功地

34、傳送數(shù)據(jù)。波特率的選擇應(yīng)根據(jù)速度的需要,線路和設(shè)備的質(zhì)量而定。波特率選定之后,就要選定滿足波特率要求的接收、發(fā)送時鐘。2接收發(fā)送時鐘在串行通訊中,不論接收還是發(fā)送數(shù)據(jù),都需要依據(jù)時鐘信號來對傳送的數(shù)據(jù)進(jìn)行定位。在發(fā)送數(shù)據(jù)時,發(fā)送方在發(fā)送時鐘的下降沿將數(shù)據(jù)從移位寄存器中串行按位移出;接收方在接收時鐘的上升沿對接收數(shù)據(jù)進(jìn)行采集,并串行按位移入到移位寄存器。如圖78、79所示。 圖78發(fā)送時鐘與發(fā)送數(shù)據(jù) 圖79接收時鐘與接收數(shù)據(jù) 接收(發(fā)送)時鐘頻率與波特率的關(guān)系: 接收(發(fā)送)時鐘頻率N×接收(發(fā)送)波特率 接收(發(fā)送)波特率 =接收(發(fā)送)時鐘頻率N (N = 1,16,64) 在同步

35、通訊中,必須取N=1,也就是接收(發(fā)送)時鐘頻率等于接收(發(fā)送)波特率;在異步通訊中,N = 1,16,64,也就是接收(發(fā)送)時鐘頻率可以是接收(發(fā)送)波特率的1倍,16倍或者64倍。這樣就可以由要求的傳送波特率和倍數(shù)N來確定接收(發(fā)送)時鐘頻率。單片機(jī)原理上課例題匯編程序匯總例1.首先對片外RAM3000H30FFH單元的內(nèi)容全部置“1”,然后對其全部清“0”。(匯編語言進(jìn)行編寫)ORG 0000HSJMP STARTORG 0040HSTART:MOV A,#0FFH MOV R1,#00H MOV DPTR,#3000HLOOP1: MOVX DPTR,A INC R1 INC DPT

36、R CJNE R1,#00H,LOOP1 MOV R1,#00H MOV DPTR,#3000H MOV A,#00HLOOP2:MOVX DPTR,A INC R1 INC DPTR CJNE R1,#00H,LOOP2 SJMP $ END首先對片外RAM3000H30FFH單元的內(nèi)容全部置“1”,然后對其全部清“0”。(C語言進(jìn)行編寫)#include<reg52.h>main() unsigned int data i; unsigned char xdata,*p; p=ox3000; for(i=0;i<256;i+) *(p+i)=oxff; for(i=0;i

37、<256;i+) *(p+i)=ox00; while(1);例2:首先對片內(nèi)RAM30H40H單元的內(nèi)容全部置“1”,然后對其全部清“0”。(C語言進(jìn)行編寫)#include<reg52.h>main() unsigned char data i;/定義字符變量i,存在于片內(nèi)RAM unsigned char data,*p;/定義了一個指針變量,無符號字符型,指向片內(nèi)RAM p=ox30;/指針初始化 for(i=0;i<17;i+) *(p+i)=oxff; for(i=0;i<17;i+) *(p+i)=ox00; while(1);例3:將數(shù)據(jù)25H、2

38、6H分別送到片內(nèi)RAM20H、21單元,然后再把20H單元的內(nèi)容送到22H單元。最后將數(shù)據(jù)CDH送到P1口,再把P1口的內(nèi)容送到P2口,并指出尋址方式。ORG 0000HSJMP STARTORG 0040HSTART:MOV 20H,#25H MOV 21H,#26H MOV R0,#22H MOV R0,20H MOV P1,#0CDH MOV P2,P1 SJMP $ END例4:拆字(匯編語言進(jìn)行編程)ORG 0000HSJMP MAINORG 0040HMAIN:MOV DPTR,#7000H MOV A,#0ABH MOVX DPTR,A MOV R2,A SWAP A ANL A,#0FH INC DPTR MOVX DPTR,A MOV A,R2 ANL A,#0FH INC DPTR MOVX DPTR,A SJMP $ END拆字(C語言進(jìn)行編程)#include<reg52.h>main() unsigned char data x; unsigned char xdata,*p; p=ox7000; p=ox7000; *p=oxab; x=*p; x=x>>4; x=x&ox0f; *(p+1)=x; x=*p; x=x&ox0f;*(p+2)=x; while(1)例5:拼字ORG 0000HSJMP

溫馨提示

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

評論

0/150

提交評論