版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、鄭州大學(xué)3.3 MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器 3.3.1 定時(shí)器/計(jì)數(shù)器 1基本概念(1)計(jì)數(shù):計(jì)數(shù)是指對(duì)外部事件的個(gè)數(shù)進(jìn)行計(jì)量。其實(shí)質(zhì)就是對(duì)外部輸入脈沖的個(gè)數(shù)進(jìn)行計(jì)量。實(shí)現(xiàn)計(jì)數(shù)功能的器件稱為計(jì)數(shù)器。(2)定時(shí):8051單片機(jī)中的定時(shí)器和計(jì)數(shù)器是一個(gè)部件,只不過計(jì)數(shù)器記錄的是外界發(fā)生的事件,而定時(shí)器則是由單片機(jī)內(nèi)部提供一個(gè)非常穩(wěn)定的計(jì)數(shù)源進(jìn)行定時(shí)的。這個(gè)計(jì)數(shù)源是由單片機(jī)的晶振經(jīng)過12分頻后獲得的一個(gè)脈沖源。所以定時(shí)器計(jì)數(shù)脈沖的時(shí)間間隔與晶振有關(guān)。docin/sundae_meng鄭州大學(xué)(3)定時(shí)的種類 軟件定時(shí):利用執(zhí)行一個(gè)循環(huán)程序進(jìn)行時(shí)間延遲。其特點(diǎn)是定時(shí)時(shí)間精確,不需外加硬件電路,
2、但占用CPU時(shí)間。因此軟件定時(shí)的時(shí)間不宜過長(zhǎng)。 硬件定時(shí):利用硬件電路實(shí)現(xiàn)定時(shí)。其特點(diǎn)是不占用CPU時(shí)間,通過改變電路元器件參數(shù)來調(diào)節(jié)定時(shí),但使用不夠靈活方便。對(duì)于時(shí)間較長(zhǎng)的定時(shí),常用硬件電路來實(shí)現(xiàn)。 可編程定時(shí)器:通過專用的定時(shí)器/計(jì)數(shù)器芯片實(shí)現(xiàn)。其特點(diǎn)是通過對(duì)系統(tǒng)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)實(shí)現(xiàn)定時(shí),定時(shí)時(shí)間可通過程序設(shè)定的方法改變,使用靈活方便。也可實(shí)現(xiàn)對(duì)外部脈沖的計(jì)數(shù)功能。docin/sundae_meng鄭州大學(xué) MCS-51單片機(jī)內(nèi)部有兩個(gè)16位可編程的定時(shí)器/計(jì)數(shù)器,簡(jiǎn)稱為T0和T1,均可作定時(shí)器用也可計(jì)數(shù)器,它們均是二進(jìn)制加法計(jì)數(shù)器,當(dāng)計(jì)數(shù)器計(jì)滿回零時(shí)能自動(dòng)產(chǎn)生溢出中斷請(qǐng)求,表示定時(shí)時(shí)間已
3、到或計(jì)數(shù)已終止。適用于定時(shí)控制、延時(shí)、外部計(jì)數(shù)和檢測(cè)等。計(jì)數(shù)器:對(duì)引腳T0(P 3.4 )和T1(P3.5.)輸入的外部脈沖信號(hào)計(jì)數(shù),當(dāng)輸入脈沖信號(hào)從1到0的負(fù)跳變時(shí),計(jì)數(shù)器就自動(dòng)加1。計(jì)數(shù)的最高頻率一般為振蕩頻率的1/24。定時(shí)器:對(duì)系統(tǒng)晶振振蕩脈沖的12分頻輸出進(jìn)行計(jì)數(shù)。 (1)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)組成:16位加法計(jì)數(shù)器、工作方式寄存器TMOD和控制寄存器TCON。 T0: TL0(低8位)和TH0(高8位) T1: TL1(低8位)和TH1(高8位)2MCS-51內(nèi)部定時(shí)器/計(jì)數(shù)器 docin/sundae_meng鄭州大學(xué) 8051單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)如下圖所示。docin
4、/sundae_meng鄭州大學(xué)(2)控制寄存器TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF0/TF1:T0/1計(jì)數(shù)溢出標(biāo)志位??捎糜谏暾?qǐng)中斷或供CPU查詢。在進(jìn)入中斷服務(wù)程序時(shí)會(huì)自動(dòng)清零;但在查詢方式時(shí)必須軟件清零。 =1 :計(jì)數(shù)溢出; =0 :計(jì)數(shù)未滿。TR0/TR1:T0/1啟??刂莆?。 =1 :?jiǎn)?dòng)計(jì)數(shù); =0: 停止計(jì)數(shù)。IE0/IE1和IT0/IT1:用于管理外部中斷(前面已介紹過)。docin/sundae_meng鄭州大學(xué) M1,M0:工作方式選擇位 。 =00:13位定時(shí)器/計(jì)數(shù)器; =01:16位定時(shí)器/計(jì)數(shù)器(常用); =10:
5、可自動(dòng)重裝的8位定時(shí)器/計(jì)數(shù)器(常用); =11:T0 分為2個(gè)8位定時(shí)器/計(jì)數(shù)器;僅適用于T0。 C/T :定時(shí)方式/計(jì)數(shù)方式選擇位。 = 1:選擇計(jì)數(shù)器工作方式,對(duì)T0/T1引腳輸入的外部事件的負(fù)脈沖計(jì)數(shù); = 0 :選擇定時(shí)器工作方式,對(duì)機(jī)器周期脈沖計(jì)數(shù)定時(shí)。 如下頁圖所示。(3)工作方式寄存器TMOD GATE C / T M1 M0 GATE C / T M1 M0T1T2docin/sundae_meng鄭州大學(xué)GATE:門控位,定時(shí)器/計(jì)數(shù)器的啟/??捎绍浖c硬件兩者控制 = 0 :軟件控制,只由TCON中的啟/停控制位TR0/TR1控制定時(shí)器/計(jì)數(shù)器的啟/停。 = 1 :硬件控
6、制,由外部中斷請(qǐng)求信號(hào) / 和TCON中的啟/??刂莆籘R0/TR1組合狀態(tài)控制定時(shí)器/計(jì)數(shù)器的啟/停。 其控制邏輯如下圖所示。docin/sundae_meng鄭州大學(xué)3.3.2 定時(shí)器/計(jì)數(shù)器的工作方式 8051單片機(jī)的定時(shí)器/計(jì)數(shù)器共有四種工作模式,現(xiàn)以T0為例加以介紹,T1與T0的工作原理相同,但方式3下T1停止計(jì)數(shù)。方式(如F0)和用戶定義名稱等幾種方式。1工作方式0( M1M0=00 ,13位定時(shí)器/計(jì)數(shù)器) 由TH0的全部8位和TL0的低5位( TL0的高3位未用)構(gòu)成13位加1計(jì)數(shù)器,當(dāng)TL0低5位計(jì)數(shù)滿時(shí)直接向TH0進(jìn)位,并當(dāng)全部13位計(jì)數(shù)滿溢出時(shí),溢出標(biāo)志位TF0置“1”。
7、2工作方式1 ( M1M0=01 ,16位定時(shí)器/計(jì)數(shù)器) 由TH0和TL0構(gòu)成16位加1計(jì)數(shù)器,其他特性與工作方式0相同。3工作方式2 ( M1M0=10 ,自動(dòng)重裝計(jì)數(shù)初值的8位定時(shí)器/計(jì)數(shù)器) 16位定時(shí)器/計(jì)數(shù)器被拆成兩個(gè)8位寄存器TH0和TL0,CPU在對(duì)它們初始化時(shí)必須裝入相同的定時(shí)器/計(jì)數(shù)器初值。以TL0作計(jì)數(shù)器,而TH0作為預(yù)置寄存器。當(dāng)計(jì)數(shù)滿溢出時(shí),TF0置“1”,同時(shí)TH0將計(jì)數(shù)初值以硬件方法自動(dòng)裝入TL0。這種工作方式很適合于那些重復(fù)計(jì)數(shù)的應(yīng)用場(chǎng)合(如串行數(shù)據(jù)通信的波特率發(fā)生器)。docin/sundae_meng鄭州大學(xué)4工作方式3 ( M1M0=11 , 2個(gè)8位定時(shí)
8、器/計(jì)數(shù)器,僅適用于T0)TL0:8位定時(shí)器/計(jì)數(shù)器,使用T0原有控制資源TR0和TF0,其功能和操作與方式0或方式1完全相同。TH0:只能作為8位定時(shí)器,借用T1的控制位TR1和TF1,只能對(duì)片內(nèi)機(jī)器周期脈沖計(jì)數(shù)。 在方式3模式下,定時(shí)器/計(jì)數(shù)器0可以構(gòu)成兩個(gè)定時(shí)器或者一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器。 T0方式3下的T1方式2,因定時(shí)初值能自動(dòng)恢復(fù),用作波特率發(fā)生器更為合適。docin/sundae_meng鄭州大學(xué) 定時(shí)器/計(jì)數(shù)器可按片內(nèi)機(jī)器周期定時(shí),也可對(duì)由T0/T1引腳輸入一個(gè)負(fù)脈沖進(jìn)行加法計(jì)數(shù)。在應(yīng)用時(shí),其工作方式和工作過程均可通過程序設(shè)定和控制,因此,定時(shí)器/計(jì)數(shù)器在工作前必須先對(duì)其進(jìn)行初
9、始化,計(jì)算和設(shè)置初值。 1. 定時(shí)器T0/T1 中斷申請(qǐng)過程 (1)在已經(jīng)開放T0/T1中斷允許且已被啟動(dòng)的前提下,T0/T1加1計(jì)滿溢出時(shí) TF0/TF1標(biāo)志位自動(dòng)置“1” ; (2)CPU 檢測(cè)到TCON中TF0/TF1變“1”后,將產(chǎn)生指令:LCALL 000BH/LCALL 001BH 執(zhí)行中斷服務(wù)程序; (3)TF0/TF1標(biāo)志位由硬件自動(dòng)清“0”,以備下次中斷申請(qǐng)。3.3.3 定時(shí)器/計(jì)數(shù)器的應(yīng)用 docin/sundae_meng鄭州大學(xué)2. 定時(shí)器/計(jì)數(shù)器初始化的步驟 (1)寫TMOD,設(shè)置定時(shí)器/計(jì)數(shù)器的工作方式; (2)計(jì)算定時(shí)器/計(jì)數(shù)器的初值,寫入TH0/TH1、TL0/
10、TL1。 (3)設(shè)置IE、IP,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級(jí)。 3. 定時(shí)器/計(jì)數(shù)器的定時(shí)器/計(jì)數(shù)器范圍 (1)工作方式0:13位定時(shí)器/計(jì)數(shù)器方式 最大計(jì)數(shù)值= 213 = 8192 (2)工作方式1:16位定時(shí)器/計(jì)數(shù)器方式 最大計(jì)數(shù)值= 216 = 65536 (3)工作方式2和工作方式3:8位的定時(shí)器/計(jì)數(shù)器方式因此, 最大計(jì)數(shù)值= 28 = 256 docin/sundae_meng鄭州大學(xué)3. 計(jì)數(shù)器初值的計(jì)算 方法:用最大計(jì)數(shù)量減去需要的計(jì)數(shù)次數(shù)。即: TC=MC 其中:TC計(jì)數(shù)器需要預(yù)置的初值; M計(jì)數(shù)器的模值(最大計(jì)數(shù)值); 方式0時(shí),M=213;方式1時(shí),M=216;方
11、式2, 3時(shí),M=28; C計(jì)數(shù)器計(jì)滿回0所需的計(jì)數(shù)值,即設(shè)計(jì)任務(wù)要求的計(jì)數(shù)值。例如:流水線上一個(gè)包裝是12盒,要求每到12盒就產(chǎn)生一個(gè)動(dòng)作,用單片機(jī)的工作方式0來控制,則應(yīng)當(dāng)預(yù)置的初值為: TC = M C = 213 12=8180docin/sundae_meng鄭州大學(xué)4. 定時(shí)器初值的計(jì)算 定時(shí)時(shí)間的計(jì)算公式為: T=(MTC)T0 (或TC=MT/T0 )其中:T定時(shí)器的定時(shí)時(shí)間,即設(shè)計(jì)任務(wù)要求的定時(shí)時(shí)間; T0計(jì)數(shù)器計(jì)數(shù)脈沖的周期,即單片機(jī)系統(tǒng)主頻周期的12倍; M計(jì)數(shù)器的模值; TC定時(shí)器需要預(yù)置的初值。 若設(shè)初值TC=0,則定時(shí)器定時(shí)時(shí)間為最大。若設(shè)單片機(jī)系統(tǒng)主頻為12MHz
12、,則各種工作方式定時(shí)器的最大定時(shí)時(shí)間為:工作方式0: Tmax=2131s=8.192ms工作方式1: Tmax=2161s=65.536ms工作方式2和3:Tmax=281s=0.256msdocin/sundae_meng鄭州大學(xué)例設(shè)外部有一個(gè)脈沖源。編制程序,對(duì)外部脈沖源進(jìn)行計(jì)數(shù)并顯示。解:將外部計(jì)數(shù)源連到引腳T1上,可用LED將計(jì)數(shù)的值顯示出來,我們用P1口連接的8個(gè)LED來顯示計(jì)到的數(shù)據(jù)。程序如下: ORG 0000H AJMP START; 轉(zhuǎn)入主程序 ORG 0030H START: MOV SP, #60H; 設(shè)置堆棧指針 MOV TMOD, #60H; 定時(shí)器/計(jì)數(shù)器1作計(jì)數(shù)
13、用 01100000B MOV TL1,#00H MOV TH1,#00H SETB TR1 ; 啟動(dòng)計(jì)數(shù)器1開始運(yùn)行 LOOP: MOV A, TL1 ; 讀計(jì)數(shù)器1的計(jì)數(shù)值送A MOV P1, A ; 將計(jì)數(shù)值輸出到P1口,驅(qū)動(dòng)LED顯示 AJMP LOOP ; 轉(zhuǎn)回LOOP END5. 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例docin/sundae_meng鄭州大學(xué) P126 例3.6 設(shè)一只發(fā)光二極管LED和8051的P1.0腳相連。當(dāng)P1.0腳是高電平時(shí),LED不亮;當(dāng)P1.0腳是低電平時(shí),LED亮。編制程序用定時(shí)器來實(shí)現(xiàn)發(fā)光二極管LED的閃爍功能。已知單片機(jī)系統(tǒng)主頻為12MHz。解:設(shè)置LED每6
14、0ms閃爍1次。選擇定時(shí)器/計(jì)數(shù)器0工作在方式1。此時(shí)定時(shí)器對(duì)系統(tǒng)主頻的12分頻脈沖計(jì)數(shù)。T0=1微秒, TC=M-T/T0=5536=15A0Hdocin/sundae_meng鄭州大學(xué)方法1:用查詢方式 ORG 0000H MOV TH0,#15H AJMP START MOV TL0,#0A0H ORG 0030H SETB TR0START:MOV SP,#60H AJMP LOOP MOV P1,#0FFH END MOV TMOD,#01H ;00000001 MOV TH0,#15H MOV TL0,#0A0H SETB TR0LOOP: JBC TF0,NEXT AJMP LO
15、OPNEXT: CPL P1.0docin/sundae_meng鄭州大學(xué)方法2:用中斷方式實(shí)現(xiàn) ORG 0000H TIME0:PUSH ACC AJMP START PUSH PSW ORG 000BH CPL P1.0 AJMP TIME0 MOV TH0,#15H ORG 0030H MOV TL0,#0A0HSTART:MOV SP,#60H SETB TR0 MOV P1,#0FFH POP PSW MOV TMOD,#01H POP ACC MOV TH0,#15H RETI MOV TL0,#0A0H END SETB EA SETB ET0 SETB TR0LOOP: AJM
16、P LOOPdocin/sundae_meng鄭州大學(xué)例 設(shè)置LED每1s閃爍一次。已知單片機(jī)系統(tǒng)主頻為12MHz。解:定時(shí)器/計(jì)數(shù)器的最長(zhǎng)的定時(shí)是65.536ms,無法實(shí)現(xiàn)1s的定時(shí)??梢圆捎密浖?jì)數(shù)器來進(jìn)行設(shè)計(jì)。docin/sundae_meng鄭州大學(xué)設(shè)計(jì)思想:定義一個(gè)軟件計(jì)數(shù)器單元30H,先用定時(shí)器/計(jì)數(shù)器0做一個(gè)50ms的定時(shí)器,定時(shí)時(shí)間到了以后將軟件計(jì)數(shù)器中的值加1,如果軟件計(jì)數(shù)器計(jì)到了20,取反P1.0,并清掉軟件計(jì)數(shù)器中的值,否則直接返回。則完成了20次定時(shí)中斷才取反一次P1.0,因此定時(shí)時(shí)間就為2050=1000ms=1s。定時(shí)器/計(jì)數(shù)器0采用工作方式1,其初值為: 2165
17、0ms/1s=6553650000=15536=3CB0H電路圖如下:docin/sundae_meng鄭州大學(xué)程序如下: ORG 0000H AJMP START ; 轉(zhuǎn)入主程序 ORG 000BH ; 定時(shí)器/計(jì)數(shù)器0的中斷服務(wù)程序入口地址 AJMP TIME0 ; 跳轉(zhuǎn)到真正的定時(shí)器中斷服務(wù)程序處 ORG 0030H START: MOV SP, #60H ; 設(shè)置堆棧指針 MOV P1, #0FFH ; 關(guān)發(fā)光二極管LED(使其滅) MOV 30H, #00H ; 軟件計(jì)數(shù)器預(yù)清0 MOV TMOD, # 01H ; 定時(shí)器/計(jì)數(shù)器0工作于方式1 MOV TH0, #3CH ; 設(shè)置定
18、時(shí)器/計(jì)數(shù)器的初值 MOV TL0, #0B0H SETB EA ; 開總中斷允許 SETB ET0 ; 開定時(shí)器/計(jì)數(shù)器0中斷允許 SETB TR0; 啟動(dòng)定時(shí)器/計(jì)數(shù)器0 LOOP: AJMP LOOP ; 循環(huán)等待(真正工作時(shí),這里可寫任意其他程序)docin/sundae_meng鄭州大學(xué)定時(shí)器/計(jì)數(shù)器0的中斷服務(wù)程序如下: TIME0: PUSH ACC ; 將PSW和ACC推入堆棧保護(hù) PUSH PSW INC 30H ; 軟件計(jì)數(shù)器加1 MOV A, 30H CJNE A, #20, T_LP2; 軟件計(jì)數(shù)器單元中的值到了20了嗎? 到了,繼續(xù)執(zhí)行; 否則,轉(zhuǎn)入T_LP2 T_L
19、P1: CPL P1.0 ; 到了,P1.0取反 MOV 30H, #00H; 清軟件計(jì)數(shù)器 T_LP2: MOV TH0, #3CH; 重置定時(shí)器/計(jì)數(shù)器的初值 MOV TL0, #0B0H POP PSW ; 恢復(fù)PSW和ACC POP ACC RETI; 中斷返回 ENDdocin/sundae_meng鄭州大學(xué)3.4 MCS-51 單片機(jī)的串行通信 3.4.1 概述1.通信 通信:?jiǎn)纹瑱C(jī)與外界進(jìn)行信息交換統(tǒng)稱為通信。8051單片機(jī)的通信方式有兩種:并行通信:數(shù)據(jù)的各位同時(shí)發(fā)送或接收。特點(diǎn)是傳送速度快、效率高,但成本高。適用于短距離傳送數(shù)據(jù)。計(jì)算機(jī)內(nèi)部的數(shù)據(jù)傳送一般均采用并行方式。串行通
20、信:數(shù)據(jù)一位一位順序發(fā)送或接收。特點(diǎn)是傳送速度慢,但成本低。適用于較長(zhǎng)距離傳送數(shù)據(jù)。計(jì)算機(jī)與外界的數(shù)據(jù)傳送一般均采用串行方式。 docin/sundae_meng鄭州大學(xué)2. 數(shù)據(jù)通信的制式單工方式:數(shù)據(jù)僅按一個(gè)固定方向傳送;半雙工方式:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行;全雙工方式:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送;多工方式:在同一線路上實(shí)現(xiàn)資源共享。 3. 串行通信的分類 串行數(shù)據(jù)通信按數(shù)據(jù)傳送方式可分為異步通信和同步通信兩種形式:同步方式:以數(shù)據(jù)塊為單位進(jìn)行數(shù)據(jù)傳送,包括同步字符、數(shù)據(jù)塊和校驗(yàn)字符CRC。優(yōu)點(diǎn)是數(shù)據(jù)傳輸速率較高,缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格同步。數(shù)據(jù)格式如下圖所示。
21、docin/sundae_meng鄭州大學(xué)異步方式:以字符為單位進(jìn)行數(shù)據(jù)傳送,每一個(gè)字符均按固定的字符格式傳送,又被稱為幀。優(yōu)點(diǎn)是不需要傳送同步脈沖,可靠性高,所需設(shè)備簡(jiǎn)單;缺點(diǎn)是字符幀中因包含有起始位和停止位而降低了有效數(shù)據(jù)的傳輸速率。數(shù)據(jù)格式如下圖所示:docin/sundae_meng鄭州大學(xué)4. 串行數(shù)據(jù)通信的波特率 波特率是指每秒鐘傳送信號(hào)的數(shù)量,單位為波特(Baud)。而每秒鐘傳送二進(jìn)制數(shù)的信號(hào)數(shù)(即二進(jìn)制數(shù)的位數(shù))定義為比特率,單位是bps(bit per second)或?qū)懗蒪/s(位/秒)。 在單片機(jī)串行通信中,傳送的信號(hào)是二進(jìn)制信號(hào),波特率與比特率數(shù)值上相等。單位采用bps
22、。例如,異步串行通信的數(shù)據(jù)傳送的速率是120字符/秒,而每個(gè)字符規(guī)定包含10位數(shù)字,則傳輸波特率為: 120字符/秒 10位/字符=1200位/秒= 1200bpsdocin/sundae_meng鄭州大學(xué)3.4.2 MCS-51的串行口 MCS-51單片機(jī)內(nèi)部有一個(gè)全雙工的串行通信口(P3.0、P3.1) ,既可作UART(通用異步接收/發(fā)送器)用,也可作同步移位寄存器使用,還可用于網(wǎng)絡(luò)通信,其幀格式可有8位、10位和11位,并能設(shè)置各種波特率。1串行口寄存器結(jié)構(gòu) (1)兩個(gè)物理上獨(dú)立的同名的接收/發(fā)送緩沖寄存器SBUF 指令 MOV SBUF,A 啟動(dòng)一次數(shù)據(jù)發(fā)送, 指令 MOV A,SB
23、UF 完成一次數(shù)據(jù)接收, 即向發(fā)送緩沖器SBUF寫入數(shù)據(jù)即可發(fā)送數(shù)據(jù),從接收緩沖器SBUF讀出數(shù)據(jù)即可接收數(shù)據(jù)。 (2)輸入和輸出移位寄存器和控制器等組成。 (3)2個(gè)SFR寄存器SCON和PCON,用于串行口的初始化編程。 (4)接收/發(fā)送數(shù)據(jù),無論是否采用中斷方式工作,每接收/發(fā)送一個(gè)數(shù)據(jù)都必須用指令對(duì) RI/TI 清0,以備下一次收/發(fā)。docin/sundae_meng鄭州大學(xué) SBUF(發(fā))SBUF(收)發(fā)送控制器 TI接收控制器 RI移位寄存器波特率發(fā)生器T11A累加器(門)移位寄存器RxD(P3.0)TxD(P3.1)去申請(qǐng)中斷引腳引腳CPU內(nèi)部 MCS-51串行口的結(jié)構(gòu)如下圖所
24、示:docin/sundae_meng鄭州大學(xué)2. 串行通信控制寄存器SCON (98H)SM0 SM1 SM2 REN TB8 RB8 TI R1SM0,SM1:串行口4種工作方式控制位。 =00:方式0,8位同步移位寄存器,其波特率為fosc/12; =01:方式1,10位UART,其波特率為可變,由定時(shí)器控制; =10:方式2,11位UART,其波特率為fosc/64或fosc/32; =11:方式3,11位UART,其波特率為可變,由定時(shí)器控制。 其中:fosc為系統(tǒng)晶振頻率。RI,TI:串行口收/發(fā)數(shù)據(jù)申請(qǐng)中斷標(biāo)志位 1 申請(qǐng)中斷; 0 不申請(qǐng)中斷。docin/sundae_meng
25、鄭州大學(xué)RB8:在方式2、3中,用于存放收到的第9位數(shù)據(jù);在雙機(jī)通信中,作為奇偶校驗(yàn);在多機(jī)通信中,用作區(qū)別地址幀/數(shù)據(jù)幀的標(biāo)志。TB8:方式2、3中,是要發(fā)送的第9位數(shù)據(jù);在雙機(jī)通信中,用于對(duì)接收到的數(shù)據(jù)進(jìn)行奇偶校驗(yàn);在多機(jī)通信中,用作判斷地址幀/數(shù)據(jù)幀,TB8=0 表示發(fā)送的是數(shù)據(jù),TB8=1 表示發(fā)送的是地址。REN:串行口接收允許控制位 = 1: 表示允許接收; = 0: 禁止接收。SM2:串行口多機(jī)通信控制位,作為方式2、方式3的附加控制位。docin/sundae_meng鄭州大學(xué)3. 中斷允許寄存器IE(0A8H) 中斷允許寄存器IE在3.2.2節(jié)中已介紹。其中對(duì)串行口有影響的位
26、ES。ES為串行中斷允許控制位。 ES=1:允許串行中斷; ES=0:禁止串行中斷。 4. 電源管理寄存器PCON(87H) 不可位尋址。 PCON主要用于實(shí)現(xiàn)電源控制而設(shè)置的專用寄存器,已在1.3.3節(jié)中介紹過。其格式如下圖所示。SMOD GF1 GF0 PD 1DLSMOD:串行口波特率倍增位 =1:串行口波特率加倍。 =0:串行口波特率不變,系統(tǒng)復(fù)位時(shí)默認(rèn)SMOD=0。docin/sundae_meng鄭州大學(xué)3.4.3 串行口的工作方式 1. 工作方式0( 8位移位寄存器I/O方式)發(fā)送/接收過程:SBUF中的串行數(shù)據(jù)由RxD逐位移出/移入(低位在先,高位在后);TxD輸出移位時(shí)鐘,頻
27、率=fosc1/12;每送出/接收8位數(shù)據(jù) TI/ RI自動(dòng)置1;需要用軟件清零 TI/ RI 。注意:串行口在方式0下的工作并非是一種同步通信方式,經(jīng)常配合“串入并出”“并入串出”移位寄存器一起使用,以達(dá)到擴(kuò)展一個(gè)并行口的目的。 擴(kuò)展電路如下圖所示。docin/sundae_meng鄭州大學(xué)如要發(fā)送數(shù)據(jù),查詢方式的程序如下: MOV SCON,#00H ;串行口方式0 MOV SBUF,A ;將數(shù)據(jù)送出 JNB TI,$ ;等待數(shù)據(jù)發(fā)送完畢 CLR TI ;為下次發(fā)送作準(zhǔn)備注意:復(fù)位時(shí),SCON 已經(jīng)被清零,缺省值為方式0。發(fā)送條件:TI=0。接收條件:TI=0,置位 REN=1 (允許接收
28、數(shù)據(jù))。2. 方式1 (波特率可變的10位異步通信方式 )發(fā)送/接收數(shù)據(jù)的格式:一幀信息包括1個(gè)起始位0,8個(gè)數(shù)據(jù)位和1個(gè)停止位1。發(fā)送/接收過程:SBUF中的串行數(shù)據(jù)由RXD逐位移出/移入;TXD輸出移位時(shí)鐘,頻率= (2SMOD/32)T1的溢出率,波特率可變。每送出/接收8位數(shù)據(jù) TI/ RI自動(dòng)置1;需要用軟件清零 TI/ RI 。工作時(shí),發(fā)送端自動(dòng)添加一個(gè)起始位和一個(gè)停止位;接收端自動(dòng)去掉一個(gè)起始位和一個(gè)停止位。發(fā)送/接收條件:同方式0。docin/sundae_meng鄭州大學(xué)3. 方式2(固定波特率的11位異步接收/發(fā)送方式)發(fā)送/接收過程:方式2的接收/發(fā)送過程類似于方式1,所
29、不同的是它比方式1增加了一位“第9位”數(shù)據(jù)(TB8/RB8),用于“奇偶校驗(yàn)”。方式2常用于單片機(jī)間通信。波特率 = fosc 2SMOD/64 。發(fā)送/接收條件:同方式0。4. 方式3(可變波特率的11位異步接收/發(fā)送方式) 方式3和方式2唯一的區(qū)別是波特率機(jī)制不同,方式3的波特率=(2SMOD/32)T1的溢出率。docin/sundae_meng鄭州大學(xué)奇偶校驗(yàn):奇偶校驗(yàn)是檢驗(yàn)串行通信雙方傳輸?shù)臄?shù)據(jù)正確與否的一個(gè)措施,并不能保證通信數(shù)據(jù)的傳輸一定正確。即如果奇偶校驗(yàn)發(fā)生錯(cuò)誤,表明數(shù)據(jù)傳輸一定出錯(cuò)了;如果奇偶校驗(yàn)沒有出錯(cuò),絕不等于數(shù)據(jù)傳輸完全正確。奇校驗(yàn)規(guī)定:8位有效數(shù)據(jù)連同1位附加位中,
30、二進(jìn)制“1”的個(gè)數(shù)為奇數(shù)。偶校驗(yàn)規(guī)定:8位有效數(shù)據(jù)連同1位附加位中,二進(jìn)制“1”的個(gè)數(shù)為偶數(shù)。約定發(fā)送采用奇校驗(yàn):若發(fā)送的8位有效數(shù)據(jù)中“1”的個(gè)數(shù)為偶數(shù),則要人為在附加位中添加一個(gè)“1”一起發(fā)送;若發(fā)送的8位有效數(shù)據(jù)中“1”的個(gè)數(shù)為奇數(shù),則要人為在附加位中添加一個(gè)“0”一起發(fā)送。約定接收采用奇校驗(yàn):若接收到的9位數(shù)據(jù)中“1”的個(gè)數(shù)為奇數(shù),則表明接收正確,取出8位有效數(shù)據(jù)即可;若接收到的9位數(shù)據(jù)中“1”的個(gè)數(shù)為偶數(shù),則表明接收出錯(cuò)!應(yīng)當(dāng)進(jìn)行出錯(cuò)處理。 采用偶校驗(yàn)時(shí),處理方法與奇校驗(yàn)類似。docin/sundae_meng鄭州大學(xué)3.4.4 串行口的通信波特率 串行口的通信波特率恰到好處地反映了
31、串行傳輸數(shù)據(jù)的速率。在MCS-51串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時(shí)器T1的溢出率(T1溢出信號(hào)的頻率)控制。各種方式的通信波特率如下:方式0:波特率固定為fosc/12。 其中:fosc系統(tǒng)主機(jī)晶振頻率方式2:波特率由PCON中的選擇位SMOD來決定,可由下式表示: 波特率=(2SMOD/64)fosc 方式1和方式3:波特率是可變的,由定時(shí)器T1的溢出率控制。波特率為: 波特率=(2SMOD/32)定時(shí)器T1溢出率 T1溢出率=T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期 = (fosc/12)/(2KTC) 其中:K定時(shí)器T1的位數(shù),定時(shí)器T1用作
32、波特率發(fā)生器時(shí),通常工作在方式2, 所以T1的溢出所需的周期數(shù)= 28TC。 TC定時(shí)器T1的預(yù)置初值。docin/sundae_meng鄭州大學(xué) 下表列出了定時(shí)器T1工作于方式2的常用波特率及初值。 docin/sundae_meng鄭州大學(xué)3.4.5 串行口的應(yīng)用 1串口方式0應(yīng)用編程 例題6 用8051串行口外接CD4094擴(kuò)展8位并行輸出口,8位并行口的各位都接一個(gè)發(fā)光二極管,要求發(fā)光二極管呈流水燈狀態(tài)(輪流點(diǎn)亮)。 解:硬件連接電路如下圖所示。docin/sundae_meng鄭州大學(xué) 在開始通信之前,應(yīng)先對(duì)控制寄存器SCON進(jìn)行初始化。將00H送SCON即設(shè)置方式0。數(shù)據(jù)傳送采用查
33、詢方式,通過查詢TI的狀態(tài),來決定是否發(fā)送下一幀數(shù)據(jù)。在串行接收時(shí),通過對(duì)RI查詢來確定何時(shí)接收下一幀數(shù)據(jù)。程序如下: ORG 1000H START: MOV SCON, #00H; 置串行口工作方式0 MOV A, #80H ; 最高位燈先亮 CLR P1.0 ; 關(guān)閉并行輸出 OUT0: MOV SBUF, A ; 開始串行輸出 OUT1: JNB TI, OUT1; 輸出完否?未完,等待;完了,繼續(xù)執(zhí)行 CLR TI ; 完了,清TI標(biāo)志,以備下次發(fā)送 docin/sundae_meng鄭州大學(xué) SETB P1.0; 打開并行口輸出 ACALL DELAY; 延時(shí)一段時(shí)間 RR A ;
34、 循環(huán)右移 CLR P1.0; 關(guān)閉并行輸出 SJMP OUT0 ; 循環(huán) DELAY: MOV R7, #250 ; 延時(shí)子程序 D1: MOV R6, #250 D2: DJNZ R6, D2 DJNZ R7, D1 RET ENDdocin/sundae_meng鄭州大學(xué)2雙機(jī)通信 雙機(jī)通信的硬件連接圖如下圖所示。 docin/sundae_meng鄭州大學(xué)通信協(xié)議如下: 設(shè)1號(hào)機(jī)是發(fā)送方,2號(hào)機(jī)是接收方。采用串行口方式1進(jìn)行通信,一幀信息為10位,其中有1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位;波特率為2400bps,T1工作在定時(shí)器方式2,單片機(jī)時(shí)鐘振蕩頻率選用11.0 592MHz,查表
35、3.4.3可得TH1=TL1=0F4H,PCON寄存器的SMOD位為0。 當(dāng)1號(hào)機(jī)發(fā)送時(shí),先發(fā)送一個(gè)“E1”聯(lián)絡(luò)信號(hào),2號(hào)機(jī)收到后回答一個(gè)“E2”應(yīng)答信號(hào),表示同意接收。當(dāng)1號(hào)機(jī)收到應(yīng)答信號(hào)“E2”后,開始發(fā)送數(shù)據(jù),每發(fā)送一個(gè)字節(jié)數(shù)據(jù)都要計(jì)算“校驗(yàn)和”,假定數(shù)據(jù)塊長(zhǎng)度為16個(gè)字節(jié),起始地址為40H,一個(gè)數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗(yàn)和”。2號(hào)機(jī)接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),起始地址也為40H,每接收到一個(gè)字節(jié)數(shù)據(jù)便計(jì)算一次“校驗(yàn)和”,當(dāng)收到一個(gè)數(shù)據(jù)塊后,再接收1號(hào)機(jī)發(fā)來的“校驗(yàn)和”,并將它與2號(hào)機(jī)求出的校驗(yàn)和進(jìn)行比較。若兩者相等,說明接收正確,2號(hào)機(jī)回答00H;若兩者不相等,說明接收不正確,2號(hào)
36、機(jī)回答0FFH,請(qǐng)求重發(fā)。1號(hào)機(jī)接到00H后結(jié)束發(fā)送。若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。程序框圖如下頁圖所示。docin/sundae_meng鄭州大學(xué)docin/sundae_meng鄭州大學(xué) 發(fā)送程序如下: ORG 1000H ASTART: CLR EA MOV TMOD, #20H; 定時(shí)器1置為方式2 MOV TH1, #0F4H; 裝載定時(shí)器初值,波特率2400 MOV TL1, #0F4H MOV PCON, #00H SETB TR1; 啟動(dòng)定時(shí)器 MOV SCON, #50H ; 設(shè)定串口方式1,且準(zhǔn)備接收應(yīng)答信號(hào) ALOOP1: MOV SBUF, #0E1H ; 發(fā)聯(lián)
37、絡(luò)信號(hào) JNB TI, $; 等待一幀發(fā)送完畢 CLR TI ; 允許再發(fā)送 JNB RI, $; 等待2號(hào)機(jī)的應(yīng)答信號(hào) CLR RI ; 允許再接收 MOV A, SBUF ; 2號(hào)機(jī)應(yīng)答后,讀至A XRL A, #0E2H; 判斷2號(hào)機(jī)是否準(zhǔn)備完畢 JNZ ALOOP1; 2號(hào)機(jī)未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò) docin/sundae_meng鄭州大學(xué) ALOOP2: MOV R0, #40H; 2號(hào)機(jī)準(zhǔn)備好,設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7, #10H; 設(shè)定數(shù)據(jù)塊長(zhǎng)度初值 MOV R6, #00H; 清校驗(yàn)和單元 ALOOP3: MOV SBUF, R0 ; 發(fā)送一個(gè)數(shù)據(jù)字節(jié) MOV A, R
38、6 ADD A, R0 ; 求校驗(yàn)和 MOV R6, A; 保存校驗(yàn)和 INC R0 JNB TI, $ CLR TI DJNZ R7, ALOOP3; 整個(gè)數(shù)據(jù)塊是否發(fā)送完畢 MOV SBUF, R6; 發(fā)送校驗(yàn)和 JNB TI, $ CLR TI JNB RI, $; 等待2號(hào)機(jī)的應(yīng)答信號(hào) CLR RI MOV A, SBUF; 2號(hào)機(jī)應(yīng)答,讀至A JNZ ALOOP2 ; 2號(hào)機(jī)應(yīng)答“錯(cuò)誤”,轉(zhuǎn)重新發(fā)送 RET; 2號(hào)機(jī)應(yīng)答“正確”,返回 ENDdocin/sundae_meng鄭州大學(xué)接收程序如下: ORG 1000H BSTART: CLR EA MOV TMOD, #20H MOV
39、 TH1, #0F4H MO V TL1, #0F4H MOV PCON, #00H SETB TR1 MOV SCON, #50H; 設(shè)定串口方式1,且準(zhǔn)備接收 BLOOP1: JNB RI, $ ; 等待1號(hào)機(jī)的聯(lián)絡(luò)信號(hào) CLR RI MOV A, SBUF; 收到1號(hào)機(jī)信號(hào) XRL A, #0E1H; 判斷是否為1號(hào)機(jī)聯(lián)絡(luò)信號(hào) JNZ BLOOP1 ; 不是1號(hào)機(jī)聯(lián)絡(luò)信號(hào),再等待 MOV SBUF, #0E2H; 是1號(hào)機(jī)聯(lián)絡(luò)信號(hào),發(fā)應(yīng)答信號(hào) JNB TI, $ CLR TI MOV R0, #40H ; 設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7, #10H ; 設(shè)定數(shù)據(jù)塊長(zhǎng)度初值 MOV
40、R6, #00H; 清校驗(yàn)和單元docin/sundae_meng鄭州大學(xué) BLOOP2: JNB RI, $ CLR RI MOV A, SBUF MOV R0, A; 接收數(shù)據(jù)轉(zhuǎn)儲(chǔ) INC R0 ADD A, R6 ; 求校驗(yàn)和 MOV R6, A DJNZ R7, BLOOP2 ; 判斷數(shù)據(jù)塊是否接收完畢 JNB RI, $ ; 完畢,接收1號(hào)機(jī)發(fā)來的校驗(yàn)和 CLR RI MOV A, SBUF XRL A, R6 ; 比較校驗(yàn)和 JZ END1 ; 校驗(yàn)和相等,跳至發(fā)正確標(biāo)志 MOV SBUF, #0FFH ; 校驗(yàn)和不相等,發(fā)錯(cuò)誤標(biāo)志 JNB TI, $ ; 轉(zhuǎn)重新接收 CLR TI
41、 END1: MOV SBUF, #00H RET ENDdocin/sundae_meng鄭州大學(xué)3多機(jī)通信(1)硬件連接 單片機(jī)構(gòu)成的多機(jī)系統(tǒng)常使串行口工作在方式2和方式3,采用總線型主從式結(jié)構(gòu)(一個(gè)是主機(jī),其余的是從機(jī),從機(jī)要服從主機(jī)的調(diào)度、支配)。有時(shí)還要對(duì)信號(hào)進(jìn)行光電隔離、電平轉(zhuǎn)換等。在實(shí)際的多機(jī)應(yīng)用系統(tǒng)中,常采用RS-485串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)傳輸。簡(jiǎn)單的硬件連接如下圖所示(圖中沒有畫出RS-485接口)。docin/sundae_meng鄭州大學(xué)(2)通信協(xié)議主機(jī)置SM2位0,所有從機(jī)的SM2位置1,處于接收地址幀狀態(tài)。 主機(jī)發(fā)送一地址幀,其中,8位是地址,第9位為1表示該幀為地址幀。 所有從機(jī)收到地址幀后,都將接收的地址與本機(jī)的地址比較。對(duì)于地址相符的從機(jī),使自己的SM2位置0(以接收主機(jī)隨后發(fā)來的數(shù)據(jù)幀),并把本站地址發(fā)回主機(jī)作為應(yīng)答;對(duì)于地址不符的從機(jī),仍保持SM2=1,對(duì)主機(jī)隨后發(fā)來的數(shù)據(jù)幀不予理睬。從機(jī)發(fā)送數(shù)據(jù)結(jié)束后,要發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 濱州學(xué)院《英國(guó)文學(xué)史及作品選讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 畢節(jié)工業(yè)職業(yè)技術(shù)學(xué)院《機(jī)械制造裝備設(shè)計(jì)課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度2025版?zhèn)€人承包教育培訓(xùn)資源共享合同范本3篇
- 企業(yè)法人委托代理合同
- 2025版食品工廠灌裝設(shè)備研發(fā)合作合同樣本3篇
- 二手車交易合同個(gè)人簡(jiǎn)版
- 解除合同聯(lián)系函
- 郵政業(yè)務(wù)外包合同
- 大學(xué)會(huì)計(jì)實(shí)習(xí)報(bào)告范文6篇
- 2024年香精爐燈項(xiàng)目可行性研究報(bào)告
- 當(dāng)代中國(guó)外交(外交學(xué)院)知到智慧樹章節(jié)測(cè)試課后答案2024年秋外交學(xué)院
- 干燥綜合征的護(hù)理查房
- 【MOOC】財(cái)務(wù)管理-四川大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 交通管理扣留車輛拖移保管 投標(biāo)方案(技術(shù)方案)
- 培訓(xùn)班與幼兒園合作方案
- 新教材邏輯的力量-高二語文選擇性必修上冊(cè)部編版課件演講教學(xué)
- 四川省瀘州市(2024年-2025年小學(xué)四年級(jí)語文)人教版期末考試(上學(xué)期)試卷及答案
- 換床位(2023年四川自貢中考語文試卷記敘文閱讀題及答案)
- Unit 3 教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版英語七年級(jí)上冊(cè)
- 2024年江蘇省普通高中學(xué)業(yè)水平合格性考試調(diào)研學(xué)生物試題(解析版)
- 《機(jī)械制造技術(shù)基礎(chǔ)》期末考試試卷及答案
評(píng)論
0/150
提交評(píng)論