版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第六章第六章 定時(shí)器定時(shí)器/ /計(jì)數(shù)器與串行通信口計(jì)數(shù)器與串行通信口定時(shí)器定時(shí)器/ /計(jì)數(shù)器學(xué)習(xí)目標(biāo)計(jì)數(shù)器學(xué)習(xí)目標(biāo) v定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)及原理計(jì)數(shù)器的結(jié)構(gòu)及原理v定時(shí)器定時(shí)器/ /計(jì)數(shù)器的各種工作方式計(jì)數(shù)器的各種工作方式v掌握定時(shí)器計(jì)數(shù)器的應(yīng)用掌握定時(shí)器計(jì)數(shù)器的應(yīng)用6.1.1 6.1.1 定時(shí)定時(shí)/ /計(jì)數(shù)器的基本原理計(jì)數(shù)器的基本原理 1. 1. 定時(shí)功能定時(shí)功能-計(jì)數(shù)輸入信號(hào)是內(nèi)部時(shí)鐘脈計(jì)數(shù)輸入信號(hào)是內(nèi)部時(shí)鐘脈沖,每個(gè)沖,每個(gè)機(jī)器周期機(jī)器周期使寄存器的值加使寄存器的值加1 1。所以,。所以,計(jì)數(shù)頻率是振蕩頻率的計(jì)數(shù)頻率是振蕩頻率的1/121/12。2. 2. 計(jì)數(shù)功能計(jì)數(shù)功能-計(jì)
2、數(shù)脈沖來(lái)自相應(yīng)的計(jì)數(shù)脈沖來(lái)自相應(yīng)的外部輸入外部輸入引腳,引腳,T0T0為為P3.4P3.4,T1T1為為P3.5P3.5。當(dāng)輸入脈沖信號(hào)。當(dāng)輸入脈沖信號(hào)從從1 1到到0 0的的負(fù)跳變負(fù)跳變時(shí),計(jì)數(shù)器就自動(dòng)加時(shí),計(jì)數(shù)器就自動(dòng)加1 1。計(jì)數(shù)的。計(jì)數(shù)的最高頻率為振蕩頻率的最高頻率為振蕩頻率的1/241/24。定時(shí)定時(shí)/ /計(jì)數(shù)器的計(jì)數(shù)器的核心部件核心部件是是二進(jìn)制加二進(jìn)制加1 1計(jì)數(shù)器計(jì)數(shù)器(TH0(TH0、TL0TL0或或TH1TH1、TL1) TL1) 。6.1.2 6.1.2 定時(shí)器計(jì)數(shù)器的控制寄存器定時(shí)器計(jì)數(shù)器的控制寄存器 1 1啟啟/ /停與中斷控制寄存器停與中斷控制寄存器TCONTCON
3、 (88H88H) D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0中斷請(qǐng)求標(biāo)志觸發(fā)方式選擇觸發(fā)方式選擇啟動(dòng)定時(shí)啟動(dòng)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 低電平低電平1 下降沿下降沿0 停止停止1 啟動(dòng)啟動(dòng) TCONTCON可可位位尋址,字節(jié)地址是尋址,字節(jié)地址是88H88H,復(fù)位復(fù)位時(shí)所有位時(shí)所有位清零清零。低。低4 4位與外部中斷有關(guān),已介紹。高位與外部中斷有關(guān),已介紹。高4 4位的功位的功能如下:能如下: (1) (1) TF1TF1、TF0TF0計(jì)數(shù)溢出標(biāo)志位,計(jì)數(shù)計(jì)數(shù)溢出標(biāo)志位,計(jì)數(shù)溢出時(shí)溢出時(shí)由由硬件硬件自動(dòng)自動(dòng)置置1 1,向,向CPUCPU請(qǐng)求中
4、斷,當(dāng)請(qǐng)求中斷,當(dāng)CPUCPU響應(yīng)時(shí),由響應(yīng)時(shí),由硬件清硬件清0 0。 (2) (2) TR1TR1、TR0TR0計(jì)數(shù)運(yùn)行控制位計(jì)數(shù)運(yùn)行控制位 1 1:?jiǎn)?dòng)定時(shí)器:?jiǎn)?dòng)定時(shí)器/ /計(jì)數(shù)器工作計(jì)數(shù)器工作 0 0:停止定時(shí)器:停止定時(shí)器/ /計(jì)數(shù)器工作計(jì)數(shù)器工作 2 2工作方式控制寄存器工作方式控制寄存器TMOD TMOD (89H89H) 控 制 T1控 制 T0和T 類(lèi)同001與INT 無(wú)關(guān)00與INT 有關(guān)01定時(shí)器模式計(jì)數(shù)器模式GATEC/TM10MGATE C/TMM89H101M0M00011011方 式方式0方式1方式2方式3GATEGATE門(mén)控位門(mén)控位 v0 0:以運(yùn)行控制位:以運(yùn)
5、行控制位TRTRX X(X=0,1X=0,1)來(lái))來(lái)啟動(dòng)啟動(dòng)定時(shí)器定時(shí)器/ /計(jì)計(jì)數(shù)器運(yùn)行。數(shù)器運(yùn)行。v1 1:TRTRX X=1=1且且中斷引腳中斷引腳( (INT0INT0或或INT1INT1) )上為上為高電平高電平時(shí),時(shí),啟動(dòng)啟動(dòng)定時(shí)器定時(shí)器/ /計(jì)數(shù)器運(yùn)行。計(jì)數(shù)器運(yùn)行。計(jì)數(shù)脈沖輸入6.1.3 6.1.3 定時(shí)器計(jì)數(shù)器的工作方式(定時(shí)器計(jì)數(shù)器的工作方式(4 4種)種) 1. 1. 方式方式013013位方式位方式 TFXTXTRXGATEINTX11&C/T=1振蕩器1/12C/T=0TLX THX8位低5位13位計(jì)數(shù)器定時(shí)器計(jì)數(shù)器2. 2. 方式方式116116位方式位方式 振蕩器1
6、/12TLX THXTFX11&TXTRXGATEINTXC/T=0C/T=18位8位16位計(jì)數(shù)器3. 3. 方式方式2828位自動(dòng)裝入時(shí)間常數(shù)方式位自動(dòng)裝入時(shí)間常數(shù)方式 TFX振蕩器1/1211&TXTRXGATEINTXC/T=0C/T=1TLX THX初值初值同時(shí)同時(shí)送送THTHX X、TLTLX X,啟動(dòng)后可,啟動(dòng)后可無(wú)限次無(wú)限次運(yùn)行,常用運(yùn)行,常用于于串行口波特率串行口波特率的產(chǎn)生。的產(chǎn)生。 去串口去串口4. 4. 方式方式3232個(gè)個(gè)8 8位方式位方式 只適用只適用于定時(shí)器于定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0T0 。此時(shí)。此時(shí)T1T1可用來(lái)作可用來(lái)作串行口波特率產(chǎn)生器。串行口波特率產(chǎn)生器
7、。 T0T0分為兩個(gè)獨(dú)立的分為兩個(gè)獨(dú)立的8 8位計(jì)數(shù)器位計(jì)數(shù)器: :TL0TL0和和TH0TH0 。TL0TL0使用使用T0T0的狀態(tài)控制位的狀態(tài)控制位C/TC/T* *、GATEGATE、TR0TR0、,而、,而TH0TH0被被固定為固定為一個(gè)一個(gè)8 8位位定時(shí)器定時(shí)器(不不能作外部計(jì)數(shù)模式),能作外部計(jì)數(shù)模式),并使用定時(shí)器并使用定時(shí)器T1T1的狀態(tài)控制位的狀態(tài)控制位TR1TR1和和TF1TF1。 各引腳與各引腳與T0T0的邏輯關(guān)系如圖所示:的邏輯關(guān)系如圖所示: 當(dāng)當(dāng)T1T1用作用作串行口的串行口的波特率發(fā)生器時(shí),波特率發(fā)生器時(shí),T0T0才工作才工作在方式在方式3 3。T0T0處于方式處于
8、方式3 3時(shí),時(shí), T1T1可定為方式可定為方式0 0、方式、方式1 1和方式和方式2 2,用來(lái)作為串行口的波特率發(fā)生器(通常,用來(lái)作為串行口的波特率發(fā)生器(通常設(shè)置成方式設(shè)置成方式2 2 ),或不需要中斷的場(chǎng)合。),或不需要中斷的場(chǎng)合。 6.1.4 6.1.4 定時(shí)定時(shí)/ /計(jì)數(shù)器常數(shù)的計(jì)算計(jì)數(shù)器常數(shù)的計(jì)算1 1計(jì)數(shù)器初值的計(jì)算計(jì)數(shù)器初值的計(jì)算把計(jì)數(shù)器計(jì)滿(mǎn)為零所需要的計(jì)數(shù)值設(shè)定為把計(jì)數(shù)器計(jì)滿(mǎn)為零所需要的計(jì)數(shù)值設(shè)定為C C,計(jì),計(jì)數(shù)初值設(shè)定為數(shù)初值設(shè)定為T(mén)CTC,由此可得到公式:,由此可得到公式:TCTC= =M M- -C C式中,式中,M M為計(jì)數(shù)器模值,該值和計(jì)數(shù)器工作方式為計(jì)數(shù)器模值,
9、該值和計(jì)數(shù)器工作方式有關(guān)。在方式有關(guān)。在方式0 0時(shí)時(shí)M M為為213;在方式;在方式1 1時(shí)時(shí)M M為為216;在;在方式方式2 2和方式和方式3 3時(shí)時(shí)M M為為28。把計(jì)數(shù)值換算成二進(jìn)制裝入把計(jì)數(shù)值換算成二進(jìn)制裝入THTHX X、TLTLX X中。中。2 2定時(shí)器初值的計(jì)算定時(shí)器初值的計(jì)算 在定時(shí)器模式下,計(jì)數(shù)器由單片機(jī)主脈沖經(jīng)在定時(shí)器模式下,計(jì)數(shù)器由單片機(jī)主脈沖經(jīng)1212分頻后計(jì)數(shù)。因此,定時(shí)器定時(shí)時(shí)間分頻后計(jì)數(shù)。因此,定時(shí)器定時(shí)時(shí)間T T的公式:的公式:T=T=(M-TM-TC C)T TP P 上式也可寫(xiě)成:上式也可寫(xiě)成:T TC C=M-T/T=M-T/TP P M M:模值,和
10、定時(shí)器的工作方式有關(guān);:模值,和定時(shí)器的工作方式有關(guān); T TP P:?jiǎn)纹瑱C(jī)的機(jī)器周期(振蕩周期:?jiǎn)纹瑱C(jī)的機(jī)器周期(振蕩周期T TCLKCLK的的1212倍);倍);T TC C:定時(shí)器的定時(shí)初值。:定時(shí)器的定時(shí)初值。 例例:方式:方式1 1,定時(shí)時(shí)間為,定時(shí)時(shí)間為5ms,5ms,主頻為主頻為6MHz6MHz,求計(jì)數(shù),求計(jì)數(shù)初值?初值?3.3.初始化設(shè)置順序初始化設(shè)置順序工作方式控制字工作方式控制字TMODTMOD的設(shè)置;的設(shè)置;計(jì)數(shù)計(jì)數(shù)初值初值的裝入;的裝入;開(kāi)中斷開(kāi)中斷;啟啟/ /停停位的設(shè)置等。位的設(shè)置等。 6.1.5 6.1.5 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用
11、由于由于方式方式0 0是為兼容是為兼容MCS-48MCS-48而設(shè),其計(jì)數(shù)初值而設(shè),其計(jì)數(shù)初值計(jì)算復(fù)雜,在實(shí)際應(yīng)用中,一般不用方式計(jì)算復(fù)雜,在實(shí)際應(yīng)用中,一般不用方式0 0,而采,而采用方式用方式1 1。一、方式一、方式1 1應(yīng)用應(yīng)用 例:假設(shè)系統(tǒng)時(shí)鐘頻率采用例:假設(shè)系統(tǒng)時(shí)鐘頻率采用6MHz6MHz,要在,要在P1.0P1.0上輸出一上輸出一個(gè)周期為個(gè)周期為2ms2ms的方波,如圖所示。的方波,如圖所示。 設(shè):需要裝入設(shè):需要裝入T0T0的初值為的初值為X X,則有,則有: :(2(21616-X)-X)2 21010-6-6=1=11010-3-3 2 21616-X=500 X=65036
12、-X=500 X=65036 X X化為化為1616進(jìn)制,即進(jìn)制,即X=FE0CH=1111111000001100BX=FE0CH=1111111000001100B。 所以,所以,T0T0的初值為:的初值為: TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH (1) (1)計(jì)算初值計(jì)算初值 (2)(2)初始化程序設(shè)計(jì)初始化程序設(shè)計(jì) (3) (3)程序設(shè)計(jì)程序設(shè)計(jì) 中斷服務(wù)程序除了完成要求的產(chǎn)生方波這一工作中斷服務(wù)程序除了完成要求的產(chǎn)生方波這一工作之外,之外,還要還要注意將計(jì)數(shù)注意將計(jì)數(shù)初值重新裝入初值重新裝入定時(shí)器中,為定時(shí)器中,為下一次產(chǎn)生中斷作準(zhǔn)備。下一次產(chǎn)生中斷作準(zhǔn)備
13、。 參考程序:參考程序: ORG 0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;轉(zhuǎn)主程序;轉(zhuǎn)主程序 ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 AJMP IT0PAJMP IT0P ;轉(zhuǎn);轉(zhuǎn)T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 0100HORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD,#01HMOV TMOD,#01H ;設(shè)置;設(shè)置T0T0為方式為方式1 1 ACALL PT0M0ACALL PT0M0;調(diào)用子程
14、序;調(diào)用子程序PT0M0PT0M0HERE: AJMP HERE HERE: AJMP HERE ;自身跳轉(zhuǎn);自身跳轉(zhuǎn)PT0M0: MOV TL0,#0CHPT0M0: MOV TL0,#0CH;T0T0初始化程序,初始化程序,T0T0置初值置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0 SETB TR0 ;啟動(dòng);啟動(dòng)T0T0 SETB ET0 SETB ET0 ;允許;允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開(kāi)中斷開(kāi)中斷 RETRETITOP: MOV TL0,#0CH ITOP: MOV TL0,#0CH ;T0T0中斷服務(wù)子程
15、序,中斷服務(wù)子程序,T0T0重置初重置初值值 MOV TH0,#0FEHMOV TH0,#0FEH CPL P1.0 CPL P1.0 ;P1.0P1.0的狀態(tài)取反的狀態(tài)取反 RETIRETI例:例:假設(shè)系統(tǒng)時(shí)鐘為假設(shè)系統(tǒng)時(shí)鐘為6MHz6MHz,編寫(xiě)定時(shí)器編寫(xiě)定時(shí)器T0T0產(chǎn)生產(chǎn)生1 1秒定秒定時(shí)的程序。時(shí)的程序。(1 1)定時(shí)器)定時(shí)器T0T0工作方式的確定工作方式的確定因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?由定時(shí)器各因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?由定時(shí)器各種工作方式的特性,可計(jì)算出:種工作方式的特性,可計(jì)算出: 方式方式0 0最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí)16.384ms16.384ms; ;
16、方式方式1 1最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí)131.072ms;131.072ms; 方式方式2 2最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí)512512 s s。選方式選方式1 1,每隔,每隔100ms100ms中斷一次,中斷中斷一次,中斷1010次為次為1s1s。 (2 2)計(jì)算計(jì)數(shù)初值)計(jì)算計(jì)數(shù)初值因?yàn)椋阂驗(yàn)椋?2(21616-X)-X)2 21010-6 -6 = 10= 10-1-1所以:所以:X=15536=3CB0HX=15536=3CB0H因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H (3 3)1010次計(jì)數(shù)的實(shí)現(xiàn)次計(jì)數(shù)的實(shí)現(xiàn) 對(duì)于中斷對(duì)于中斷1010次計(jì)數(shù),采用次計(jì)數(shù),采用循環(huán)程
17、序循環(huán)程序的方法實(shí)現(xiàn)。的方法實(shí)現(xiàn)。(4 4)程序設(shè)計(jì))程序設(shè)計(jì) 參考程序參考程序 : : ORG 0000HORG 0000HRESETRESET: LJMP MAIN LJMP MAIN ;上電,轉(zhuǎn)主程序入口;上電,轉(zhuǎn)主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 LJMP IT0PLJMP IT0P ;轉(zhuǎn);轉(zhuǎn)T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN: MOV SP,#60HMOV SP,#60H;設(shè)堆棧指針;設(shè)堆棧指針 MOV B,#0AHMOV B,#0AH;設(shè)循環(huán)次數(shù);設(shè)
18、循環(huán)次數(shù)1010次次 MOV TMOD,#01H MOV TMOD,#01H;設(shè);設(shè)T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;給;給T0T0設(shè)初值設(shè)初值 MOV TH0,#3CHMOV TH0,#3CH SETB TR0 SETB TR0 ;啟動(dòng);啟動(dòng)T0T0 SETB ET0 SETB ET0 ;允許;允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開(kāi)放中斷開(kāi)放中斷 HEREHERE: SJMP HERESJMP HERE ;等待中斷;等待中斷 ITOPITOP: MOV TL0,#0B0H MOV TL0,#0B0H
19、;中斷子程序,重裝初值;中斷子程序,重裝初值 MOV TH0,#3CH MOV TH0,#3CH ; DJNZ BDJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定時(shí)時(shí)間到,停止定時(shí)時(shí)間到,停止T0T0工作工作 LOOPLOOP: RETI RETI 例:例:利用定時(shí)器利用定時(shí)器T1T1的的方式方式2 2對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿(mǎn)滿(mǎn)100100個(gè)數(shù),將個(gè)數(shù),將P1.0P1.0取反。取反。 (1 1)選擇工作方式)選擇工作方式 外部信號(hào)由外部信號(hào)由T1(P3.5) T1(P3.5) 腳輸入腳輸入, ,每發(fā)生一次每發(fā)生一次負(fù)跳變負(fù)跳變計(jì)數(shù)器加計(jì)數(shù)器
20、加1 1,每輸入,每輸入100100個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序中將斷,在中斷服務(wù)程序中將P1.0P1.0取反一次。取反一次。 T1T1工作在方式工作在方式2 2的控制字為的控制字為T(mén)MOD=60HTMOD=60H。不使用不使用T0T0時(shí)時(shí),TMODTMOD的低的低4 4位可任取位可任取,但不能使但不能使T0T0進(jìn)入方式進(jìn)入方式3 3,這里取全這里取全0 0。(2 2)計(jì)算)計(jì)算T1T1的初值的初值X=2X=28 8-100=156=9CH-100=156=9CH 因此,因此,TL1TL1的初值為的初值為9CH9CH,重裝初值寄存器,重裝初值寄存器TH1=
21、9CHTH1=9CH(3 3)程序設(shè)計(jì))程序設(shè)計(jì) ORG 0000HORG 0000H LJMP MAIN LJMP MAINORG 001BHORG 001BH ;T1T1中斷服務(wù)程序入口中斷服務(wù)程序入口 CPL P1.0CPL P1.0 ;P1.0P1.0位取反位取反 RETIRETI ORG 0100HORG 0100HMAIN:MAIN: MOV TMOD,#60H MOV TMOD,#60H ;設(shè);設(shè)T1T1為方式為方式2 2計(jì)數(shù)計(jì)數(shù) MOV TL0,#9CH MOV TL0,#9CH ;T0T0置初值置初值 MOV TH0,#9CH MOV TH0,#9CH SETB TR1SET
22、B TR1 ;啟動(dòng);啟動(dòng)T1T1 SETB ET1 SETB ET1 ;允許;允許T1T1中斷中斷 SETB EA SETB EA ;CPUCPU開(kāi)放中斷開(kāi)放中斷HERE: AJMP HEREHERE: AJMP HERE6.1.6 6.1.6 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的計(jì)數(shù)器的實(shí)時(shí)性實(shí)時(shí)性 注意注意:從回從回0 0溢出到主機(jī)響應(yīng)中斷造成的時(shí)延。溢出到主機(jī)響應(yīng)中斷造成的時(shí)延。 方法方法: :在中斷服務(wù)程序中對(duì)在中斷服務(wù)程序中對(duì)TLXTLX、THXTHX、重新置初值時(shí)重新置初值時(shí),應(yīng),應(yīng)將當(dāng)前的將當(dāng)前的TLXTLX、THXTHX值讀出來(lái)重新補(bǔ)償?shù)匠踔抵?。值讀出來(lái)重新補(bǔ)償?shù)匠踔抵小?CLR EAC
23、LR EA;禁止中斷;禁止中斷 MOV AMOV A,TLXTLX;讀;讀TLXTLX中已計(jì)數(shù)值中已計(jì)數(shù)值 ADD AADD A,#LOW#LOW;LOWLOW為低字節(jié)初值為低字節(jié)初值 MOV TLXMOV TLX,A A;設(shè)置低字節(jié)初值;設(shè)置低字節(jié)初值 MOV AMOV A,#HIGE#HIGE ;高字節(jié)初值送;高字節(jié)初值送A A ADDC A ADDC A,THXTHX;高字節(jié)初值補(bǔ)償;高字節(jié)初值補(bǔ)償 MOV THXMOV THX,A A;設(shè)置高字節(jié)初值;設(shè)置高字節(jié)初值 SETB EA SETB EA ;開(kāi)中斷;開(kāi)中斷6.1.7 6.1.7 運(yùn)行中運(yùn)行中讀定時(shí)器讀定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器方
24、法方法:先讀(:先讀(THXTHX),后讀(),后讀(TLXTLX),再讀(),再讀(THXTHX)。若)。若兩次讀得(兩次讀得(THXTHX)相同,則讀得的內(nèi)容正確。若前后)相同,則讀得的內(nèi)容正確。若前后兩次讀得的(兩次讀得的(THXTHX)有變化,則再重復(fù)上述過(guò)程,這)有變化,則再重復(fù)上述過(guò)程,這次重復(fù)讀得的內(nèi)容就應(yīng)是正確的。次重復(fù)讀得的內(nèi)容就應(yīng)是正確的。RDTIME:MOV A,TH0RDTIME:MOV A,TH0 ;讀(;讀(TH0TH0) MOV R0,TL0MOV R0,TL0 ;讀(;讀(TL0TL0) CJNE A,TH0,RDTIMECJNE A,TH0,RDTIME;比較
25、;比較2 2次讀得的(次讀得的(TH0TH0), ,不相等則重復(fù)讀不相等則重復(fù)讀 MOV R1,AMOV R1,A ;(;(TH0TH0)送入)送入R1R1中中 RETRETv單片機(jī)串行通信單片機(jī)串行通信I/OI/O接口的結(jié)構(gòu)接口的結(jié)構(gòu)v串行通信控制寄存器串行通信控制寄存器v單片機(jī)串行通信的工作方式單片機(jī)串行通信的工作方式v串行通信應(yīng)用。串行通信應(yīng)用。 6.2 6.2 單片機(jī)的串行通信單片機(jī)的串行通信通通信信方方式式6.2.1 6.2.1 串行通信的概念串行通信的概念 并行通信方式并行通信方式空間上區(qū)分各位數(shù)據(jù)空間上區(qū)分各位數(shù)據(jù) 及聯(lián)絡(luò)控制信號(hào)。占及聯(lián)絡(luò)控制信號(hào)。占 用傳輸線多,速度快。用傳輸
26、線多,速度快。串行通信方式串行通信方式時(shí)間上區(qū)分各位數(shù)據(jù)時(shí)間上區(qū)分各位數(shù)據(jù) 及聯(lián)絡(luò)控制信號(hào)。占及聯(lián)絡(luò)控制信號(hào)。占 用傳輸線少,速度慢。用傳輸線少,速度慢。串行通信方式串行通信方式 -信息傳輸在一個(gè)方向上只占信息傳輸在一個(gè)方向上只占用一跟通信線,它既作為數(shù)據(jù)線,又作為聯(lián)絡(luò)用一跟通信線,它既作為數(shù)據(jù)線,又作為聯(lián)絡(luò)線。線。 信息信息格式格式上分上分 異步通信方式異步通信方式按字符傳輸按字符傳輸 同步通信方式同步通信方式按數(shù)據(jù)塊傳輸,要按數(shù)據(jù)塊傳輸,要求時(shí)鐘嚴(yán)格同步。求時(shí)鐘嚴(yán)格同步。 一、異步通信方式一、異步通信方式 數(shù)據(jù)是以數(shù)據(jù)是以幀幀為單位傳送的。為單位傳送的。每每1 1幀幀數(shù)據(jù)數(shù)據(jù)由由1 1個(gè)字
27、符代碼組成,而每個(gè)字符代碼組成,而每1 1個(gè)字符代碼又是由個(gè)字符代碼又是由起始位起始位、數(shù)據(jù)位數(shù)據(jù)位、奇偶校驗(yàn)位奇偶校驗(yàn)位和和停止位停止位四個(gè)四個(gè)部分組成。部分組成。 異步通訊雙方的兩項(xiàng)約定異步通訊雙方的兩項(xiàng)約定(1 1)幀格式幀格式:幀格式的規(guī)定是雙方能夠在對(duì)同:幀格式的規(guī)定是雙方能夠在對(duì)同一種一種0 0和和1 1的串理解成同一種意義。從通用、方的串理解成同一種意義。從通用、方便的角度出發(fā),一般還是使用一些標(biāo)準(zhǔn)為好,便的角度出發(fā),一般還是使用一些標(biāo)準(zhǔn)為好,如采用如采用ASCIIASCII標(biāo)準(zhǔn)(串行通信中為標(biāo)準(zhǔn)(串行通信中為1010位)。位)。 (2 2)波特率波特率:( (位位/ /秒秒)
28、)對(duì)傳送速率的規(guī)定。對(duì)傳送速率的規(guī)定。 例:要求每秒傳送例:要求每秒傳送120120個(gè)字符,每幀為個(gè)字符,每幀為1010位。位。解:解: 10b10b120120s s1200b1200bs s12001200波特波特 每位傳輸時(shí)間為每位傳輸時(shí)間為0.83ms0.83ms二、同步通信方式二、同步通信方式 在同步通信中,以一串字符為一個(gè)傳送在同步通信中,以一串字符為一個(gè)傳送單位,字符間不加標(biāo)識(shí)位,在一串字符單位,字符間不加標(biāo)識(shí)位,在一串字符開(kāi)開(kāi)始始用用同步字符同步字符標(biāo)識(shí),硬件要求高,通訊雙標(biāo)識(shí),硬件要求高,通訊雙方須在方須在時(shí)鐘上必須嚴(yán)格同步時(shí)鐘上必須嚴(yán)格同步。數(shù)據(jù)傳輸時(shí),。數(shù)據(jù)傳輸時(shí),中間不
29、允許斷流中間不允許斷流,否則將出錯(cuò)。,否則將出錯(cuò)。三、串行通信的制式三、串行通信的制式四、串行通信中的數(shù)據(jù)校驗(yàn)四、串行通信中的數(shù)據(jù)校驗(yàn)奇偶校驗(yàn):是一個(gè)表示給定位數(shù)的二進(jìn)制數(shù)中 1 的個(gè)數(shù)是奇數(shù)還是偶數(shù)的二進(jìn)制數(shù)。奇偶校驗(yàn)位是最簡(jiǎn)單的錯(cuò)誤檢測(cè)碼。循環(huán)冗余校驗(yàn)循環(huán)冗余校驗(yàn)(CRC):CRC在傳輸或者儲(chǔ)存之前計(jì)算出來(lái)并且附加到數(shù)據(jù)后面,然后接收方進(jìn)行檢驗(yàn)確定數(shù)據(jù)是否發(fā)生變化。五、通用異步收發(fā)器(五、通用異步收發(fā)器(UARTUART)的功能)的功能1.1.發(fā)送器發(fā)送器:并:并串?dāng)?shù)據(jù)格式轉(zhuǎn)換,添加標(biāo)識(shí)串?dāng)?shù)據(jù)格式轉(zhuǎn)換,添加標(biāo)識(shí)位和校驗(yàn)位,一幀發(fā)送結(jié)束,設(shè)置結(jié)束標(biāo)志,位和校驗(yàn)位,一幀發(fā)送結(jié)束,設(shè)置結(jié)束標(biāo)志,
30、申請(qǐng)中斷。申請(qǐng)中斷。2.2.接收器接收器:串:串并數(shù)據(jù)格式轉(zhuǎn)換,檢查錯(cuò)誤,并數(shù)據(jù)格式轉(zhuǎn)換,檢查錯(cuò)誤,去掉標(biāo)識(shí)位,保存有效數(shù)據(jù),設(shè)置接收結(jié)束去掉標(biāo)識(shí)位,保存有效數(shù)據(jù),設(shè)置接收結(jié)束標(biāo)志,申請(qǐng)中斷。標(biāo)志,申請(qǐng)中斷。3.3.控制器控制器:接收編程命令和控制參數(shù),設(shè)置:接收編程命令和控制參數(shù),設(shè)置工作方式:同步工作方式:同步/ / 異步、字符格式、波特率、異步、字符格式、波特率、校驗(yàn)方式、數(shù)據(jù)位與同步時(shí)鐘比例等。校驗(yàn)方式、數(shù)據(jù)位與同步時(shí)鐘比例等。6.2.2 MCS-516.2.2 MCS-51單片機(jī)串行口結(jié)構(gòu)單片機(jī)串行口結(jié)構(gòu) MCS-51 MCS-51有一個(gè)可編程的全雙工串行通有一個(gè)可編程的全雙工串行通
31、信接口,可作為通用異步接收信接口,可作為通用異步接收/ /發(fā)送器發(fā)送器UARTUART,也可作為同步移位寄存器。它的幀,也可作為同步移位寄存器。它的幀格式有格式有8 8位、位、1010位和位和1111位,可以設(shè)置為固位,可以設(shè)置為固定波特率和可變波特率,給使用者帶來(lái)很定波特率和可變波特率,給使用者帶來(lái)很大的靈活性。大的靈活性。一、串行口控制寄存器一、串行口控制寄存器SCON 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H (98H) SM0 SM1 SM2 REN TB8 RB8 TI RI (1 1)SM0SM0、SM1SM1:串行口工作方式選擇位:串行口工作方式選擇位 SM
32、0 SM1 工作方式 功能描述 波特率 0 0 0 1 1 0 1 1 方式 0 方式 1 方式 2 方式 3 8 位同步移位寄存器 10 位 UART 11 位 UART 11 位 UART fosc12 可變 fosc64 和 fosc32 可變 1.1.串行控制寄存器串行控制寄存器SCONSCON(2 2)SM2SM2:多機(jī)通訊控制位。:多機(jī)通訊控制位。方式方式0 0時(shí),時(shí),SM2SM2一定要為一定要為0 0。方式方式1 1時(shí),如時(shí),如SM2=1SM2=1則只有接收到有效停止位則只有接收到有效停止位時(shí),時(shí),RIRI(接收中斷請(qǐng)求位)才置(接收中斷請(qǐng)求位)才置1 1。方式方式2 2或方式或
33、方式3 3,當(dāng),當(dāng)SM2=1SM2=1且接收到的第九位數(shù)且接收到的第九位數(shù)據(jù)據(jù)RB8=1RB8=1時(shí),時(shí),RIRI才置才置1 1。 (3 3)RENREN:串行接收允許位。:串行接收允許位。由軟件置位或清由軟件置位或清除除。軟件置。軟件置1 1時(shí),串行口允許接收,清零后禁時(shí),串行口允許接收,清零后禁止接收。止接收。(4 4)TB8TB8:在方式:在方式2 2和方式和方式3 3中是發(fā)送數(shù)據(jù)的第中是發(fā)送數(shù)據(jù)的第9 9位。位??杉s定作為可約定作為奇偶校驗(yàn)位奇偶校驗(yàn)位或在或在多機(jī)通信中多機(jī)通信中作為區(qū)別作為區(qū)別地地址幀址幀或或數(shù)據(jù)幀數(shù)據(jù)幀的標(biāo)識(shí)位。的標(biāo)識(shí)位。(5 5)RB8RB8:在方式:在方式2 2
34、和方式和方式3 3中是接收的第中是接收的第9 9位數(shù)據(jù),位數(shù)據(jù),方式方式1 1時(shí),若時(shí),若SM2=0SM2=0,RB8RB8為接收到的停止位。方式為接收到的停止位。方式0 0中不使用中不使用RB8RB8。 (6 6)TITI:發(fā)送中斷標(biāo)志位,由:發(fā)送中斷標(biāo)志位,由硬件置位硬件置位,必須用,必須用軟件清軟件清0 0 。(7 7)RIRI:接收中斷標(biāo)志位,由:接收中斷標(biāo)志位,由硬件置位硬件置位,必須用,必須用軟件清軟件清0 0 。TITI、RIRI以以“或或邏輯邏輯”的的關(guān)系關(guān)系向主機(jī)向主機(jī)請(qǐng)求中斷請(qǐng)求中斷,必須必須在中斷處理程序中在中斷處理程序中查詢(xún)查詢(xún)TITI和和RIRI進(jìn)行判斷進(jìn)行判斷,分別
35、處理。,分別處理。2.2.專(zhuān)用寄存器專(zhuān)用寄存器PCONPCON電源控制寄存器電源控制寄存器PCONPCON中只有一位中只有一位SMODSMOD與串行口與串行口工作有關(guān),它的位格式為:工作有關(guān),它的位格式為:SMOD=1SMOD=1:波特率提高一倍:波特率提高一倍SMOD=0SMOD=0:波特率不提高一倍:波特率不提高一倍單片機(jī)復(fù)位時(shí),單片機(jī)復(fù)位時(shí),SMOD=0SMOD=0。PCON D7 D6 D5 D4 D3 D2 D1 D0 (87H) SMOD GF1 GF0 PD IDL 二、二、 單片機(jī)串行口的工作方式單片機(jī)串行口的工作方式1 1方式方式0 0:同步移位寄存器方式,多用于:同步移位寄
36、存器方式,多用于I/OI/O口的口的擴(kuò)展。擴(kuò)展。q一幀一幀8 8位,無(wú)起始位和停止位。位,無(wú)起始位和停止位。qRXDRXD:數(shù)據(jù)輸入:數(shù)據(jù)輸入/ /輸出端。輸出端。TXDTXD:同步脈沖輸出端,:同步脈沖輸出端,每個(gè)脈沖對(duì)應(yīng)一個(gè)數(shù)據(jù)位。每個(gè)脈沖對(duì)應(yīng)一個(gè)數(shù)據(jù)位。q波特率固定為:波特率固定為:B = fosc/12B = fosc/12q發(fā)送過(guò)程:寫(xiě)入發(fā)送過(guò)程:寫(xiě)入SBUFSBUF,啟動(dòng)發(fā)送,一幀發(fā)送結(jié),啟動(dòng)發(fā)送,一幀發(fā)送結(jié)束,束,TI=1TI=1。接收過(guò)程:。接收過(guò)程:REN=1REN=1且且RI=0RI=0,啟動(dòng)接收,啟動(dòng)接收,一幀接收完畢,一幀接收完畢,RI=1RI=1。(1 1)方式)方式
37、0 0發(fā)送發(fā)送的工作過(guò)程:的工作過(guò)程:q單片機(jī)執(zhí)行了一條對(duì)接收緩沖器單片機(jī)執(zhí)行了一條對(duì)接收緩沖器SBUFSBUF的寫(xiě)指令,開(kāi)的寫(xiě)指令,開(kāi)始工作。始工作。q數(shù)據(jù)就從數(shù)據(jù)就從RXDRXD端串行輸出,由端串行輸出,由D0(D0(低位低位) )開(kāi)始發(fā)送。開(kāi)始發(fā)送。q上面?zhèn)魉偷臄?shù)據(jù)是在上面?zhèn)魉偷臄?shù)據(jù)是在TXDTXD的脈沖作用下進(jìn)行的。的脈沖作用下進(jìn)行的。q發(fā)送完一幀數(shù)據(jù)后,中斷標(biāo)志位發(fā)送完一幀數(shù)據(jù)后,中斷標(biāo)志位TITI被置被置1 1,向,向CPUCPU申申請(qǐng)中斷,表示請(qǐng)中斷,表示SBUFSBUF已空,可以再接收從已空,可以再接收從CPUCPU來(lái)的數(shù)據(jù)。來(lái)的數(shù)據(jù)。中斷響應(yīng)后,中斷響應(yīng)后,TITI需用軟件清
38、需用軟件清0 0。 對(duì)外接的移位寄存器來(lái)說(shuō),這就叫做對(duì)外接的移位寄存器來(lái)說(shuō),這就叫做“串入并串入并出出”。 (2 2)方式)方式0 0接收接收的工作過(guò)程:的工作過(guò)程:q在在REN=1REN=1且且RI=0RI=0時(shí),啟動(dòng)了一次接收過(guò)程。時(shí),啟動(dòng)了一次接收過(guò)程。q數(shù)據(jù)從數(shù)據(jù)從RXDRXD端串行輸入到單片機(jī)內(nèi)的接收緩沖器端串行輸入到單片機(jī)內(nèi)的接收緩沖器SBUFSBUF,由,由D0(D0(低位低位) )開(kāi)始接收。開(kāi)始接收。q接收的數(shù)據(jù)是在接收的數(shù)據(jù)是在TXDTXD的脈沖作用下進(jìn)行的,從外接的脈沖作用下進(jìn)行的,從外接的移位寄存器(的移位寄存器(74LS16574LS165)一位一位地取出。)一位一位地
39、取出。q接收完一幀數(shù)據(jù)后,接收完一幀數(shù)據(jù)后,RIRI被置被置1 1,向,向CPUCPU申請(qǐng)中斷表申請(qǐng)中斷表示示SBUFSBUF已滿(mǎn),已滿(mǎn),CPUCPU可以調(diào)取可以調(diào)取SBUFSBUF中的數(shù)據(jù)了。中斷響中的數(shù)據(jù)了。中斷響應(yīng)后,應(yīng)后,RIRI需用需用軟件清軟件清0 0。 2 2方式方式1 1q這是最常用的這是最常用的1010位且波特率可調(diào)的異步串行數(shù)位且波特率可調(diào)的異步串行數(shù)據(jù)通信方式。據(jù)通信方式。q其中其中1 1位起始位位起始位“0”0”,8 8位數(shù)據(jù)位位數(shù)據(jù)位( (低位在前低位在前) ),1 1位停止位位停止位“1”1”。起始位和停止位是在發(fā)送時(shí)。起始位和停止位是在發(fā)送時(shí)自自動(dòng)動(dòng)插入的。插入的
40、。qTXDTXD(P3.0P3.0)和)和RXD RXD (P3.1P3.1)分別用于發(fā)送和接)分別用于發(fā)送和接收收1 1位數(shù)據(jù)。位數(shù)據(jù)。q接收數(shù)據(jù)時(shí),停止位進(jìn)入串行口控制器接收數(shù)據(jù)時(shí),停止位進(jìn)入串行口控制器SCONSCON的的RB8RB8位中位中( (位地址位地址9AH)9AH)。 (1 1)方式方式1 1的的發(fā)送發(fā)送過(guò)程過(guò)程(A)(A)發(fā)送條件是發(fā)送條件是TI=0 TI=0 。(B) CPU(B) CPU執(zhí)行一條寫(xiě)入指令執(zhí)行一條寫(xiě)入指令SBUFSBUF后,啟動(dòng)了串行口工后,啟動(dòng)了串行口工作,開(kāi)始發(fā)送數(shù)據(jù)。作,開(kāi)始發(fā)送數(shù)據(jù)。(C) (C) 數(shù)據(jù)從數(shù)據(jù)從TXDTXD端輸出,控制輸出數(shù)據(jù)的移位脈
41、沖的端輸出,控制輸出數(shù)據(jù)的移位脈沖的頻率,由內(nèi)部定時(shí)器頻率,由內(nèi)部定時(shí)器T TX X決定。換句話(huà)說(shuō):發(fā)送信號(hào)的決定。換句話(huà)說(shuō):發(fā)送信號(hào)的波特率由波特率由T TX X控制,所以方式控制,所以方式1 1波特率是可變的。波特率是可變的。(D)(D)發(fā)送完一幀數(shù)據(jù)后,中斷標(biāo)志發(fā)送完一幀數(shù)據(jù)后,中斷標(biāo)志TITI置置1 1,將,將CPUCPU申請(qǐng)申請(qǐng)中斷,并且將中斷,并且將TXDTXD端也置端也置1 1作為停止位。作為停止位。(A) (A) REN=1REN=1且且RI=0RI=0時(shí)時(shí),若檢測(cè)到檢測(cè)到RXDRXD上有從上有從1 1到到0 0的的跳變,則啟動(dòng)接收器。跳變,則啟動(dòng)接收器。(B) (B) 位檢測(cè)
42、器以位檢測(cè)器以1616倍于波特率的速率對(duì)倍于波特率的速率對(duì)RXDRXD中每一中每一位數(shù)據(jù)位數(shù)據(jù)( (第第7 7、8 8、9 9份脈沖份脈沖) ) 采樣采樣3 3次,取其中兩次相次,取其中兩次相同的值進(jìn)行判斷,以消除干擾,提高可靠性。同的值進(jìn)行判斷,以消除干擾,提高可靠性。 (C)(C)在本幀數(shù)據(jù)接收完后,必須同時(shí)滿(mǎn)足兩個(gè)條件在本幀數(shù)據(jù)接收完后,必須同時(shí)滿(mǎn)足兩個(gè)條件數(shù)據(jù)才有效:數(shù)據(jù)才有效:a) a) RI=0RI=0;b) b) SM2=0SM2=0或停止位為或停止位為1 1。停止位的信息裝入停止位的信息裝入RB8RB8,置位,置位RIRI。中斷被響應(yīng)后,。中斷被響應(yīng)后,由軟件使由軟件使RI=0
43、RI=0。 (2 2)方式方式1 1的的接收接收過(guò)程過(guò)程3 3方式方式2 2和方式和方式3 3q工作方式工作方式2 2和工作方式和工作方式3 3都是每幀都是每幀1111位異步通信位異步通信格式,由格式,由TXDTXD和和RXDRXD發(fā)送和接收,工作過(guò)程完全相發(fā)送和接收,工作過(guò)程完全相同。只是它們的波特率不同。同。只是它們的波特率不同。( (方式方式2 2的波特率是的波特率是固定固定的,的,方式方式3 3的波特率是由定時(shí)器的波特率是由定時(shí)器T TX X控制的控制的) )q每一幀的數(shù)據(jù)格式為:每一幀的數(shù)據(jù)格式為:1 1位起始位,位起始位,8 8位數(shù)據(jù)位位數(shù)據(jù)位( (低位在前低位在前) ),1 1位
44、可編程的第位可編程的第9 9數(shù)據(jù)位,數(shù)據(jù)位,1 1位停止位。位停止位。q發(fā)送發(fā)送數(shù)據(jù)時(shí),第數(shù)據(jù)時(shí),第9 9位數(shù)據(jù)位數(shù)據(jù)(SCON(SCON中的中的TB8TB8) )可設(shè)置可設(shè)置為為0 0或或1 1,以表明不同的含義,也可以將奇,以表明不同的含義,也可以將奇/ /偶校驗(yàn)偶校驗(yàn)位放入其中進(jìn)行奇位放入其中進(jìn)行奇/ /偶校驗(yàn)。偶校驗(yàn)。q接收接收數(shù)據(jù)時(shí),第數(shù)據(jù)時(shí),第9 9位數(shù)據(jù)進(jìn)入位數(shù)據(jù)進(jìn)入SCONSCON中的中的RB8RB8。 (2 2)當(dāng)當(dāng)滿(mǎn)足:滿(mǎn)足: RI=0RI=0 SM2=0 SM2=0或或SM2=1SM2=1、接收的第、接收的第9 9位數(shù)據(jù)為位數(shù)據(jù)為RB8=1RB8=1時(shí)時(shí): :q將前將前8
45、 8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUFSBUF中;中;q第第9 9位數(shù)據(jù)裝入位數(shù)據(jù)裝入SCONSCON中的中的RB8RB8位中;位中;q將將RIRI置置1 1,向,向CPUCPU申請(qǐng)中斷。申請(qǐng)中斷。(1 1)和方式)和方式1 1相比,除相比,除波特率波特率發(fā)生源略有發(fā)生源略有不同不同,發(fā)送時(shí)由發(fā)送時(shí)由TB8TB8提供第提供第9 9位數(shù)據(jù)外,其余功能基本相位數(shù)據(jù)外,其余功能基本相同。同。若不滿(mǎn)足上述條件,則放棄接收結(jié)果,也不置若不滿(mǎn)足上述條件,則放棄接收結(jié)果,也不置位位RIRI。三、串行通信的波特率三、串行通信的波特率1.1.方式方式0 0的波特率的波特率 在方式在方式0 0下,串行口通信的波特率是固
46、定的,其下,串行口通信的波特率是固定的,其值為值為fosc/12fosc/12(foscfosc為主機(jī)頻率)。為主機(jī)頻率)。2.2.方式方式2 2的波特率的波特率 在方式在方式2 2下,通信波特率為下,通信波特率為fosc/32fosc/32或或fosc/64fosc/64,根據(jù)特殊功能寄存器根據(jù)特殊功能寄存器PCONPCON中中SMODSMOD位的狀態(tài)來(lái)決定串位的狀態(tài)來(lái)決定串行口在那個(gè)波特率下工作。選擇公式為:行口在那個(gè)波特率下工作。選擇公式為:OSCSMOD642f波特率3.3.方式方式1 1或方式或方式3 3的波特率的波特率在這兩種方式下,串行口波特率是由在這兩種方式下,串行口波特率是由
47、定時(shí)器的溢定時(shí)器的溢出率出率決定的,因而波特率是可變的。波特率的公決定的,因而波特率是可變的。波特率的公式為:式為:溢出率定時(shí)器波特率XSMODT322)21(12TKOSCX初值溢出率定時(shí)器f式中:式中:K K為定時(shí)器為定時(shí)器T TX X的位數(shù)。的位數(shù)。溢出率溢出率:?jiǎn)挝粫r(shí)間內(nèi)定時(shí):?jiǎn)挝粫r(shí)間內(nèi)定時(shí)/ /計(jì)數(shù)器回計(jì)數(shù)器回0 0溢出的次數(shù)。溢出的次數(shù)。 例:例:fosc=6MHzfosc=6MHz,SMOD=1SMOD=1,定時(shí),定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1工作在方工作在方式式2 2,波特率,波特率24002400(位(位/ /秒),則初值秒),則初值N N為:為: 初始化程序段如下:初始化程序
48、段如下:MOV TMODMOV TMOD,#20H #20H ;設(shè)置定時(shí);設(shè)置定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1,方式,方式2 2MOV TH1MOV TH1,#F3H#F3HMOV TL1MOV TL1,#F3H #F3H ;設(shè)置定時(shí)時(shí)間常數(shù);設(shè)置定時(shí)時(shí)間常數(shù)N NSETB TR1 SETB TR1 ;啟動(dòng)定時(shí)器;啟動(dòng)定時(shí)器1 1MOV PCONMOV PCON,#80H #80H ;設(shè)置;設(shè)置SMOD=1SMOD=1MOV SCONMOV SCON,#50H #50H ;設(shè)置串行通信方式;設(shè)置串行通信方式1 1,允許接收,允許接收F3H2431232240010622566N常用的波特率及計(jì)數(shù)器
49、初值6.2.3 MCS-516.2.3 MCS-51串行通信技術(shù)串行通信技術(shù)一、雙機(jī)串行通信技術(shù)一、雙機(jī)串行通信技術(shù) 雙機(jī)通信接口雙機(jī)通信接口初始化編程格式:初始化編程格式:SIOSIO:MOV SCONMOV SCON,# #控制狀態(tài)字控制狀態(tài)字 ;寫(xiě)方式字且;寫(xiě)方式字且TI=RI=0TI=RI=0 (MOV PCON (MOV PCON,#80H) #80H) ;波特率加倍;波特率加倍 (MOV TMOD(MOV TMOD,#20H ) #20H ) ;T1T1作波特率發(fā)生器作波特率發(fā)生器 (MOV TH1(MOV TH1,#X ) #X ) ;選定波特率;選定波特率 (MOV TL1(M
50、OV TL1,#X ) #X ) (SETB TR1) (SETB TR1) (SETB EA) (SETB EA) ;開(kāi)串行口中斷;開(kāi)串行口中斷 (SETB ES)(SETB ES)1.1.串行口初始化串行口初始化2.2.發(fā)送程序發(fā)送程序(1 1) 查詢(xún)方式:查詢(xún)方式:TRAMTRAM: MOV AMOV A,R0 R0 ;取數(shù)據(jù);取數(shù)據(jù) MOVMOV SBUF SBUF,A A ;發(fā)送一個(gè)字符;發(fā)送一個(gè)字符WAITWAIT: JBCJBC TI TI,NEXT NEXT ;等待發(fā)送結(jié)束;等待發(fā)送結(jié)束 SJMP WAITSJMP WAITNEXTNEXT: INCINC R0 R0 ;準(zhǔn)備下
51、一次發(fā)送;準(zhǔn)備下一次發(fā)送 SJMP TRAMSJMP TRAM(2 2)中斷方式:)中斷方式: ORG ORG 0023H 0023H ;串行口中斷入口;串行口中斷入口AJMP SINTAJMP SINT MAIN MAIN: ;初始化編程;初始化編程 TRAMTRAM: MOVMOV A A,R0 R0 ;取數(shù)據(jù);取數(shù)據(jù)MOVMOV SBUF SBUF,A A ;發(fā)送第一個(gè)字符;發(fā)送第一個(gè)字符 H H:SJMPSJMP H H ;其它工作;其它工作 SINTSINT:CLR TICLR TI ;中斷服務(wù)程序;中斷服務(wù)程序INCINC R0 R0MOVMOV A A,R0 R0 ;取數(shù)據(jù);取數(shù)
52、據(jù)MOVMOV SBUF SBUF,A A ;發(fā)送下一個(gè)字符;發(fā)送下一個(gè)字符RETIRETI3.3.接收程序接收程序REN=1REN=1、RI=0RI=0等待接收,當(dāng)?shù)却邮眨?dāng)RI=1RI=1,從,從SBUFSBUF讀取數(shù)據(jù)。讀取數(shù)據(jù)。(1 1)查詢(xún)方式:)查詢(xún)方式: WAITWAIT:JBCJBCRIRI,NEXTNEXT;查詢(xún)等待;查詢(xún)等待SJMPSJMP WAITWAITNEXTNEXT:MOVMOVA A,SBUF SBUF ;讀取接收數(shù)據(jù);讀取接收數(shù)據(jù)MOVMOVR0R0,A A;保存數(shù)據(jù);保存數(shù)據(jù)INCINCR0R0 ;準(zhǔn)備下一次接收;準(zhǔn)備下一次接收SJMPSJMP WAITWA
53、IT(2 2)中斷方式:)中斷方式: ORG ORG 0023H 0023H ;串行口中斷入口;串行口中斷入口AJMP SINTAJMP SINT MAIN MAIN: ;初始化編程;初始化編程 H H:SJMPSJMP H H ;其它工作;其它工作 SINTSINT:CLR RICLR RI ;中斷服務(wù)程序;中斷服務(wù)程序MOVMOV A A,SBUF SBUF ;讀取接收數(shù)據(jù);讀取接收數(shù)據(jù)MOVMOV R0 R0,A A ;保存數(shù)據(jù);保存數(shù)據(jù)INCINC R0 R0 ;準(zhǔn)備下一次接收;準(zhǔn)備下一次接收RETIRETI 編程使乙機(jī)從甲機(jī)接收編程使乙機(jī)從甲機(jī)接收1616個(gè)字節(jié)數(shù)據(jù)塊,并存入個(gè)字節(jié)數(shù)
54、據(jù)塊,并存入片外片外3000H3000H300FH300FH單元。接收過(guò)程中要求判奇偶校驗(yàn)單元。接收過(guò)程中要求判奇偶校驗(yàn)標(biāo)志標(biāo)志RB8RB8。若出錯(cuò)則置。若出錯(cuò)則置F0F0標(biāo)志為標(biāo)志為1 1,若正確則置,若正確則置F0F0標(biāo)志標(biāo)志為為0 0,然后返回。,然后返回。 編程把甲機(jī)片內(nèi)編程把甲機(jī)片內(nèi)RAM50HRAM50H5FH5FH單元中的數(shù)據(jù)塊從串單元中的數(shù)據(jù)塊從串行口輸出。定義在方式行口輸出。定義在方式3 3下發(fā)送,下發(fā)送,TB8TB8作奇偶校驗(yàn)位。作奇偶校驗(yàn)位。采用定時(shí)器采用定時(shí)器1 1方式方式2 2作波特率發(fā)生器,波特率為作波特率發(fā)生器,波特率為12001200波波特,特,foscfosc
55、11110592MHz0592MHz,預(yù)置值,預(yù)置值TH1TH10E80E8H H。4.4.雙機(jī)通信編程實(shí)例雙機(jī)通信編程實(shí)例發(fā)送子程序如下:發(fā)送子程序如下: MOVTMOD,#20H ;設(shè)置定時(shí)器1為方式2 MOVTL1,0E8H ;設(shè)預(yù)置值 MOVTH1,0E8H SETBTRI ;啟動(dòng)定時(shí)器1 MOVSCON,0C0H ;設(shè)置串行口為方式3 MOVPCON,00H ;SMOD0 MOVR0,#50H ;設(shè)數(shù)據(jù)塊指針 MOVR7,10H ;設(shè)數(shù)據(jù)長(zhǎng)度10HTRS: MOVA,R0 ;取數(shù)據(jù)送至A MOVC,P MOVTB8,C ;奇偶位P送至TB8 MOVSBUF,A ;啟動(dòng)發(fā)送WAIT:JNBTI,WAIT ;判1幀是否發(fā)送完 CLRTI INCR0 ;更新數(shù)據(jù)單元 DJN
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 站崗志愿者心得5篇
- 高三誓師大會(huì)班主任發(fā)言稿
- 詳盡版房產(chǎn)轉(zhuǎn)讓合同(33篇)
- 銷(xiāo)售助理實(shí)習(xí)報(bào)告3000字(4篇)
- 2023屆新高考新教材化學(xué)魯科版一輪學(xué)案-第4章第14講 碳、硅及無(wú)機(jī)非金屬材料
- 小學(xué)班主任年終工作總結(jié)
- CNAS認(rèn)可合同范本
- 跟單員2022年終個(gè)人工作總結(jié)
- 2022淘寶客服個(gè)人工作總結(jié)
- 展品運(yùn)輸合同范本
- 學(xué)校安全檢查管理臺(tái)賬
- 中學(xué)文化地理興趣社章程及考評(píng)細(xì)則(共5頁(yè))
- 小學(xué)二年級(jí)上冊(cè)音樂(lè)-第6課《小紅帽》--人音版(簡(jiǎn)譜)(15張)ppt課件
- 槽鋼表面積對(duì)照表
- 稀土發(fā)光材料ppt
- 鐵路物資管理模擬考試試題
- 初中歷史課堂教學(xué)如何體現(xiàn)學(xué)生的主體地位
- 部編版三年級(jí)上冊(cè)語(yǔ)文課件-習(xí)作六:這兒真美---(共19張PPT)部編版
- 2020湖南湖南省建筑施工開(kāi)工安全生產(chǎn)條件承諾書(shū)
- 先進(jìn)先出(FIFO)
- 2020年四年級(jí)上冊(cè)語(yǔ)文素材-全冊(cè)課文梳理(1-27課)-人教(部編版)全冊(cè)可修改打印
評(píng)論
0/150
提交評(píng)論