第五章單片機(jī)中斷定時(shí)器串行口的應(yīng)用_第1頁(yè)
第五章單片機(jī)中斷定時(shí)器串行口的應(yīng)用_第2頁(yè)
第五章單片機(jī)中斷定時(shí)器串行口的應(yīng)用_第3頁(yè)
第五章單片機(jī)中斷定時(shí)器串行口的應(yīng)用_第4頁(yè)
第五章單片機(jī)中斷定時(shí)器串行口的應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、5.1 片上外設(shè)綜述5.2 中斷系統(tǒng)(INT & ISR)5.3 定時(shí)/計(jì)數(shù)器 (Timer/Counter)5.4 串行通信口 (USART)第五章 51單片機(jī)片上外設(shè)的原理與應(yīng)用5.1 片上外設(shè)綜述 片上外設(shè)(on chip peripherals) 是單片機(jī)(MCU)等位于CPU外部的獨(dú)立硬件功能單元,是針對(duì)特定用途領(lǐng)域開發(fā)的專門功能模塊,通過(guò)特殊功能寄存器接口和CPU進(jìn)行通信,受到CPU的控制調(diào)度。 片上外設(shè)的種類非常多,且一直在迅速的發(fā)展中。每當(dāng)有某種技術(shù)需求變得重要和而迫切時(shí),MCU的廠商就會(huì)致力于將其作為獨(dú)立的片上外設(shè)集成在單片機(jī)內(nèi)部。常用的片上外設(shè)有哪些? 中斷系統(tǒng)控制器(也可

2、算是外設(shè)的一種) 定時(shí)/計(jì)數(shù)器 (通用) 定時(shí)/計(jì)數(shù)器基礎(chǔ)上的擴(kuò)展功能 CCP/PWM/QEI/Pulse Counter) (脈沖捕獲比較/脈寬調(diào)制/編碼器計(jì)數(shù)/脈沖計(jì)數(shù)器) 串行通信總線口(USART/SPI/I2C/USB) 汽車總線(CAN/LIN/FLEXRAY) 模-數(shù)/數(shù)-模轉(zhuǎn)換器(ADC/DAC) 學(xué)習(xí)片上外設(shè)的使用需要先了解下其產(chǎn)生的背景,然后學(xué)習(xí)這些外設(shè)的工作原理、寄存器說(shuō)明和編程使用技巧,并且需要多次反復(fù)動(dòng)手實(shí)驗(yàn)才能取得良好的效果。5.2 MCS-51單片機(jī)的中斷系統(tǒng)中斷系統(tǒng)結(jié)構(gòu):中斷源和中斷控制寄存器中斷響應(yīng)過(guò)程中斷程序設(shè)計(jì)舉例 背景知識(shí): 微處理器/單片機(jī)的CPU是一

3、直按照用戶編寫的程序按部就班的執(zhí)行程序,包括各種順序、條件判斷、有限或者無(wú)限循環(huán)工作等。例如下例: 在一項(xiàng)工作中,CPU先要讀取某個(gè)溫度傳感器的信息,然后計(jì)算下一步應(yīng)該輸出的結(jié)果,再進(jìn)而送給某執(zhí)行器執(zhí)行,這個(gè)循環(huán)可以無(wú)限循環(huán)工作下去。這種方式一般稱為查詢輸入-計(jì)算-輸出的工作方式。 然而某次工作中突然發(fā)生了某個(gè)意外事件,需要CPU中斷當(dāng)前正在進(jìn)行的工作,轉(zhuǎn)而需要先處理這個(gè)意外的緊急事件。處理妥當(dāng)完畢后才能再回去繼續(xù)處理原來(lái)中斷停下來(lái)的工作。 這種“意外”事件是大量普遍存在的,可能是想不到也可能是沒(méi)必要反復(fù)查詢檢查的,只有當(dāng)其發(fā)生的時(shí)候再去處理就可以。這類事件需要單獨(dú)的應(yīng)急響應(yīng)機(jī)制,如同人類世界

4、需要專門的公共突發(fā)事件管理機(jī)構(gòu)一樣,單片機(jī)也需要這樣的管理機(jī)構(gòu),因此,中斷控制系統(tǒng)誕生了。 應(yīng)急突發(fā)事件的產(chǎn)生和處理流程大致如下: 某某地方發(fā)生了突發(fā)事件;(事件來(lái)源) 打報(bào)告向應(yīng)急事件處理中心快速報(bào)告; 應(yīng)急中心根據(jù)事件的必要性、嚴(yán)重性決定是否需要處理以及排隊(duì)處理的優(yōu)先程度; 決定處理的事件則請(qǐng)專門的處理部門進(jìn)行處理,處理完畢清除本次意外事件的申請(qǐng)報(bào)告。中斷源(意外事件來(lái)源)單片機(jī)中斷系統(tǒng)的組成和處理流程中斷申請(qǐng)標(biāo)志位(申請(qǐng)報(bào)告)中斷允許寄存器(是否允許)中斷優(yōu)先級(jí)(排隊(duì)優(yōu)先順序)調(diào)用中斷處理子程序(CPU處理) 以計(jì)數(shù)器計(jì)數(shù)為例以計(jì)數(shù)器計(jì)數(shù)為例CPUCNT = 0開始計(jì)數(shù)開始計(jì)數(shù)允許溢出中

5、斷允許溢出中斷初初始始化化計(jì)計(jì)數(shù)數(shù)器器+1,+1CPU自己的程序自己的程序循環(huán)(主程序)循環(huán)(主程序)CPU暫停當(dāng)前暫停當(dāng)前工作,處理計(jì)工作,處理計(jì)數(shù)器溢出事件數(shù)器溢出事件CNT MAX計(jì)數(shù)器溢出計(jì)數(shù)器溢出通知通知CPU中斷中斷執(zhí)行中斷處理執(zhí)行中斷處理子程序子程序返回返回CPU主程序主程序CPU和外設(shè)并行工作,以中斷申請(qǐng)和中斷服務(wù)子程序形式處理外設(shè)的特殊事件處理請(qǐng)求。外設(shè)和CPU并行工作,中斷的處理機(jī)制 關(guān)于中斷的名詞和術(shù)語(yǔ) 1.中斷源:能夠引發(fā)中斷并向CPU申請(qǐng)?zhí)幚淼耐话l(fā)事件來(lái)源,51單片機(jī)有5個(gè)中斷源 INT0,T0,INT1,T1,UART 2.中斷控制系統(tǒng):負(fù)責(zé)管理中斷時(shí)間的一整套機(jī)構(gòu)

6、,具體包括中斷標(biāo)志位、中斷允許、中斷優(yōu)先級(jí)等,都是以寄存器位的形式體現(xiàn)。 3.中斷服務(wù)子程序:由人工實(shí)現(xiàn)編寫好的,用于處理對(duì)應(yīng)突發(fā)事件的專門子程序,當(dāng)中斷時(shí)間發(fā)生并且被允許緊急處理時(shí),中斷系統(tǒng)會(huì)自動(dòng)調(diào)動(dòng)CPU去執(zhí)行該段子程序這個(gè)過(guò)程是無(wú)需人工干預(yù)的。 中斷響應(yīng)的流程:中斷源發(fā)生中斷并且被批準(zhǔn)處理后,中斷系統(tǒng)會(huì)暫停CPU當(dāng)前程序執(zhí)行,把暫停工作的程序地址暫時(shí)保存在系統(tǒng)堆棧中(斷點(diǎn)地址保存),然后自動(dòng)調(diào)度CPU的PC轉(zhuǎn)向特定中斷源對(duì)應(yīng)的中斷向量入口地址,到那里去尋找響應(yīng)的中斷服務(wù)子程序。待子程序處理完畢后再RETI返回,將堆棧中的保存的斷點(diǎn)地址返回給PC繼續(xù)執(zhí)行原先CPU中斷掉的程序任務(wù)。u中斷源

7、 51單片機(jī)有5個(gè)中斷源,當(dāng)其向CPU申請(qǐng)中斷時(shí),CPU會(huì)中斷當(dāng)前正在執(zhí)行的程序,硬件將PC自動(dòng)跳轉(zhuǎn)到指定的中斷入口地址處開始執(zhí)行程序,即進(jìn)入中斷服務(wù)程序(ISR),這些中斷入口地址便程序中斷向量表,所有單片機(jī)在這一點(diǎn)上是基本相同的。這些是申請(qǐng)中斷處理的標(biāo)志位,一般稱為IF( Interrupt Flag)中斷申請(qǐng)標(biāo)志位每種中斷各每種中斷各自的允許位自的允許位中斷管理機(jī)構(gòu)的負(fù)責(zé)人(Interrupt Enable)IP = Interrupt Priority。 對(duì)同時(shí)發(fā)生的多個(gè)中斷時(shí)間的優(yōu)先排隊(duì)順序u中斷的匯編程序設(shè)計(jì)樣例 中斷程序的設(shè)計(jì)主要是根據(jù)程序任務(wù)的要求合理設(shè)置IE,IP,TCON,

8、SCON等寄存器控制位,設(shè)置中斷入口地址跳轉(zhuǎn)指令和編寫中斷服務(wù)子程序(ISR),有一定編程規(guī)律可循,關(guān)鍵是理解中斷處理本身的概念和流程,各中斷標(biāo)志位的使用方法。外部中斷式鍵盤電路原理圖 ORG 0000H (主程序入口) AJMP MAIN ORG 0003H (INT0中斷入口地址) AJMP KEYINT ORG 0030H MAIN: MOV SP,#60H SETB IT0 SETB EX0 SETB EA SJMP $ (主程序的斷點(diǎn)地址)ORG 0100HKEYINT: MOV DPTR,#0FEFFHMOVX A,DPTRCPL ACJNE A,#00H,K1RETI (返回主程

9、序斷點(diǎn))K1:CJNE A,#01H,K2 ACALL KK1 RETI (返回主程序斷點(diǎn))K2: CJNE A,#02H,K3 ACALL KK2 RETI K8: RETI (返回主程序斷點(diǎn))中斷鍵盤的C處理代碼示例 #include #include #define KEYPAD XBYTE0 xFEFF void handle(unsigned char); void main( ) EX0 = 1; IT0 = 1; /使能鍵盤INT0中斷 EA = 1; /開全局中斷 while(1) void keyscan( ) interrupt 0 unsigned char temp;

10、EA = 0; temp = KEYPAD; temp =temp; switch(temp) case 0 x01: handle(temp); break; case 0 x02: handle(temp); break; EA = 1;void handle(unsigned char keydown) 頭文件的內(nèi)容 (片段) sfr P0 = 0 x80; sfr P1 = 0 x90; sfr P2 = 0 xA0; sfr P3 = 0 xB0; sfr PSW = 0 xD0; sfr ACC = 0 xE0; sfr B = 0 xF0; sfr SP = 0 x81; sfr

11、 DPL = 0 x82; sfr DPH = 0 x83;sfr PCON = 0 x87;sfr TCON = 0 x88;sfr TMOD = 0 x89;sfr TL0 = 0 x8A;sfr TL1 = 0 x8B;sfr TH0 = 0 x8C;sfr TH1 = 0 x8D;sfr IE = 0 xA8;sfr IP = 0 xB8;sfr SCON = 0 x98;sfr SBUF = 0 x99;STC51開發(fā)板的外部查詢式和中斷式按鍵電路發(fā)光二極管電路數(shù)碼管連接電路 例5.1 外部按鍵中斷程序演示 實(shí)現(xiàn)功能要求:INT1按一下,P2口發(fā)光二極管全亮;INT0按一下,發(fā)光管全

12、滅;用中斷方式編程實(shí)現(xiàn)。思考:中斷源是誰(shuí)?中斷標(biāo)志位在哪里?分別是誰(shuí)?怎么中斷允許?中斷向量入口地址在哪里?該怎么寫中斷服務(wù)子程序?中斷返回到哪里? ORG 0000H LJMP MAIN ORG 0003H MOV P2,#0FFH RETI ORG 0013H MOV P2,#00H RETI ORG 0030H對(duì)比這段程序MAIN: MOV SP,#60H SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB EA SJMP $MAIN: MOV SP,#60H SETB EX0 SETB EX1 SETB EA SJMP $ 外部按鍵中斷的C語(yǔ)言demo程序

13、 #include void main( ) P2 = 0 xFF; EX0 = 1; EX1 = 1; IT0 = 1; IT1 = 1; EA = 1; while(1) 主程序掛起SJMP $ void key1( ) interrupt 0 P2 = 0 xFF; void key2( ) interrupt 2 P2 = 0 x00; 對(duì)比C語(yǔ)言程序和匯編程序發(fā)現(xiàn)了哪些差異之處? 再做一個(gè)略微復(fù)雜一點(diǎn)的: 1)讓INT1按鍵每按一下,P2口燈從右至左依次點(diǎn)亮。 2)自己嘗試著做一個(gè)更復(fù)雜點(diǎn)的任務(wù): 讓INT1鍵每按一次,數(shù)碼管的最低位顯示的數(shù)字字符加1,從0開始到9結(jié)束,重新返回零。

14、如果能實(shí)現(xiàn),那么能否實(shí)現(xiàn)數(shù)碼管的最低兩位顯示按鍵次數(shù),初值為00,最高99.以數(shù)碼管字符形式體現(xiàn)。5.3 定時(shí)/計(jì)數(shù)器(Timer/Counter) 定時(shí)/計(jì)數(shù)器(T/C)是單片機(jī)最為常用的片上外設(shè)功能單元之一,廣泛應(yīng)用于產(chǎn)生精確定時(shí)間隔、波特率產(chǎn)生、對(duì)外部脈沖信號(hào)的計(jì)數(shù)、以及進(jìn)一步擴(kuò)展出的測(cè)量信號(hào)脈寬,輸出特定頻率和占空比的PWM波等。 T/C單元內(nèi)部的核心是一定位數(shù)寬度的二進(jìn)制計(jì)數(shù)器,例如8位,16位,32位等。通過(guò)特殊功能寄存器接口和CPU通信。51單片機(jī)有2個(gè)16位的定時(shí)/計(jì)數(shù)器 T0, T1,能夠?qū)崿F(xiàn)基本的定時(shí)器、計(jì)數(shù)器和串行口波特率發(fā)生器功能。其原理結(jié)構(gòu)如下圖執(zhí)行計(jì)數(shù)器功能則是指T

15、/C單元內(nèi)部的計(jì)數(shù)器用來(lái)對(duì)來(lái)自芯片管腳的T0(P3,4),T1(P3.5)輸入的脈沖信號(hào)進(jìn)行計(jì)數(shù)操作,用于數(shù)外部的脈沖數(shù)。需要注意的是外部脈沖周期寬度最小值是2個(gè)機(jī)器周期的寬度。對(duì)定時(shí)/計(jì)數(shù)器單元的操作同其他片上外設(shè)一樣,都是通過(guò)特殊功能寄存器接口進(jìn)行(SFR)??刂圃搯卧腟FR分別是TH0,TL0,TH1,TL1,TCON,TMOD。 思考問(wèn)題: 1. 現(xiàn)設(shè)置TMOD,使T0為16位定時(shí)器,T1為16位計(jì)數(shù)器,則TMOD = 2. 令T0為16位計(jì)數(shù)器,T1為8位重裝載的定時(shí)器模式,則TMOD =定時(shí)計(jì)數(shù)器應(yīng)用編程舉例定時(shí)計(jì)數(shù)器應(yīng)用編程舉例 如圖:P1外接8個(gè)發(fā)光二極管,編程使8個(gè)發(fā)光二極

16、管輪流點(diǎn)亮,時(shí)間間隔為100ms,設(shè)晶振頻率為fosc=6MHz。 解:利用T1實(shí)現(xiàn)100ms定時(shí),每隔100ms,P1口寄存器值左移一次實(shí)現(xiàn),分別采用查詢溢出標(biāo)志位和定時(shí)中斷方式實(shí)現(xiàn)。 采用STC51開發(fā)板 試驗(yàn)時(shí)需改成P2口。 過(guò)程描述: 1)置LED1亮,其余全滅 2)設(shè)置T1 寄存器的模式和初值,產(chǎn)生100ms定時(shí)間隔,T1為定時(shí)器,可選16位模式,計(jì)數(shù)初值的計(jì)算公式:X = 65536 - (定時(shí)間隔/機(jī)器周期) =65536 - (100ms/2us) = 15536 = 3CB0 則TMOD = 10H,TL1 = 0B0H,TH1 = 3CH 3)選擇查詢判斷TF1標(biāo)志還是采用

17、中斷方式 4)啟動(dòng)TR1,開始定時(shí) 5)如果是查詢模式則可用JNB TF1,$查詢判斷;若TF1 = 1,則讓LED邏輯左移實(shí)現(xiàn)。 6)別忘了還需要重新給T1賦初值; 如果是中斷方式,則需要寫中斷服務(wù)子程序,在T1的中斷中重賦初值,邏輯左移,然后中斷返回RETI即可。 請(qǐng)嘗試自行編程。 先計(jì)算100ms定時(shí)初值,采用16位方式1. 機(jī)器周期Ts=2us。應(yīng)計(jì)脈沖數(shù)100ms/2us=50000 則計(jì)數(shù)器初值為X=65536-50000=15536=3CB0H, TH1=3CH,TL1=0B0H 參考編程代碼: 1)查詢方式 ORG 0000H MOV A,#0FEH ;第一個(gè)燈亮 MOV TM

18、OD,#10H MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 LOOP: MOV P1,A CHEK: JNB TF1,CHEK ;定時(shí)100ms到? CLR TF1 ;軟件清溢出標(biāo)志 RL A ;循環(huán)左移 MOV TH1,#3CH MOV TL1,#0B0H SJMP LOOP 2)中斷方式 ORG 0000H AJMP MAIN ORG 001BH AJMP IV1 ORG 0030H MAIN: MOV A,#0FEH MOV P1,A MOV TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H 例2 在P1.7端接一個(gè)發(fā)光二極管LED,要

19、求利用定時(shí)計(jì)數(shù)器控制使LED閃亮,一秒為周期,設(shè)fosc = 6MHz。 方法1:用T0產(chǎn)生周期200ms脈沖,讓P1.0每100ms取反一次輸出作為T1的脈沖計(jì)數(shù)輸入,T1計(jì)數(shù)5個(gè)脈沖剛好1000ms。T0,T1初始化設(shè)置 TMOD = 61H, T1方式2計(jì)數(shù),T0方式1定時(shí) T0計(jì)數(shù)初值X=65536-50000=15536=3CB0H, T1計(jì)數(shù)初值Y=28-5=FBH。 采用查詢方式編程如下 ORG 0000H MAIN: CLR P1.7 SETB P1.0MOV TMOD,#61HMOV TH1,#0FBHMOV TL1,#0FBHSETB TR1LP1: CPL P1.7LP2

20、: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0LP3: JBC TF0,LP4 SJMP LP3 方法2:用T0每100ms中斷一次,連續(xù)中斷10次P1.7取反一次,即實(shí)現(xiàn)1秒輸出反轉(zhuǎn)一次。 DJNZ R4, BACK MOV R4,#0AH CPL P1.7 BACK: RETI END定時(shí)/計(jì)數(shù)器用途極為廣泛,以至于新型的32位ARM, 單片機(jī)等多數(shù)都集成了8個(gè)以上的16位多功能定時(shí)/計(jì)數(shù)器,還可以串聯(lián)成32位計(jì)數(shù)器,可以作為PWM,脈寬捕獲,光電角度編碼器的計(jì)數(shù)器使用等。在各種電機(jī)控制和開關(guān)電源中應(yīng)用廣泛。 可以動(dòng)手練習(xí)的題目: 1. 讓P1.0或者P2.0口

21、連接LED,產(chǎn)生閃爍。分別用查詢TFx標(biāo)志位法和中斷法實(shí)驗(yàn)。 2. 讓8個(gè)LED產(chǎn)生流水燈或者拉幕燈效果; 3. 思考如何用一個(gè)T1或T0,在P2.0口產(chǎn)生高電平寬度可變的PWM波,可以實(shí)現(xiàn)對(duì)LED調(diào)亮度的效果,值得一試!5.4 51單片機(jī)串行接口 一 有關(guān)串行通信的基本概念和名詞 通信:計(jì)算機(jī)與外界的信息交換稱為通信。 兩種基本通信方式:并行通信和串行通信 并行通信:一次被傳輸?shù)臄?shù)據(jù)有多少位,就需要多少根數(shù)據(jù)傳輸線。 特點(diǎn):通信速度快,編程簡(jiǎn)單。 缺點(diǎn):不適合長(zhǎng)距離傳輸,傳輸線多。大多數(shù)單片機(jī),DSP等都具有并行接口總線,比如常見(jiàn)的地址、數(shù)據(jù)和控制三總線接口。 串行通信串行通信:數(shù)據(jù)在一根線

22、路上按照位的先后順序一位一位的傳送。 特點(diǎn):占用線路少,硬件接口簡(jiǎn)單,比較適合長(zhǎng)距離傳輸,一般比并行通信方式略慢。串行通信需要定義專門的通信協(xié)議。 基本的串行通信方式有同步通信和異步通信同步通信和異步通信兩種。 串行通信中的數(shù)據(jù)是按幀(Frame)進(jìn)行傳輸。 通信方向:異步串行通信的三種工作方式: 單工、半雙工、全雙工單工、半雙工、全雙工(p133. 圖8-2) 通信協(xié)議通信協(xié)議:指通信雙方為確保通信成功而訂立并共同遵守的通信約定,主要包括數(shù)據(jù)幀格式,時(shí)鐘速率,檢查糾錯(cuò)方式。各種串行通信方式都必須嚴(yán)格遵守其通信協(xié)議才能保證通信的正確性。 2.波特率波特率(Baud rate):簡(jiǎn)單理解為每秒鐘

23、一根串行線路上可以傳輸?shù)亩M(jìn)制數(shù)據(jù)位數(shù),如PC機(jī)串行口常見(jiàn)的波特率值:600,1200,2400,4800,9600,19200 串行通信中數(shù)據(jù)是按照一定的時(shí)鐘頻率按位向外一位一位移入、移出內(nèi)部移位寄存器的,用于產(chǎn)生該移位時(shí)鐘的電路叫波特率發(fā)生器。 本質(zhì)上波特率發(fā)生器就是一個(gè)專用的可編程定時(shí)器,產(chǎn)生精確的時(shí)間間隔,用于收發(fā)串行數(shù)據(jù)位;51單片機(jī)一般用T1做波特率發(fā)生器,很多其他單片機(jī)則有專門的內(nèi)置定時(shí)器做,不需要占用通用定時(shí)/計(jì)數(shù)器。 串行通信的硬件連接實(shí)現(xiàn): 雙機(jī)異步串行通信的幾種不同接口方式。 1)單片機(jī)雙機(jī)直連(TTL電平,僅適用于很短通信距離和較低波特率,連接如下圖 參考上限距離:20

24、厘米之內(nèi) 2)RS-232串行接口* (值得了解的內(nèi)容) 國(guó)際電子工業(yè)協(xié)會(huì)(EIA)制定RS-232串行通信接口標(biāo)準(zhǔn),規(guī)定如下: TXD,RXD信號(hào):邏輯1=-3-15V,邏輯0=+3+15V,RS-232C最大通信距離在15m左右,PC機(jī)串口即是一個(gè)標(biāo)準(zhǔn)RS-232口PC機(jī)RS-232C DB9串行口引腳 RS-232電平和單片機(jī)TTL電平間需要電平轉(zhuǎn)換芯片接口,常用的是MAX232. MAX3232等。 485、422串行通信接口(工廠最常用的) 為進(jìn)一步提高串行通信的距離,采用差分輸出驅(qū)動(dòng)方式可以有效大幅提高可靠通信距離,即485通信方式,其中485為半雙工,422為全雙工通信方式,接口

25、方式和常用芯片如下:485半雙工通信接口示意圖和真值表發(fā)送接收 不管是RS232C,還是485,422通信方式,都只是硬件邏輯上有差異,基本的通信編程方式都是和異步串行口一致的,將51單片機(jī)的異步串口分別連接不同的轉(zhuǎn)換芯片即可實(shí)現(xiàn)232,485,422等通信。 485,422總線在工廠和企業(yè)中應(yīng)用極為廣泛,仍是目前最為常用的通信總線。串入并出擴(kuò)展輸出端口并入串出擴(kuò)展輸入端口2、方式、方式1波特率可變的波特率可變的8位異步通信接口方式。位異步通信接口方式。波特率波特率=(2SMOD/32)T1溢出率溢出率方式方式1發(fā)送發(fā)送CPU 執(zhí)行一條執(zhí)行一條寫寫SBUF指令指令,就啟動(dòng)了串口發(fā)送,就啟動(dòng)了串

26、口發(fā)送當(dāng)當(dāng)SEND和和DATA有效時(shí),數(shù)據(jù)從有效時(shí),數(shù)據(jù)從TXD輸出。輸出。方式方式1接收接收允許接收位允許接收位REN被置被置“1”后,接收器就開始工作后,接收器就開始工作,RXD引腳上發(fā)生由引腳上發(fā)生由“1”到到“0”的跳變的跳變,接收器,接收器開始接收。開始接收。共陽(yáng)共陽(yáng)LEDLED數(shù)碼管:數(shù)碼管:公共端公共端( (字位字位) ) 接高電平,接高電平,筆劃筆劃( (字段字段) ) 置為低電平置為低電平就被點(diǎn)亮了就被點(diǎn)亮了h g f e d c b ah g f e d c b a累加器累加器 A1 1 0 0 0 0 0 01 1 0 0 0 0 0 00C0H = 0C0H = “0

27、0”比如要顯示比如要顯示“0 0” 須令須令a b c d e f a b c d e f 為為“0 0” 電平,電平,g hg h為為“1 1”電平。電平。再再比如要顯示比如要顯示“3 3” 須令須令a b c d g a b c d g 為為“0 0” 電平,電平,e f he f h為為“1 1”電平。電平。1 0 1 1 0 0 0 01 0 1 1 0 0 0 00B0H = 0B0H = “3 3”共陽(yáng)極共陽(yáng)極h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh hh g f a低電平點(diǎn)亮低電平點(diǎn)亮接高電平接高電平例:例:利用串行

28、口利用串行口工作方式工作方式0 0擴(kuò)展出擴(kuò)展出8 8位并行位并行I/OI/O口,口,驅(qū)動(dòng)驅(qū)動(dòng)共陽(yáng)共陽(yáng)LEDLED數(shù)碼管顯示數(shù)碼管顯示0 09 9。A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLR+5V+5VVCCVCCTxDTxDRxDRxD803174LS164共陽(yáng)共陽(yáng)LEDLED數(shù)碼管數(shù)碼管共陽(yáng)共陽(yáng)LEDLED數(shù)碼管數(shù)碼管顯示顯示0-90-9數(shù)數(shù)字的子程序字的子程序( (查表查表) ) :DSPLY:MOV DPTR, #TABLE MOVC A, A+DPTR MOV SBUF, A JNB TI, $ CLR TI RETTABLE:DB

29、 0C0H,0F9H,0A4H DB 0B0H,99H,92H DB 82H,0F8H,80H,90H2、方式、方式1的應(yīng)用的應(yīng)用(雙機(jī)通信雙機(jī)通信)RXDTXDGNDRXDTXDGND甲機(jī)甲機(jī)乙機(jī)乙機(jī)思考:思考:硬件連接如上圖,試編程硬件連接如上圖,試編程實(shí)現(xiàn)甲機(jī)連續(xù)發(fā)送實(shí)現(xiàn)甲機(jī)連續(xù)發(fā)送16個(gè)數(shù)個(gè)數(shù)據(jù)給乙機(jī)據(jù)給乙機(jī)提示:通常查詢發(fā)送,中斷接收提示:通常查詢發(fā)送,中斷接收 也可查詢接收,但要耗費(fèi)也可查詢接收,但要耗費(fèi) CPU資源。資源。 例:把內(nèi)部RAM 40H5FH單元中的ASCII碼,由甲機(jī)發(fā)送到乙機(jī),波特率1200,無(wú)奇偶校驗(yàn),晶振fosc=11.0592MHz。 解:設(shè)置甲機(jī)在方式1下發(fā)送,SCON40H;乙機(jī)串行方式1接收,SCON50H。T1做波特率發(fā)生器,TH1重裝初值E8H,TMOD20H。 波特率計(jì)算波特率計(jì)算波特率32122256smodoscfx 參考程序:甲機(jī)發(fā)送 MOV TMOD

溫馨提示

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

評(píng)論

0/150

提交評(píng)論