




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章第六章 定時器定時器/ /計數(shù)器與串行通信口計數(shù)器與串行通信口定時器定時器/ /計數(shù)器學習目標計數(shù)器學習目標 v定時器定時器/ /計數(shù)器的結構及原理計數(shù)器的結構及原理v定時器定時器/ /計數(shù)器的各種工作方式計數(shù)器的各種工作方式v掌握定時器計數(shù)器的應用掌握定時器計數(shù)器的應用6.1.1 6.1.1 定時定時/ /計數(shù)器的基本原理計數(shù)器的基本原理 1. 1. 定時功能定時功能-計數(shù)輸入信號是內部時鐘脈計數(shù)輸入信號是內部時鐘脈沖,每個沖,每個機器周期機器周期使寄存器的值加使寄存器的值加1 1。所以,。所以,計數(shù)頻率是振蕩頻率的計數(shù)頻率是振蕩頻率的1/121/12。2. 2. 計數(shù)功能計數(shù)功能-計
2、數(shù)脈沖來自相應的計數(shù)脈沖來自相應的外部輸入外部輸入引腳,引腳,T0T0為為P3.4P3.4,T1T1為為P3.5P3.5。當輸入脈沖信號。當輸入脈沖信號從從1 1到到0 0的的負跳變負跳變時,計數(shù)器就自動加時,計數(shù)器就自動加1 1。計數(shù)的。計數(shù)的最高頻率為振蕩頻率的最高頻率為振蕩頻率的1/241/24。定時定時/ /計數(shù)器的計數(shù)器的核心部件核心部件是是二進制加二進制加1 1計數(shù)器計數(shù)器(TH0(TH0、TL0TL0或或TH1TH1、TL1) TL1) 。6.1.2 6.1.2 定時器計數(shù)器的控制寄存器定時器計數(shù)器的控制寄存器 1 1啟啟/ /停與中斷控制寄存器停與中斷控制寄存器TCONTCON
3、 (88H88H) D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0中斷請求標志觸發(fā)方式選擇觸發(fā)方式選擇啟動定時啟動定時/ /計數(shù)器計數(shù)器0 低電平低電平1 下降沿下降沿0 停止停止1 啟動啟動 TCONTCON可可位位尋址,字節(jié)地址是尋址,字節(jié)地址是88H88H,復位復位時所有位時所有位清零清零。低。低4 4位與外部中斷有關,已介紹。高位與外部中斷有關,已介紹。高4 4位的功位的功能如下:能如下: (1) (1) TF1TF1、TF0TF0計數(shù)溢出標志位,計數(shù)計數(shù)溢出標志位,計數(shù)溢出時溢出時由由硬件硬件自動自動置置1 1,向,向CPUCPU請求中
4、斷,當請求中斷,當CPUCPU響應時,由響應時,由硬件清硬件清0 0。 (2) (2) TR1TR1、TR0TR0計數(shù)運行控制位計數(shù)運行控制位 1 1:啟動定時器:啟動定時器/ /計數(shù)器工作計數(shù)器工作 0 0:停止定時器:停止定時器/ /計數(shù)器工作計數(shù)器工作 2 2工作方式控制寄存器工作方式控制寄存器TMOD TMOD (89H89H) 控 制 T1控 制 T0和T 類同001與INT 無關00與INT 有關01定時器模式計數(shù)器模式GATEC/TM10MGATE C/TMM89H101M0M00011011方 式方式0方式1方式2方式3GATEGATE門控位門控位 v0 0:以運行控制位:以運
5、行控制位TRTRX X(X=0,1X=0,1)來)來啟動啟動定時器定時器/ /計計數(shù)器運行。數(shù)器運行。v1 1:TRTRX X=1=1且且中斷引腳中斷引腳( (INT0INT0或或INT1INT1) )上為上為高電平高電平時,時,啟動啟動定時器定時器/ /計數(shù)器運行。計數(shù)器運行。計數(shù)脈沖輸入6.1.3 6.1.3 定時器計數(shù)器的工作方式(定時器計數(shù)器的工作方式(4 4種)種) 1. 1. 方式方式013013位方式位方式 TFXTXTRXGATEINTX11&C/T=1振蕩器1/12C/T=0TLX THX8位低5位13位計數(shù)器定時器計數(shù)器2. 2. 方式方式116116位方式位方式 振蕩器1
6、/12TLX THXTFX11&TXTRXGATEINTXC/T=0C/T=18位8位16位計數(shù)器3. 3. 方式方式2828位自動裝入時間常數(shù)方式位自動裝入時間常數(shù)方式 TFX振蕩器1/1211&TXTRXGATEINTXC/T=0C/T=1TLX THX初值初值同時同時送送THTHX X、TLTLX X,啟動后可,啟動后可無限次無限次運行,常用運行,常用于于串行口波特率串行口波特率的產生。的產生。 去串口去串口4. 4. 方式方式3232個個8 8位方式位方式 只適用只適用于定時器于定時器/ /計數(shù)器計數(shù)器T0T0 。此時。此時T1T1可用來作可用來作串行口波特率產生器。串行口波特率產生器
7、。 T0T0分為兩個獨立的分為兩個獨立的8 8位計數(shù)器位計數(shù)器: :TL0TL0和和TH0TH0 。TL0TL0使用使用T0T0的狀態(tài)控制位的狀態(tài)控制位C/TC/T* *、GATEGATE、TR0TR0、,而、,而TH0TH0被被固定為固定為一個一個8 8位位定時器定時器(不不能作外部計數(shù)模式),能作外部計數(shù)模式),并使用定時器并使用定時器T1T1的狀態(tài)控制位的狀態(tài)控制位TR1TR1和和TF1TF1。 各引腳與各引腳與T0T0的邏輯關系如圖所示:的邏輯關系如圖所示: 當當T1T1用作用作串行口的串行口的波特率發(fā)生器時,波特率發(fā)生器時,T0T0才工作才工作在方式在方式3 3。T0T0處于方式處于
8、方式3 3時,時, T1T1可定為方式可定為方式0 0、方式、方式1 1和方式和方式2 2,用來作為串行口的波特率發(fā)生器(通常,用來作為串行口的波特率發(fā)生器(通常設置成方式設置成方式2 2 ),或不需要中斷的場合。),或不需要中斷的場合。 6.1.4 6.1.4 定時定時/ /計數(shù)器常數(shù)的計算計數(shù)器常數(shù)的計算1 1計數(shù)器初值的計算計數(shù)器初值的計算把計數(shù)器計滿為零所需要的計數(shù)值設定為把計數(shù)器計滿為零所需要的計數(shù)值設定為C C,計,計數(shù)初值設定為數(shù)初值設定為TCTC,由此可得到公式:,由此可得到公式:TCTC= =M M- -C C式中,式中,M M為計數(shù)器模值,該值和計數(shù)器工作方式為計數(shù)器模值,
9、該值和計數(shù)器工作方式有關。在方式有關。在方式0 0時時M M為為213;在方式;在方式1 1時時M M為為216;在;在方式方式2 2和方式和方式3 3時時M M為為28。把計數(shù)值換算成二進制裝入把計數(shù)值換算成二進制裝入THTHX X、TLTLX X中。中。2 2定時器初值的計算定時器初值的計算 在定時器模式下,計數(shù)器由單片機主脈沖經(jīng)在定時器模式下,計數(shù)器由單片機主脈沖經(jīng)1212分頻后計數(shù)。因此,定時器定時時間分頻后計數(shù)。因此,定時器定時時間T T的公式:的公式:T=T=(M-TM-TC C)T TP P 上式也可寫成:上式也可寫成:T TC C=M-T/T=M-T/TP P M M:模值,和
10、定時器的工作方式有關;:模值,和定時器的工作方式有關; T TP P:單片機的機器周期(振蕩周期:單片機的機器周期(振蕩周期T TCLKCLK的的1212倍);倍);T TC C:定時器的定時初值。:定時器的定時初值。 例例:方式:方式1 1,定時時間為,定時時間為5ms,5ms,主頻為主頻為6MHz6MHz,求計數(shù),求計數(shù)初值?初值?3.3.初始化設置順序初始化設置順序工作方式控制字工作方式控制字TMODTMOD的設置;的設置;計數(shù)計數(shù)初值初值的裝入;的裝入;開中斷開中斷;啟啟/ /停停位的設置等。位的設置等。 6.1.5 6.1.5 定時器定時器/ /計數(shù)器的編程和應用計數(shù)器的編程和應用
11、由于由于方式方式0 0是為兼容是為兼容MCS-48MCS-48而設,其計數(shù)初值而設,其計數(shù)初值計算復雜,在實際應用中,一般不用方式計算復雜,在實際應用中,一般不用方式0 0,而采,而采用方式用方式1 1。一、方式一、方式1 1應用應用 例:假設系統(tǒng)時鐘頻率采用例:假設系統(tǒng)時鐘頻率采用6MHz6MHz,要在,要在P1.0P1.0上輸出一上輸出一個周期為個周期為2ms2ms的方波,如圖所示。的方波,如圖所示。 設:需要裝入設:需要裝入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進制,即進制,即X=FE0CH=1111111000001100BX=FE0CH=1111111000001100B。 所以,所以,T0T0的初值為:的初值為: TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH (1) (1)計算初值計算初值 (2)(2)初始化程序設計初始化程序設計 (3) (3)程序設計程序設計 中斷服務程序除了完成要求的產生方波這一工作中斷服務程序除了完成要求的產生方波這一工作之外,之外,還要還要注意將計數(shù)注意將計數(shù)初值重新裝入初值重新裝入定時器中,為定時器中,為下一次產生中斷作準備。下一次產生中斷作準備
13、。 參考程序:參考程序: ORG 0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;轉主程序;轉主程序 ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 AJMP IT0PAJMP IT0P ;轉;轉T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 0100HORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;設堆棧指針;設堆棧指針 MOV TMOD,#01HMOV TMOD,#01H ;設置;設置T0T0為方式為方式1 1 ACALL PT0M0ACALL PT0M0;調用子程
14、序;調用子程序PT0M0PT0M0HERE: AJMP HERE HERE: AJMP HERE ;自身跳轉;自身跳轉PT0M0: MOV TL0,#0CHPT0M0: MOV TL0,#0CH;T0T0初始化程序,初始化程序,T0T0置初值置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0 SETB TR0 ;啟動;啟動T0T0 SETB ET0 SETB ET0 ;允許;允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開中斷開中斷 RETRETITOP: MOV TL0,#0CH ITOP: MOV TL0,#0CH ;T0T0中斷服務子程
15、序,中斷服務子程序,T0T0重置初重置初值值 MOV TH0,#0FEHMOV TH0,#0FEH CPL P1.0 CPL P1.0 ;P1.0P1.0的狀態(tài)取反的狀態(tài)取反 RETIRETI例:例:假設系統(tǒng)時鐘為假設系統(tǒng)時鐘為6MHz6MHz,編寫定時器編寫定時器T0T0產生產生1 1秒定秒定時的程序。時的程序。(1 1)定時器)定時器T0T0工作方式的確定工作方式的確定因定時時間較長,采用哪一種工作方式?由定時器各因定時時間較長,采用哪一種工作方式?由定時器各種工作方式的特性,可計算出:種工作方式的特性,可計算出: 方式方式0 0最長可定時最長可定時16.384ms16.384ms; ;
16、方式方式1 1最長可定時最長可定時131.072ms;131.072ms; 方式方式2 2最長可定時最長可定時512512 s s。選方式選方式1 1,每隔,每隔100ms100ms中斷一次,中斷中斷一次,中斷1010次為次為1s1s。 (2 2)計算計數(shù)初值)計算計數(shù)初值因為:因為:(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次計數(shù)的實現(xiàn)次計數(shù)的實現(xiàn) 對于中斷對于中斷1010次計數(shù),采用次計數(shù),采用循環(huán)程
17、序循環(huán)程序的方法實現(xiàn)。的方法實現(xiàn)。(4 4)程序設計)程序設計 參考程序參考程序 : : ORG 0000HORG 0000HRESETRESET: LJMP MAIN LJMP MAIN ;上電,轉主程序入口;上電,轉主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中斷入口的中斷入口 LJMP IT0PLJMP IT0P ;轉;轉T0T0中斷處理程序中斷處理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN: MOV SP,#60HMOV SP,#60H;設堆棧指針;設堆棧指針 MOV B,#0AHMOV B,#0AH;設循環(huán)次數(shù);設
18、循環(huán)次數(shù)1010次次 MOV TMOD,#01H MOV TMOD,#01H;設;設T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;給;給T0T0設初值設初值 MOV TH0,#3CHMOV TH0,#3CH SETB TR0 SETB TR0 ;啟動;啟動T0T0 SETB ET0 SETB ET0 ;允許;允許T0T0中斷中斷 SETB EA SETB EA ;CPUCPU開放中斷開放中斷 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定時時間到,停止定時時間到,停止T0T0工作工作 LOOPLOOP: RETI RETI 例:例:利用定時器利用定時器T1T1的的方式方式2 2對外部信號計數(shù),要求每計對外部信號計數(shù),要求每計滿滿100100個數(shù),將個數(shù),將P1.0P1.0取反。取反。 (1 1)選擇工作方式)選擇工作方式 外部信號由外部信號由T1(P3.5) T1(P3.5) 腳輸入腳輸入, ,每發(fā)生一次每發(fā)生一次負跳變負跳變計數(shù)器加計數(shù)器
20、加1 1,每輸入,每輸入100100個脈沖,計數(shù)器產生溢出中個脈沖,計數(shù)器產生溢出中斷,在中斷服務程序中將斷,在中斷服務程序中將P1.0P1.0取反一次。取反一次。 T1T1工作在方式工作在方式2 2的控制字為的控制字為TMOD=60HTMOD=60H。不使用不使用T0T0時時,TMODTMOD的低的低4 4位可任取位可任取,但不能使但不能使T0T0進入方式進入方式3 3,這里取全這里取全0 0。(2 2)計算)計算T1T1的初值的初值X=2X=28 8-100=156=9CH-100=156=9CH 因此,因此,TL1TL1的初值為的初值為9CH9CH,重裝初值寄存器,重裝初值寄存器TH1=
21、9CHTH1=9CH(3 3)程序設計)程序設計 ORG 0000HORG 0000H LJMP MAIN LJMP MAINORG 001BHORG 001BH ;T1T1中斷服務程序入口中斷服務程序入口 CPL P1.0CPL P1.0 ;P1.0P1.0位取反位取反 RETIRETI ORG 0100HORG 0100HMAIN:MAIN: MOV TMOD,#60H MOV TMOD,#60H ;設;設T1T1為方式為方式2 2計數(shù)計數(shù) MOV TL0,#9CH MOV TL0,#9CH ;T0T0置初值置初值 MOV TH0,#9CH MOV TH0,#9CH SETB TR1SET
22、B TR1 ;啟動;啟動T1T1 SETB ET1 SETB ET1 ;允許;允許T1T1中斷中斷 SETB EA SETB EA ;CPUCPU開放中斷開放中斷HERE: AJMP HEREHERE: AJMP HERE6.1.6 6.1.6 定時器定時器/ /計數(shù)器的計數(shù)器的實時性實時性 注意注意:從回從回0 0溢出到主機響應中斷造成的時延。溢出到主機響應中斷造成的時延。 方法方法: :在中斷服務程序中對在中斷服務程序中對TLXTLX、THXTHX、重新置初值時重新置初值時,應,應將當前的將當前的TLXTLX、THXTHX值讀出來重新補償?shù)匠踔抵小V底x出來重新補償?shù)匠踔抵小?CLR EAC
23、LR EA;禁止中斷;禁止中斷 MOV AMOV A,TLXTLX;讀;讀TLXTLX中已計數(shù)值中已計數(shù)值 ADD AADD A,#LOW#LOW;LOWLOW為低字節(jié)初值為低字節(jié)初值 MOV TLXMOV TLX,A A;設置低字節(jié)初值;設置低字節(jié)初值 MOV AMOV A,#HIGE#HIGE ;高字節(jié)初值送;高字節(jié)初值送A A ADDC A ADDC A,THXTHX;高字節(jié)初值補償;高字節(jié)初值補償 MOV THXMOV THX,A A;設置高字節(jié)初值;設置高字節(jié)初值 SETB EA SETB EA ;開中斷;開中斷6.1.7 6.1.7 運行中運行中讀定時器讀定時器/ /計數(shù)器計數(shù)器方
24、法方法:先讀(:先讀(THXTHX),后讀(),后讀(TLXTLX),再讀(),再讀(THXTHX)。若)。若兩次讀得(兩次讀得(THXTHX)相同,則讀得的內容正確。若前后)相同,則讀得的內容正確。若前后兩次讀得的(兩次讀得的(THXTHX)有變化,則再重復上述過程,這)有變化,則再重復上述過程,這次重復讀得的內容就應是正確的。次重復讀得的內容就應是正確的。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), ,不相等則重復讀不相等則重復讀 MOV R1,AMOV R1,A ;(;(TH0TH0)送入)送入R1R1中中 RETRETv單片機串行通信單片機串行通信I/OI/O接口的結構接口的結構v串行通信控制寄存器串行通信控制寄存器v單片機串行通信的工作方式單片機串行通信的工作方式v串行通信應用。串行通信應用。 6.2 6.2 單片機的串行通信單片機的串行通信通通信信方方式式6.2.1 6.2.1 串行通信的概念串行通信的概念 并行通信方式并行通信方式空間上區(qū)分各位數(shù)據(jù)空間上區(qū)分各位數(shù)據(jù) 及聯(lián)絡控制信號。占及聯(lián)絡控制信號。占 用傳輸線多,速度快。用傳輸
26、線多,速度快。串行通信方式串行通信方式時間上區(qū)分各位數(shù)據(jù)時間上區(qū)分各位數(shù)據(jù) 及聯(lián)絡控制信號。占及聯(lián)絡控制信號。占 用傳輸線少,速度慢。用傳輸線少,速度慢。串行通信方式串行通信方式 -信息傳輸在一個方向上只占信息傳輸在一個方向上只占用一跟通信線,它既作為數(shù)據(jù)線,又作為聯(lián)絡用一跟通信線,它既作為數(shù)據(jù)線,又作為聯(lián)絡線。線。 信息信息格式格式上分上分 異步通信方式異步通信方式按字符傳輸按字符傳輸 同步通信方式同步通信方式按數(shù)據(jù)塊傳輸,要按數(shù)據(jù)塊傳輸,要求時鐘嚴格同步。求時鐘嚴格同步。 一、異步通信方式一、異步通信方式 數(shù)據(jù)是以數(shù)據(jù)是以幀幀為單位傳送的。為單位傳送的。每每1 1幀幀數(shù)據(jù)數(shù)據(jù)由由1 1個字
27、符代碼組成,而每個字符代碼組成,而每1 1個字符代碼又是由個字符代碼又是由起始位起始位、數(shù)據(jù)位數(shù)據(jù)位、奇偶校驗位奇偶校驗位和和停止位停止位四個四個部分組成。部分組成。 異步通訊雙方的兩項約定異步通訊雙方的兩項約定(1 1)幀格式幀格式:幀格式的規(guī)定是雙方能夠在對同:幀格式的規(guī)定是雙方能夠在對同一種一種0 0和和1 1的串理解成同一種意義。從通用、方的串理解成同一種意義。從通用、方便的角度出發(fā),一般還是使用一些標準為好,便的角度出發(fā),一般還是使用一些標準為好,如采用如采用ASCIIASCII標準(串行通信中為標準(串行通信中為1010位)。位)。 (2 2)波特率波特率:( (位位/ /秒秒)
28、)對傳送速率的規(guī)定。對傳送速率的規(guī)定。 例:要求每秒傳送例:要求每秒傳送120120個字符,每幀為個字符,每幀為1010位。位。解:解: 10b10b120120s s1200b1200bs s12001200波特波特 每位傳輸時間為每位傳輸時間為0.83ms0.83ms二、同步通信方式二、同步通信方式 在同步通信中,以一串字符為一個傳送在同步通信中,以一串字符為一個傳送單位,字符間不加標識位,在一串字符單位,字符間不加標識位,在一串字符開開始始用用同步字符同步字符標識,硬件要求高,通訊雙標識,硬件要求高,通訊雙方須在方須在時鐘上必須嚴格同步時鐘上必須嚴格同步。數(shù)據(jù)傳輸時,。數(shù)據(jù)傳輸時,中間不
29、允許斷流中間不允許斷流,否則將出錯。,否則將出錯。三、串行通信的制式三、串行通信的制式四、串行通信中的數(shù)據(jù)校驗四、串行通信中的數(shù)據(jù)校驗奇偶校驗:是一個表示給定位數(shù)的二進制數(shù)中 1 的個數(shù)是奇數(shù)還是偶數(shù)的二進制數(shù)。奇偶校驗位是最簡單的錯誤檢測碼。循環(huán)冗余校驗循環(huán)冗余校驗(CRC):CRC在傳輸或者儲存之前計算出來并且附加到數(shù)據(jù)后面,然后接收方進行檢驗確定數(shù)據(jù)是否發(fā)生變化。五、通用異步收發(fā)器(五、通用異步收發(fā)器(UARTUART)的功能)的功能1.1.發(fā)送器發(fā)送器:并:并串數(shù)據(jù)格式轉換,添加標識串數(shù)據(jù)格式轉換,添加標識位和校驗位,一幀發(fā)送結束,設置結束標志,位和校驗位,一幀發(fā)送結束,設置結束標志,
30、申請中斷。申請中斷。2.2.接收器接收器:串:串并數(shù)據(jù)格式轉換,檢查錯誤,并數(shù)據(jù)格式轉換,檢查錯誤,去掉標識位,保存有效數(shù)據(jù),設置接收結束去掉標識位,保存有效數(shù)據(jù),設置接收結束標志,申請中斷。標志,申請中斷。3.3.控制器控制器:接收編程命令和控制參數(shù),設置:接收編程命令和控制參數(shù),設置工作方式:同步工作方式:同步/ / 異步、字符格式、波特率、異步、字符格式、波特率、校驗方式、數(shù)據(jù)位與同步時鐘比例等。校驗方式、數(shù)據(jù)位與同步時鐘比例等。6.2.2 MCS-516.2.2 MCS-51單片機串行口結構單片機串行口結構 MCS-51 MCS-51有一個可編程的全雙工串行通有一個可編程的全雙工串行通
31、信接口,可作為通用異步接收信接口,可作為通用異步接收/ /發(fā)送器發(fā)送器UARTUART,也可作為同步移位寄存器。它的幀,也可作為同步移位寄存器。它的幀格式有格式有8 8位、位、1010位和位和1111位,可以設置為固位,可以設置為固定波特率和可變波特率,給使用者帶來很定波特率和可變波特率,給使用者帶來很大的靈活性。大的靈活性。一、串行口控制寄存器一、串行口控制寄存器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:多機通訊控制位。:多機通訊控制位。方式方式0 0時,時,SM2SM2一定要為一定要為0 0。方式方式1 1時,如時,如SM2=1SM2=1則只有接收到有效停止位則只有接收到有效停止位時,時,RIRI(接收中斷請求位)才置(接收中斷請求位)才置1 1。方式方式2 2或方式或
33、方式3 3,當,當SM2=1SM2=1且接收到的第九位數(shù)且接收到的第九位數(shù)據(jù)據(jù)RB8=1RB8=1時,時,RIRI才置才置1 1。 (3 3)RENREN:串行接收允許位。:串行接收允許位。由軟件置位或清由軟件置位或清除除。軟件置。軟件置1 1時,串行口允許接收,清零后禁時,串行口允許接收,清零后禁止接收。止接收。(4 4)TB8TB8:在方式:在方式2 2和方式和方式3 3中是發(fā)送數(shù)據(jù)的第中是發(fā)送數(shù)據(jù)的第9 9位。位??杉s定作為可約定作為奇偶校驗位奇偶校驗位或在或在多機通信中多機通信中作為區(qū)別作為區(qū)別地地址幀址幀或或數(shù)據(jù)幀數(shù)據(jù)幀的標識位。的標識位。(5 5)RB8RB8:在方式:在方式2 2
34、和方式和方式3 3中是接收的第中是接收的第9 9位數(shù)據(jù),位數(shù)據(jù),方式方式1 1時,若時,若SM2=0SM2=0,RB8RB8為接收到的停止位。方式為接收到的停止位。方式0 0中不使用中不使用RB8RB8。 (6 6)TITI:發(fā)送中斷標志位,由:發(fā)送中斷標志位,由硬件置位硬件置位,必須用,必須用軟件清軟件清0 0 。(7 7)RIRI:接收中斷標志位,由:接收中斷標志位,由硬件置位硬件置位,必須用,必須用軟件清軟件清0 0 。TITI、RIRI以以“或或邏輯邏輯”的的關系關系向主機向主機請求中斷請求中斷,必須必須在中斷處理程序中在中斷處理程序中查詢查詢TITI和和RIRI進行判斷進行判斷,分別
35、處理。,分別處理。2.2.專用寄存器專用寄存器PCONPCON電源控制寄存器電源控制寄存器PCONPCON中只有一位中只有一位SMODSMOD與串行口與串行口工作有關,它的位格式為:工作有關,它的位格式為:SMOD=1SMOD=1:波特率提高一倍:波特率提高一倍SMOD=0SMOD=0:波特率不提高一倍:波特率不提高一倍單片機復位時,單片機復位時,SMOD=0SMOD=0。PCON D7 D6 D5 D4 D3 D2 D1 D0 (87H) SMOD GF1 GF0 PD IDL 二、二、 單片機串行口的工作方式單片機串行口的工作方式1 1方式方式0 0:同步移位寄存器方式,多用于:同步移位寄
36、存器方式,多用于I/OI/O口的口的擴展。擴展。q一幀一幀8 8位,無起始位和停止位。位,無起始位和停止位。qRXDRXD:數(shù)據(jù)輸入:數(shù)據(jù)輸入/ /輸出端。輸出端。TXDTXD:同步脈沖輸出端,:同步脈沖輸出端,每個脈沖對應一個數(shù)據(jù)位。每個脈沖對應一個數(shù)據(jù)位。q波特率固定為:波特率固定為:B = fosc/12B = fosc/12q發(fā)送過程:寫入發(fā)送過程:寫入SBUFSBUF,啟動發(fā)送,一幀發(fā)送結,啟動發(fā)送,一幀發(fā)送結束,束,TI=1TI=1。接收過程:。接收過程:REN=1REN=1且且RI=0RI=0,啟動接收,啟動接收,一幀接收完畢,一幀接收完畢,RI=1RI=1。(1 1)方式)方式
37、0 0發(fā)送發(fā)送的工作過程:的工作過程:q單片機執(zhí)行了一條對接收緩沖器單片機執(zhí)行了一條對接收緩沖器SBUFSBUF的寫指令,開的寫指令,開始工作。始工作。q數(shù)據(jù)就從數(shù)據(jù)就從RXDRXD端串行輸出,由端串行輸出,由D0(D0(低位低位) )開始發(fā)送。開始發(fā)送。q上面?zhèn)魉偷臄?shù)據(jù)是在上面?zhèn)魉偷臄?shù)據(jù)是在TXDTXD的脈沖作用下進行的。的脈沖作用下進行的。q發(fā)送完一幀數(shù)據(jù)后,中斷標志位發(fā)送完一幀數(shù)據(jù)后,中斷標志位TITI被置被置1 1,向,向CPUCPU申申請中斷,表示請中斷,表示SBUFSBUF已空,可以再接收從已空,可以再接收從CPUCPU來的數(shù)據(jù)。來的數(shù)據(jù)。中斷響應后,中斷響應后,TITI需用軟件清
38、需用軟件清0 0。 對外接的移位寄存器來說,這就叫做對外接的移位寄存器來說,這就叫做“串入并串入并出出”。 (2 2)方式)方式0 0接收接收的工作過程:的工作過程:q在在REN=1REN=1且且RI=0RI=0時,啟動了一次接收過程。時,啟動了一次接收過程。q數(shù)據(jù)從數(shù)據(jù)從RXDRXD端串行輸入到單片機內的接收緩沖器端串行輸入到單片機內的接收緩沖器SBUFSBUF,由,由D0(D0(低位低位) )開始接收。開始接收。q接收的數(shù)據(jù)是在接收的數(shù)據(jù)是在TXDTXD的脈沖作用下進行的,從外接的脈沖作用下進行的,從外接的移位寄存器(的移位寄存器(74LS16574LS165)一位一位地取出。)一位一位地
39、取出。q接收完一幀數(shù)據(jù)后,接收完一幀數(shù)據(jù)后,RIRI被置被置1 1,向,向CPUCPU申請中斷表申請中斷表示示SBUFSBUF已滿,已滿,CPUCPU可以調取可以調取SBUFSBUF中的數(shù)據(jù)了。中斷響中的數(shù)據(jù)了。中斷響應后,應后,RIRI需用需用軟件清軟件清0 0。 2 2方式方式1 1q這是最常用的這是最常用的1010位且波特率可調的異步串行數(shù)位且波特率可調的異步串行數(shù)據(jù)通信方式。據(jù)通信方式。q其中其中1 1位起始位位起始位“0”0”,8 8位數(shù)據(jù)位位數(shù)據(jù)位( (低位在前低位在前) ),1 1位停止位位停止位“1”1”。起始位和停止位是在發(fā)送時。起始位和停止位是在發(fā)送時自自動動插入的。插入的
40、。qTXDTXD(P3.0P3.0)和)和RXD RXD (P3.1P3.1)分別用于發(fā)送和接)分別用于發(fā)送和接收收1 1位數(shù)據(jù)。位數(shù)據(jù)。q接收數(shù)據(jù)時,停止位進入串行口控制器接收數(shù)據(jù)時,停止位進入串行口控制器SCONSCON的的RB8RB8位中位中( (位地址位地址9AH)9AH)。 (1 1)方式方式1 1的的發(fā)送發(fā)送過程過程(A)(A)發(fā)送條件是發(fā)送條件是TI=0 TI=0 。(B) CPU(B) CPU執(zhí)行一條寫入指令執(zhí)行一條寫入指令SBUFSBUF后,啟動了串行口工后,啟動了串行口工作,開始發(fā)送數(shù)據(jù)。作,開始發(fā)送數(shù)據(jù)。(C) (C) 數(shù)據(jù)從數(shù)據(jù)從TXDTXD端輸出,控制輸出數(shù)據(jù)的移位脈
41、沖的端輸出,控制輸出數(shù)據(jù)的移位脈沖的頻率,由內部定時器頻率,由內部定時器T TX X決定。換句話說:發(fā)送信號的決定。換句話說:發(fā)送信號的波特率由波特率由T TX X控制,所以方式控制,所以方式1 1波特率是可變的。波特率是可變的。(D)(D)發(fā)送完一幀數(shù)據(jù)后,中斷標志發(fā)送完一幀數(shù)據(jù)后,中斷標志TITI置置1 1,將,將CPUCPU申請申請中斷,并且將中斷,并且將TXDTXD端也置端也置1 1作為停止位。作為停止位。(A) (A) REN=1REN=1且且RI=0RI=0時時,若檢測到檢測到RXDRXD上有從上有從1 1到到0 0的的跳變,則啟動接收器。跳變,則啟動接收器。(B) (B) 位檢測
42、器以位檢測器以1616倍于波特率的速率對倍于波特率的速率對RXDRXD中每一中每一位數(shù)據(jù)位數(shù)據(jù)( (第第7 7、8 8、9 9份脈沖份脈沖) ) 采樣采樣3 3次,取其中兩次相次,取其中兩次相同的值進行判斷,以消除干擾,提高可靠性。同的值進行判斷,以消除干擾,提高可靠性。 (C)(C)在本幀數(shù)據(jù)接收完后,必須同時滿足兩個條件在本幀數(shù)據(jù)接收完后,必須同時滿足兩個條件數(shù)據(jù)才有效:數(shù)據(jù)才有效:a) a) RI=0RI=0;b) b) SM2=0SM2=0或停止位為或停止位為1 1。停止位的信息裝入停止位的信息裝入RB8RB8,置位,置位RIRI。中斷被響應后,。中斷被響應后,由軟件使由軟件使RI=0
43、RI=0。 (2 2)方式方式1 1的的接收接收過程過程3 3方式方式2 2和方式和方式3 3q工作方式工作方式2 2和工作方式和工作方式3 3都是每幀都是每幀1111位異步通信位異步通信格式,由格式,由TXDTXD和和RXDRXD發(fā)送和接收,工作過程完全相發(fā)送和接收,工作過程完全相同。只是它們的波特率不同。同。只是它們的波特率不同。( (方式方式2 2的波特率是的波特率是固定固定的,的,方式方式3 3的波特率是由定時器的波特率是由定時器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ù)據(jù)時,第9 9位數(shù)據(jù)位數(shù)據(jù)(SCON(SCON中的中的TB8TB8) )可設置可設置為為0 0或或1 1,以表明不同的含義,也可以將奇,以表明不同的含義,也可以將奇/ /偶校驗偶校驗位放入其中進行奇位放入其中進行奇/ /偶校驗。偶校驗。q接收接收數(shù)據(jù)時,第數(shù)據(jù)時,第9 9位數(shù)據(jù)進入位數(shù)據(jù)進入SCONSCON中的中的RB8RB8。 (2 2)當當滿足:滿足: RI=0RI=0 SM2=0 SM2=0或或SM2=1SM2=1、接收的第、接收的第9 9位數(shù)據(jù)為位數(shù)據(jù)為RB8=1RB8=1時時: :q將前將前8
45、 8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUFSBUF中;中;q第第9 9位數(shù)據(jù)裝入位數(shù)據(jù)裝入SCONSCON中的中的RB8RB8位中;位中;q將將RIRI置置1 1,向,向CPUCPU申請中斷。申請中斷。(1 1)和方式)和方式1 1相比,除相比,除波特率波特率發(fā)生源略有發(fā)生源略有不同不同,發(fā)送時由發(fā)送時由TB8TB8提供第提供第9 9位數(shù)據(jù)外,其余功能基本相位數(shù)據(jù)外,其余功能基本相同。同。若不滿足上述條件,則放棄接收結果,也不置若不滿足上述條件,則放棄接收結果,也不置位位RIRI。三、串行通信的波特率三、串行通信的波特率1.1.方式方式0 0的波特率的波特率 在方式在方式0 0下,串行口通信的波特率是固
46、定的,其下,串行口通信的波特率是固定的,其值為值為fosc/12fosc/12(foscfosc為主機頻率)。為主機頻率)。2.2.方式方式2 2的波特率的波特率 在方式在方式2 2下,通信波特率為下,通信波特率為fosc/32fosc/32或或fosc/64fosc/64,根據(jù)特殊功能寄存器根據(jù)特殊功能寄存器PCONPCON中中SMODSMOD位的狀態(tài)來決定串位的狀態(tài)來決定串行口在那個波特率下工作。選擇公式為:行口在那個波特率下工作。選擇公式為:OSCSMOD642f波特率3.3.方式方式1 1或方式或方式3 3的波特率的波特率在這兩種方式下,串行口波特率是由在這兩種方式下,串行口波特率是由
47、定時器的溢定時器的溢出率出率決定的,因而波特率是可變的。波特率的公決定的,因而波特率是可變的。波特率的公式為:式為:溢出率定時器波特率XSMODT322)21(12TKOSCX初值溢出率定時器f式中:式中:K K為定時器為定時器T TX X的位數(shù)。的位數(shù)。溢出率溢出率:單位時間內定時:單位時間內定時/ /計數(shù)器回計數(shù)器回0 0溢出的次數(shù)。溢出的次數(shù)。 例:例:fosc=6MHzfosc=6MHz,SMOD=1SMOD=1,定時,定時/ /計數(shù)器計數(shù)器1 1工作在方工作在方式式2 2,波特率,波特率24002400(位(位/ /秒),則初值秒),則初值N N為:為: 初始化程序段如下:初始化程序
48、段如下:MOV TMODMOV TMOD,#20H #20H ;設置定時;設置定時/ /計數(shù)器計數(shù)器1 1,方式,方式2 2MOV TH1MOV TH1,#F3H#F3HMOV TL1MOV TL1,#F3H #F3H ;設置定時時間常數(shù);設置定時時間常數(shù)N NSETB TR1 SETB TR1 ;啟動定時器;啟動定時器1 1MOV PCONMOV PCON,#80H #80H ;設置;設置SMOD=1SMOD=1MOV SCONMOV SCON,#50H #50H ;設置串行通信方式;設置串行通信方式1 1,允許接收,允許接收F3H2431232240010622566N常用的波特率及計數(shù)器
49、初值6.2.3 MCS-516.2.3 MCS-51串行通信技術串行通信技術一、雙機串行通信技術一、雙機串行通信技術 雙機通信接口雙機通信接口初始化編程格式:初始化編程格式:SIOSIO:MOV SCONMOV SCON,# #控制狀態(tài)字控制狀態(tài)字 ;寫方式字且;寫方式字且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) ;開串行口中斷;開串行口中斷 (SETB ES)(SETB ES)1.1.串行口初始化串行口初始化2.2.發(fā)送程序發(fā)送程序(1 1) 查詢方式:查詢方式:TRAMTRAM: MOV AMOV A,R0 R0 ;取數(shù)據(jù);取數(shù)據(jù) MOVMOV SBUF SBUF,A A ;發(fā)送一個字符;發(fā)送一個字符WAITWAIT: JBCJBC TI TI,NEXT NEXT ;等待發(fā)送結束;等待發(fā)送結束 SJMP WAITSJMP WAITNEXTNEXT: INCINC R0 R0 ;準備下
51、一次發(fā)送;準備下一次發(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ā)送第一個字符;發(fā)送第一個字符 H H:SJMPSJMP H H ;其它工作;其它工作 SINTSINT:CLR TICLR TI ;中斷服務程序;中斷服務程序INCINC R0 R0MOVMOV A A,R0 R0 ;取數(shù)據(jù);取數(shù)
52、據(jù)MOVMOV SBUF SBUF,A A ;發(fā)送下一個字符;發(fā)送下一個字符RETIRETI3.3.接收程序接收程序REN=1REN=1、RI=0RI=0等待接收,當?shù)却邮?,當RI=1RI=1,從,從SBUFSBUF讀取數(shù)據(jù)。讀取數(shù)據(jù)。(1 1)查詢方式:)查詢方式: WAITWAIT:JBCJBCRIRI,NEXTNEXT;查詢等待;查詢等待SJMPSJMP WAITWAITNEXTNEXT:MOVMOVA A,SBUF SBUF ;讀取接收數(shù)據(jù);讀取接收數(shù)據(jù)MOVMOVR0R0,A A;保存數(shù)據(jù);保存數(shù)據(jù)INCINCR0R0 ;準備下一次接收;準備下一次接收SJMPSJMP WAITWA
53、IT(2 2)中斷方式:)中斷方式: ORG ORG 0023H 0023H ;串行口中斷入口;串行口中斷入口AJMP SINTAJMP SINT MAIN MAIN: ;初始化編程;初始化編程 H H:SJMPSJMP H H ;其它工作;其它工作 SINTSINT:CLR RICLR RI ;中斷服務程序;中斷服務程序MOVMOV A A,SBUF SBUF ;讀取接收數(shù)據(jù);讀取接收數(shù)據(jù)MOVMOV R0 R0,A A ;保存數(shù)據(jù);保存數(shù)據(jù)INCINC R0 R0 ;準備下一次接收;準備下一次接收RETIRETI 編程使乙機從甲機接收編程使乙機從甲機接收1616個字節(jié)數(shù)據(jù)塊,并存入個字節(jié)數(shù)
54、據(jù)塊,并存入片外片外3000H3000H300FH300FH單元。接收過程中要求判奇偶校驗單元。接收過程中要求判奇偶校驗標志標志RB8RB8。若出錯則置。若出錯則置F0F0標志為標志為1 1,若正確則置,若正確則置F0F0標志標志為為0 0,然后返回。,然后返回。 編程把甲機片內編程把甲機片內RAM50HRAM50H5FH5FH單元中的數(shù)據(jù)塊從串單元中的數(shù)據(jù)塊從串行口輸出。定義在方式行口輸出。定義在方式3 3下發(fā)送,下發(fā)送,TB8TB8作奇偶校驗位。作奇偶校驗位。采用定時器采用定時器1 1方式方式2 2作波特率發(fā)生器,波特率為作波特率發(fā)生器,波特率為12001200波波特,特,foscfosc
55、11110592MHz0592MHz,預置值,預置值TH1TH10E80E8H H。4.4.雙機通信編程實例雙機通信編程實例發(fā)送子程序如下:發(fā)送子程序如下: MOVTMOD,#20H ;設置定時器1為方式2 MOVTL1,0E8H ;設預置值 MOVTH1,0E8H SETBTRI ;啟動定時器1 MOVSCON,0C0H ;設置串行口為方式3 MOVPCON,00H ;SMOD0 MOVR0,#50H ;設數(shù)據(jù)塊指針 MOVR7,10H ;設數(shù)據(jù)長度10HTRS: MOVA,R0 ;取數(shù)據(jù)送至A MOVC,P MOVTB8,C ;奇偶位P送至TB8 MOVSBUF,A ;啟動發(fā)送WAIT:JNBTI,WAIT ;判1幀是否發(fā)送完 CLRTI INCR0 ;更新數(shù)據(jù)單元 DJN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蕪湖安徽蕪湖鳩江區(qū)公辦托育園教職工招聘16人筆試歷年參考題庫附帶答案詳解
- 胸腔積液護理診斷
- 電動摩托采購合同范本
- 拉薩購房合同范本
- 嬰幼兒炎癥性疾病宋賀嬰幼兒醫(yī)學基礎課件
- 實木整裝定制合同范本
- 2025至2030年中國異形玻璃瓶數(shù)據(jù)監(jiān)測研究報告
- (完整)家政服務合同小時工合同
- 2025至2030年中國夾漿機數(shù)據(jù)監(jiān)測研究報告
- 快遞追蹤客服合同范本
- 初中物理競賽及自主招生講義:第7講 密度、壓強與浮力(共5節(jié))含解析
- 高中主題班會 梁文鋒和他的DeepSeek-由DeepSeek爆火開啟高中第一課-高中主題班會課件
- 污水處理設施運維服務投標方案(技術標)
- 一年級下冊書法教案 (一)
- 《浙江省應急管理行政處罰裁量基準適用細則》知識培訓
- 2024年全國職業(yè)院校技能大賽高職組(康復治療技術賽項)考試題庫(含答案)
- 2025年山東健康集團招聘筆試參考題庫含答案解析
- 《中外廣播電視史》課件
- 2024年八年級語文下冊《經(jīng)典常談》第一章《說文解字》練習題卷附答案
- 華為基建項目管理手冊
- 三年級數(shù)學下冊單元計劃【9個單元全】
評論
0/150
提交評論