IO,中断,定时与串口课件_第1页
IO,中断,定时与串口课件_第2页
IO,中断,定时与串口课件_第3页
IO,中断,定时与串口课件_第4页
IO,中断,定时与串口课件_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I/O,中斷,定時與串口

I/O介面的作用/功能/定義數據性質不同數據協議/格式不同速度不一致所需功率/電平不匹配所需測控點數量不匹配

電腦/單片機與外設之間起橋樑作用的電路或部件——介面(interface)。

協調兩者間的差異。

本課程中講到的介面可以是口地址→可尋址的寄存器/端口地址由選用的地址線條數與地址線名決定介面與端口☞地址線條數n決定:尋址範圍=2nMCS-51尋址範圍=216=65536=64K位元組☞地址線在地址匯流排中的序名決定具體地址一個端口可能有多個口地址;一個口地址只能唯一地指向某個端口。→器件→功能模組→電路板卡→設備/裝置→……站在單片機/電腦一側來看待上述過程叫編址。站在單片機/電腦外側來看待上述過程叫解碼。介面地址的編址/解碼/尋址概念(P125):通過適當的地址線(或控制線,或I/O線),物理上形成某個或某些片選/使能等信號,實現與介面對象的一一對應的過程。通過軟體與解碼電路硬體實現對外設的片選或使能控制過程叫尋址。編址是設計過程(在先)解碼和尋址是應用過程(在後)對I/O與記憶體編址通常有兩種方式:☞

獨立編址方式:

I/O與記憶體分別編址(例如IBM-PC)☞

統一編址方式:

I/O與記憶體合在一起編址(單片機應用系統)編址有兩種方式

單片機對外部器件實現一一對應的“片選”通常要用單片機的地址匯流排A15—A0中的部分或全部,甚至也可以用某些I/O線。A15A14A13A12A11A10A9A8P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0口是低8位地址與數據複用口線選尋址與解碼尋址

(P109)A7/D7A6/D6A5/D5A4/D4A3/D3A2/D2A1/D1A0/D0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P2口是高8位地址口。P2.7P2.5P2.6P0口/CE/CE/CEP2.2-2.0RAM

(2K)

A10A9A8P2.5

RAM片選線(0000H—07FFH)P2.2,P2.1,P2.0與P0口共同尋址

2K位元組存儲單元地址範圍:XX0XX00000000000XX0XX11111111111☞

線選尋址:用一條或幾條地址線對外尋址

MCS-51單片機AD7-0D7-0D7-0Q7-0Q7-0P2.7P2.5P2.6P0口/CE/CE/CEP2.2-2.0RAM(2K)

A10A9A8P2.7

做輸出鎖存器的片選線地址範圍:0XXXXXXXXXXXXXXXMCS-51單片機AD7-0D7-0D7-0Q7-0P2.6

做輸入緩衝器的片選線地址範圍:X0XXXXXXXXXXXXXX鎖存器緩衝器(例:7FFFH)(例:0BFFFH)P2.7P2.5P2.6/CE/CE/CE常用解碼器件:

74LS138:3-8解碼器☞

解碼尋址:用地址線加解碼器件對外尋址

P0.7-P0.074LS138Y0ABCGG2AG2B0#1#2#7#+5VMCS-51Y1Y2Y7/CE74LS139:雙2-4解碼器單片機的中斷系統數據的輸入/輸出傳送方式查詢傳送方式(LOOKUP):傳送前一方先查詢另一方的狀態,若已經準備好就傳送,否則就繼續查詢/等待中斷傳送方式(IRQ):一方通過申請中斷的方式與另一方進行數據傳送無條件傳送方式:一方對另一方來說總是準備好的直接記憶體存取方式(DMA):雙方直接通過匯流排傳送數據,不經CPU中轉第五章

I/O,中斷,定時與串行通信

數據傳送的雙方平時各自做自己的工作,一旦甲方要求與乙方進行數據傳送,就主動發出信號提出申請,乙方接到申請後若同意傳送,安排好當前的工作,再回應與甲方發生數據傳送。完事後,回去繼續做打斷前的工作。中斷功能強弱是電腦性能優劣的重要標誌

提高CPU效率

解決速度矛盾

實現並行工作

應付突發事件……中斷傳送方式特點(P.128)①中斷源②中斷申請③開放中斷④保護現場⑤中斷服務⑥恢復現場⑦中斷返回中斷涉及的幾個環節(前面提到的甲方)(甲方發出信號提出申請)(乙方同意傳送)(安排好當前的工作)(回應乙方的要求)(完事後,回去……)(繼續做打斷前的工作)單片機的中斷源及TCONCPU在每個機器週期的S5P2期間,會自動查詢各個中斷申請標誌位,若查到某標誌位被置位,將啟動中斷機制。51子系列允許5個(52子系列6個)中斷源:

2個外部中斷請求:INT0,INT12個片內定時器/計數器T0和T1中斷請求:

TF0,TF1,(TF2——52子系列有T2)

1個串行口中斷請求:TI/RICPU識別中斷申請的依據:單片機的中斷源及TCONCPU在每個機器週期的S5P2期間,會自動查詢各個中斷申請標誌位,若查到某標誌位被置位,將啟動中斷機制。CPU識別中斷申請的依據:TcTsTmTmTc=1/foscTs=6TcTm=12Tc=6TsS5S6S4S3S2S5S6S4S3S2S1——此圖見P.40定時器控制寄存器TCON(88H)TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0TCONTF0/TF1:定時器溢出中斷申請標誌位:

=0:定時器未溢出;

=1:定時器溢出申請中斷,進中斷後自動清零。TR0/TR1:定時器運行啟停控制位:

=0:定時器停止運行;

=1:定時器啟動運行。TCON:Timer控制寄存器,是管理定時器工作的SFR(其中低4位管外部中斷)定時器控制寄存器TCON(88H)TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0TCONIE0/IE1:外部中斷申請標誌位:

=0:沒有外部中斷申請;

=1:有外部中斷申請。IT0/IT1:外部中斷請求的觸發方式選擇位:

=0:在INT0/INT1端申請中斷的信號低電平有效;=1:在INT0/INT1端申請中斷的信號負跳變有效.TCON:Timer控制寄存器,低4位管理外部中斷

在CPU已經開放了外部中斷允許的前提下:

在INT0/INT1引腳輸入一個負脈衝或低電平,

TCON寄存器中的IE0/IE1標誌位自動變“1”,

檢測到IE0/IE1變“1”後,將產生指令:

LCALL0003H(/0013H)執行中斷服務程式,

並將IE0/IE1標誌位自動清“0”,以備下次申請。外部中斷(INT0,INT1)申請過程單片機的中斷向量與優先順序(P.130)中斷向量:MCS-51單片機的5個中斷源分別對應有各自的中斷服務程式入口地址——中斷向量000BHTF0定時/計數器0(T0)002BHTF2定時/計數器2(T2)0023HRI/TI串行口接收/發送001BHTF1定時/計數器1(T1)0013HIE1外部中斷1(INT1)0003HIE0外部中斷0(INT0)中斷優先順序中斷向量申請標誌中斷源最高優先順序最低優先順序

PT2PSPT1

PX1

PT0PX0IPPX0/PX1:INT0/1優先順序控制位:

=0

時屬低優先順序;=1

時屬高優先順序。PT0/PT1/PT2:T0/1/2中斷優先順序控制位:

=0

時屬低優先順序;=1

時屬高優先順序。PS1:串行口中斷優先順序控制位:

=0

時屬低優先順序;=1

時屬高優先順序。中斷優先順序控制寄存器IP(0B8H)對同時發生多個中斷申請時:☞不同優先順序的中斷同時申請(很難遇到)

——先高後低☞相同優先順序的中斷同時申請(很難遇到)

——按序執行☞正處理低優先順序中斷又接到高級別中斷

——高打斷低☞正處理高優先順序中斷又接到低級別中斷

——高不理低中斷優先順序處理原則(P.131)☞沒有同級的中斷或更高級別的中斷正在處理;在中斷源提出了中斷申請且CPU此前已經允許中斷的前提下,還須滿足以下三個條件:☞正在執行的指令必須執行完最後1個機器週期;☞若正在執行RETI,或正在訪問IE或IP寄存器,須執行完上述指令和下一條指令以後方能回應中斷。

EA

—ET2ESET1EX1ET0EX0IE中斷允許寄存器IE(0A8H)

EX0/EX1/ET1/ET0/ES位:分別是INT0/1,Timer0/1,串行口的中斷允許控制位:

=0時禁止中斷;=1

時允許中斷。ET2:T2中斷允許控制位(僅52子系列有)

=0時禁止中斷;=1

時允許中斷。EA:總的中斷允許控制位(總開關):

=0時禁止全部中斷;=1

時允許中斷。中斷系統硬體結構(P.132)注:各中斷允許控制位=0,開關斷開;=1,開關接通IE0EX0TF0IE1TF1TIESET1EX1ET0外部中斷請求0外部中斷請求1內部定時器0內部定時器1內部串行口TRRIIE寄存器EA位IP寄存器各單路開關總開關中斷源標誌位查詢機構高中斷級中斷請求低中斷級中斷請求中斷入口中斷源標誌位INT0INT1中斷入口中斷源標誌位外部中斷及中斷請求的撤除(P.133)低電平/負脈衝→INT0/INT1引腳可觸發中斷TF1TR1TF0TR0IE1

IT1IE0IT0TCON(88H)IT0/IT1:INT0/1的觸發方式選擇位:

IT0/IT1=0

時,INT0/INT1是低電平有效;

IT0/IT1=1

時,INT0/INT1是負跳變有效。低電平觸發引腳上的低電平須持續到中斷發生。若中斷返回前仍未及時撤除低電平,將再次中斷。負脈衝觸發CPU在前一機器週期采到INT0/INT1引腳為高,後一機器週期采到為低才認為是一次中斷請求。CPU可記憶申請、可自動撤除中斷申請。外部低電平中斷的撤除外來的低電平→反相→CLK端產生上跳沿→D端的“0”打到Q端→申請中斷INTxP1.0CLKSQD外來中斷申請信號(低電平)MCS-5174LS74S=0則Q=1中斷返回前對P1.0送“0”

→令Q端變為“1”指令如下:

ANLP1,#0FEH=CLRP1.0;令Q端置“1”

ORLP1,#01H=SETBP1.0;令S端置“1”,以免下次中斷來時Q端不能變“0”中斷應用前後要做的幾項工作

中斷前開中斷允許:必須選擇優先順序:根據需要選擇,可有/可無設置控制位:INTx—觸發方式(ITx)

Tx—TCON,TMOD,TRx,初值……

RI/TI—SCON,REN,RB8,TB8,……中斷後進入中斷服務後:保護現場,關中斷,……退出中斷服務前:恢復現場,開中斷,設Tx的初值,清TI/RI,……中斷服務程式的最後一條指令必是RETI中斷應用程式舉例:P134例2:通過外部中斷1,在中斷服務中將B寄存器裏的內容左環移一位。

已知:(B)=01h,要求採用邊沿觸發,低優先順序。此例的實際意義:在INT1引腳接一個按鈕開關到地,每按一下按鈕就申請一次中斷,中斷服務則是:依次點亮八盞燈中的一盞。中斷應用程式舉例:P134例2:通過外部中斷1,在中斷服務中將B寄存器裏的內容左環移一位。

已知:(B)=01h,要求採用邊沿觸發,低優先順序。此例的實際意義:在INT1引腳接一個按鈕開關到地,每按一下按鈕就申請一次中斷,中斷服務則是:依次點亮八盞燈中的一盞。P1.0P1.7INT1300

ORG0000H(P.134)LJMPMAIN

ORG0013H;中斷向量

LJMPINTMAIN:SETBEA;開總中斷允許“開關”

SETBEX1;開分中斷允許“開關”

CLRPX1;0優先順序(也可不要此句)

SETBIT1;邊沿觸發

MOVB,#01H;給B

寄存器賦初值HERE:SJMPHERE;原地等待中斷申請INT:MOVA,B;自B寄存器中取數

RLA;左環移一次

MOVB,A;存回B,備下次取用

(MOVP1,A);輸出到P1口

RETI;中斷返回中斷服務程式單片機的定時/計數器2個16位定時器/計數器

——(52系列有3個16位Timer)定時器:對片內機器時鐘(週期方波)進行計數計數器:對Tx引腳輸入的負脈衝進行計數與Timer工作有關的特殊功能寄存器:

TCON和

TMOD第五章I/O,中斷,定時與串行通信P.135Timer的2個特殊功能寄存器(TCON,TMOD)TF1TR1TF0TR0IE1IT1IE0IT0定時器控制寄存器TCON(88H)P.137TFx:Timer0/1計數溢出標誌位。

=1計數溢出;=0計數未滿

TFx標誌位可用於申請中斷或供CPU查詢。在進入中斷服務程式時會自動清零;但在查詢方式時必須軟體清零。TRx:Timer0/1運行控制位。

=1啟動計數;=0停止計數TR0/TR1:Timer0/1運行控制位:

TR0/TR1=0時,Timer0/1停止計數

TR0/TR1=1時,Timer0/1啟動計數定時器T0/T1中斷申請過程

在已經開放T0/T1中斷允許且已被啟動的前提下:

T0/T1加滿溢出時TF0/TF1標誌位自動置“1”

檢測到TCON中TF0/TF1變“1”後,將產生指令:

LCALL000BH/LCALL001BH

執行中斷服務程式,

TF0/TF1標誌位會自動清“0”,以備下次中斷申請。

定時/計數器可按片內機器週期定時,也可對由T0/T1引腳輸入一個負脈衝進行加法計數TF1TR1TF0

TR0

IE1IT1IE0IT0TCON(88H)GATEC/T

M1

M0GATEC/T

M1

M0定時器方式寄存器TMOD(89H)P.137T1T0M1,M0:工作方式定義位(定義4種方式):C/T:計數器/定時器選擇位

=1外部事件計數器。對Tx引腳的負脈衝計數;

=0片內時鐘定時器。對機器週期脈衝計數定時00:13位Timer——用它無益,不要記它!01:16位Timer——經常用到10:可自動重裝的8位Timer——經常用到11:T0分為2個8位Timer;T1此時不工作

——因為沒有帶來甚麽好處,幾乎無用GATEC/TM1M0GATEC/TM1M0T1T0GATE門控位:Timer可由軟體與硬體兩者控制

GATE=0——普通用法

Timer的啟/停由軟體對TRx位寫“1”/“0”控制定時器方式寄存器TMOD(續)(89H)

GATE=1——門控用法

Timer的啟/停由軟體對TRx位寫“1”/“0”

和在INTx引腳上出現的信號的高/低共同控制閱讀書上定時器應用程式舉例:P.140例1:

晶振=6MHz,估算Timer的定時時長(max,min)P.141例2:

要求對T0產生100mS定時進行初始化。(晶振=6MHz)P.141例3:

產生T=2mS方波(改為方式2)P.142例4:

請改為方式1或2再閱讀,務請大家不要陷入方式0的困惑之中!P.143例5:定時1秒P.144例6:方式3(雙8位定時器)的應用定時器結構與工作方式

P.139工作方式1:——16位的定時/計數器振盪器12TLx

THx

(8位)(8位)TFx申請中斷Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制=1開關接通或門與門

THx/TLx賦初值:THx賦高8位,TLx賦低8位工作方式1的編程要點:參閱P.140

TMOD選方式:寫“M1,M0”=01b選方式1

若不用門控位,直接用軟體寫TRx控制啟/停

若使用門控位,先置位TRx,然後由INTx端的高/低電平來控制其啟/停

若要允許中斷,還須先置位ETx、EA等中斷允許控制位,並編寫中斷服務程式

若不用中斷,可查詢“計數溢出標誌TFx”

的方式工作,但溢出標誌TFx須軟體清0定時器(方式1)應用程式舉例:分析:已知fosc

=6MHz則:(振盪週期)1Tc=1/6MHz

(機器週期)1Tm=12Tc=12/6MHz=2

S

粗略地說:Tmin

2

S16位定時器最大數值為:216=65536=0FFFFH+1

故選擇方式1

工作可以得到:

Tmax=65536

2=131072

S=131.072mSP140例1:若晶振頻率為6MHz,計算單片機的最小與最大定時時間:分析:已知fosc

=6MHz則:(機器週期)1Tm=12Tc=12/6MHz=2

S100mS÷2

S=5000016位定時器最大數值為:

216=65536(=0FFFFH+1)

故選擇方式1工作可以滿足要求。計算初值:65536-50000=15536=3CB0HP141例2:要求對T0產生100mS定時進行初始化。

(晶振=6MHz)定時器(方式1)應用程式舉例:GATEC/TM1M0GATEC/TM1M0定時器方式寄存器TMOD由分析得知:T0選擇方式1,初值=3CB0H

XXXX0001初始化:MOVTMOD,#01H;選T0方式1

MOVTH0,#3CH;賦初值高8位

MOVTL0,#0B0H;賦初值低8位

SETBTR0;啟動T0定時若需要定時器0產生中斷還應當寫如下語句:

SETBET0;開T0中斷允許

SETBEA;開總中斷允許以及相應的中斷服務程式。工作方式2:——8位自動重裝的定時/計數器振盪器12TLx(8位)TFx申請中斷Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制=1開關接通或門與門THx(8位)溢出位門開☞

THx/TLx賦相同初值在TLx計數達到0FFH再加“1”時,TL0

將溢出,進位位直接進入“TFx”去申請中斷,同時打開三態門,使THx中的值自動重裝(Copy)進TLx工作方式2的編程:☞

TMOD寄存器選方式:寫“M1,M0”=10

b選中方式2☞其他用法與各種方式1完全相同分析:fosc

=6MHz1機器週期=2

S

1KHz方波週期=1mS

半個方波週期=500

S500uS÷2uS=250若選擇方式2工作,8位定時器最大數值為:

28=256=0FFH+1可以滿足要求。計算初值:256-250=6P141例3(改):從P1.0腳輸出頻率=1KHz方波。設:晶振=6MHz。利用T1定時中斷。Th:半週期T:週期定時器(方式2)應用程式舉例:

ORG0000HAJMPMAIN

ORG001BH;T1的中斷向量

CPLP1.0;中斷服務:P1.0取非

RETI;中斷返回MAIN:MOVTMOD,#20HMOVTH0,#6MOVTL0,#6SETBET1SETBEASETBTR1HERE:AJMPHERE;原地等待中斷

END初始化;選T1方式2;賦重裝值;賦初值;開T1中斷;開總中斷;啟動T1T0:

組織成TL0和TH0兩個8位定時/計數器Timer工作方式3——幾乎無用T1:不再是定時/計數器了

T1

的TR1和TF1出借給TH0當控制位使用,

剩下的TH1/TL1寄存器只能當作普通寄存器用。振盪器12TL0(8位)TF0申請中斷T0端TR0位GATE位INT0端≥1&C/T=0C/T=1控制=1開關接通或門與門TH0(8位)TF1申請中斷TR1位控制=1Timer工作方式3結構:☞T0成為雙8位Timer

☞T1不再有Timer功能

☞TF1,TR1出借給TH0

長定時舉例(設晶振=6MHz,要定時1秒):ORG0000H;P.143例5

AJMPMAINORG001BH

AJMPTINT;見下一頁MAIN:MOVTMOD,#10H;選T1方式1MOVTH1,#3CH;賦初值3CB0H=15536(只能定100mS)MOVTL1,#0B0HMOV30H,#10;軟體計數單元30H初值=10

CLRF0;晶片複位時已經是“0”,此句可有可無

SETBET1;開T1中斷

SETBEA;開總中斷

SETBTR1;啟動T1HERE:JBCF0,TIMEUP;原地等待“1秒到”的標誌F0AJMPHERETIMEUP:(dosomething);定時1秒到了以後要做的事情

AJMPHERE中斷服務在主程序中長定時舉例(續):

ORG0000HAJMPMAINORG001BHAJMPTINTMAIN:…TINT:DJNZ30H,RTN;若中斷不到10次就返回

SETBF0;已經中斷夠10次了“置1”標誌位

MOV30H,#10;為下一個1秒定時做準備RTN:MOVTH1,#3CH;再賦定時100mS的初值3CB0H MOVTL1,#0B0HRETI;中斷返回

END將此例的中斷服務改寫在中斷服務程式中:

ORG0000HAJMPMAINORG001BHAJMPTINT;見下一頁MAIN:MOVTMOD,#10H;選T1方式1MOVTH1,#3CH;賦初值3CB0H=15536(只能定100mS)MOVTL1,#0B0HMOV30H,#10;軟體計數單元30H初值=10CLRF0;晶片複位時已經是“0”,此句可有可無

SETBET1;開T1中斷

SETBEA;開總中斷

SETBTR1;啟動T1HERE:AJMPHERE;原地等待中斷長定時舉例(續):ORG0000HAJMPMAINORG001BHAJMPTINTMAIN:…TINT:DJNZ30H,RTN;若中斷不到10次就返回

MOV30H,#10;為下一個1秒定時做準備(dosomething);定時1秒到了以後要做的事情)RTN:MOVTH1,#3CH;再賦初值

MOVTL1,#0B0HRETI;中斷返回

END中斷服務定時器小結:(2個16位加法計數器)☞運行/停止由TRx位控制,(當GATE=1時:由TRx位和Tx引腳上的信號共同控制)☞工作方式由TMOD決定;

計數/定時由C/T位決定工作方式0(13位)

永遠不用

工作方式3(T0拆為雙8位)幾乎無用工作方式1(16位)經常用到工作方式2(8位自動重裝)經常用到☞從初值按機器週期或外部脈衝遞加,溢出位

TFx申請中斷;中斷允許由ETx位和EA位控制,串行口與串行通信串行通信的基本特徵是數據逐位順序進行傳送串行通信的格式及約定(如:同步方式、通訊速率、數據塊格式、信號電平……等)不同,形成了多種串行通信的協議與介面標準。常見的有:☞通用非同步收發器(UART)——本課程介紹的串口☞通用串行匯流排(USB)☞I2C匯流排☞CAN匯流排☞SPI匯流排☞RS-485,RS-232C,RS422A標準……等等第五章I/O,中斷,定時與串行通信(P.144)全雙工串行介面(UART)☞數據通信的幾個術語:

並行:數據各位同時進行傳送

串行:數據逐位順序進行傳送☞全雙工:(串行通信)收/發可同時進行半雙工:(串行通信)收/發不可同時進行☞非同步串行通信:以字元為單位進行傳送同步串行通信:以數據塊為單位進行傳送串列傳輸速率(bps.):單位時間傳送的位數51單片機的串行介面(P.151)SBUF(發)SBUF(收)發送控制器TI接收控制器RI移位寄存器串列傳輸速率發生器T11A累加器(門)移位寄存器RxDTxD去申請中斷引腳引腳CPU內部串行口的結構☞兩個同名的接收/發送緩衝寄存器SBUF

指令MOVSBUF,A

啟動一次數據發送,可向SBUF

再發送下一個數指令MOVA,SBUF

完成一次數據接收,SBUF可再接收下一個數☞接收/發送數據,無論是否採用中斷方式工作,每接收/發送一個數據都必須用指令對RI/TI

清0,以備下一次收/發。☞串行口相關的SFR(SCON,PCON)

SM0SM1

SM2RENTB8RB8

TIR1SCON☞

SM0,SM1:串行口4種工作方式的選擇位。

00方式0:8位移位寄存器I/O,串列傳輸速率固定為fosc/12

01方式1:8位UART(1+8+1位),

串列傳輸速率可變,按公式計算

10方式2:9位UART(1+8+1+1位),

串列傳輸速率固定=fosc

x1/32或1/64

11方式3:9位UART(1+8+1+1位),

串列傳輸速率可變,按公式計算☞

SM2:串行口多機通信控制位

(作為方式2、方式3的附加控制位)串行口控制寄存器SCON(98H)P.151☞

RI,TI:串行口收/發數據申請中斷標誌位=1申請中斷;=0不申請中斷☞

TB8:方式2、3中,是要發送的第9位數據。多機通信中,TB8=0表示發送的是數據;

TB8=1表示發送的是地址。(奇偶校驗)☞

RB8:在方式2、3中,是收到的第9位數據。在多機通信中,用作區別地址幀/數據幀的標誌。(奇偶校驗)

SM0SM1

SM2RENTB8RB8

TIR1☞

REN:串行口接收允許控制位

=1表示允許接收;=0禁止接收。SCONSMOD———GF1GF0PD

1DL電源控制寄存器

PCON(97H)P.152——特殊功能寄存器PCON不能按位尋址——☞

SMOD:在串行口工作方式1、2、3中,

是串列傳輸速率加倍位

=1時,串列傳輸速率加倍

=0時,串列傳輸速率不加倍。

(在PCON中只有這一個位與串口有關)

GF1,GF0:用戶可自行定義使用的通用標誌位PCON☞

PD:掉電方式控制位

=0:常規工作方式。

=1:進入掉電方式:

振盪器停振

片內RAM和SRF的值保持不變

P0—P3口維持原狀。

程式停止

只有複位能使之退出掉電方式。

SMOD———GF1GF0

PDIDLPCON☞

IDL:待機方式(空閒方式)控制位

=0:常規工作方式。

=1:進入待機方式:

振盪器繼續振盪

中斷、定時器、串口功能繼續有效

片內RAM和SRF保持不變

CPU狀態保持、P0—P3口維持原狀

程式停頓。

中斷和複位能退出待機,繼續後面的程式。SMOD———GF1GF0

PD1DLPCON☞

PD:掉電控制位

=0:常規方式。

=1:掉電方式:

振盪器停振

片內RAM和SRF不變

P0—P3口維持原狀

程式停止只有複位能退出掉電

IDL:待機控制位

=0:常規方式。

=1:待機方式:

振盪器繼續振盪

中斷,定時器,串口有效

片內RAM和SRF不變

CPU狀態,P0—P3維持原狀

程式停頓。中斷和複位能退出待機,繼續後面的程式。SMOD———GF1GF0

PD1DLPCON串行口工作方式0P.153工作方式0:8位移位寄存器I/O方式☞發送:SBUF中的串行數據由RxD逐位移出;

TxD輸出移位時鐘,頻率=fosc1/12;

每送出8位數據TI就自動置1;

需要用軟體清零

TI。☞接收:串行數據由RxD逐位移入SBUF中;

TxD輸出移位時鐘,頻率=fosc1/12;

每接收8位數據RI就自動置1;

需要用軟體清零RI。☞經常配合“串入並出”“併入串出”移位寄存器一起使用擴展介面(第六章)。

☞方式0工作時,多用查詢方式編程:

發送:MOVSBUF,A接收:JNBRI,$JNBTI,$CLRRI

CLRTIMOVA,SBUF工作方式0:8位移位寄存器I/O方式(續)☞複位時,SCON

已經被清零,缺省值:方式0。☞接收前,務必先置位

REN=1允許接收數據。串行口方式0的擴展應用——經常用到串行口常用工作方式0擴展出並行I/O口,工作方式1、2、3則常用於串行通信ABCLKhgfedcbaCLRABCLKCLRABCLKCLR+5V74LS16474LS16474LS16474LS164是串入並出晶片;74LS165是併入串出晶片hgfedcbahgfedcba+5V共陽LED

數碼管VCCTxDRxD51單片機共陽極hgfedcbaabcdgefh共陽LED數碼管公共端(字位)

接高電平,筆劃(字段)

置為低電平就被點亮了hgfedcba累加器A110000000C0H=“0”☞比如要顯示“0”

須令abcdef為“0”

電平,gh為“1”電平。☞再比如要顯示“3”

須令abcdg為“0”

電平,efh為“1”電平。101100000B0H=“3”例:利用串行口工作方式0擴展出8位並行I/O口,驅動共陽LED數碼管顯示0—9。ABCLKhgfedcbaCLR+5VVCCTxDRxD51單片機74LS164共陽LED數碼管根據上圖編寫的通過串行口和74LS164驅動共陽LED數碼管(查表)顯示0-9數字的副程式:DSPLY:MOVDPTR,#TABLEMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90Hhgfedcba累加器A110000000C0H=“0”101100000B0H=“3”共陽極hgfedcbaabcdgefh☞常用於串行通訊。除發/收8位數據外,還在D0位前有一個起始位“0”;在D7位後有一個停止位“1”。☞方式1工作時:發送端自動添加一個起始位和一個停止位;接收端自動去掉一個起始位和一個停止位。工作方式1:8位UART(1+8+1位)串列傳輸速率可變

——P.153-154☞串列傳輸速率可變

——用定時器T1作串列傳輸速率發生器:公式:串列傳輸速率=(2SMOD/32)T1的溢出率串列傳輸速率=(2SMOD/32)T1的溢出率(P155)☞

溢出率:T1溢出的頻繁程度即:T1溢出一次所需時間的倒數。☞

初值X=2n-

2SMOD

fosc32

串列傳輸速率

12☞

串列傳輸速率

=2SMOD

fosc32

12(2n-X)其中:X是定時器初值☞

初值X=2n-

2SMOD

fosc32

串列傳輸速率

12☞

例P157中計算串列傳輸速率的部分:題目要求用T1工作於方式2來產生串列傳輸速率1200,已知晶振頻率=6MHz。要求出T1的初值:初值X=28

-

20

6

10632

1200

12=256-

=256-13.026

106460800

243=0F3H——結果後面要用到

☞表格有多種,晶振也不止一種常用串列傳輸速率和T1初值查表P.156表(部分)串口串列傳輸速率(方式1,3)foscSMOD位(PCON中)定時器T1C/T方式初值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F4H6006MHz0020E8H1106MHz00272H☞RxD引腳為接收端,TxD引腳為發送端,由串列傳輸速率發生器T1控制發送速度,不同於方式0:收/發都需要由TxD送出移位時鐘。

☞T1作串列傳輸速率發生器時初始化包括:

選定時器工作方式2(TMOD選8位自動重裝);

將計算(或查表)出的初值X賦給TH1,TL1;

啟動T1(SETBTR1);

對T1不要開中斷

!!工作方式1的接收/發送P.153-154☞串行口的初始化包括:

對SCON選工作方式對PCON設串列傳輸速率加倍位“SMOD”(缺省值=0)

如果是接收數據,仍要先置“1”REN位

MAIN:ORG0023H

MOVTMOD,#20HSBR1:JNBRI,SEND

MOVTL1,#0F3HLCALLSIN

MOVTH1,#0F3HSJMPNEXT

SETBTR1SEND:LCALLSOUT

MOVSCON,#50HNEXT:RETI

…………SETBEASIN:……SETBESRETLCALLSOUT

SOUT:……SJMP$RETP157例:串行通信方式1應用用T1工作於方式2,產生串列傳輸速率1200bps

SM0SM1

SM2RENTB8RB8

TIR1SCON☞

SM0,SM1:串行口工作方式選擇位。

01:方式1,8位UART(1+8+1位)☞

REN:串行口接收允許位。REN=1允許接收串行口控制寄存器SCON

01

0

10000☞

TB8,RB8,TI,RI等位由運行中間的情況決定,可先寫成“0”☞

SM2:串行口多機通信控制位,作為方式2、3

的附加控制位,此處不用,可寫成“0”MAIN:

ORG0023H

MOVTMOD,#20H

SBR1:JNBRI,SEND

MOVTL1,#0F3H

LCALLSIN

MOVTH1,#0F3H

SJMPNEXT

SETBTR1

SEND:LCALLSOUT

MOVSCON,#50H

NEXT:RETI

…………SETBEA

SIN:……SETBES

RETLCALLSOUT

SOUT:……SJMP$

RETP157例:串行通信方式1應用

用T1工作於方式2,產生串列傳輸速率1200bps發送副程式接收副程式SOUT:

SIN:

MOVA,@R0MOVA,SBUF

MOVC,PMOVC,PCPLCCPLC

MOV

ACC.7,C

ANLA,#7FH

INCR0MOV@R1,AMOVSBUF,AINCR1CLRTICLRRIRETRETP157例

(續)刪除刪除☞由於串列傳輸速率固定,常用於單片機間通訊。數據由8+1位組成,通常附加的一位

(TB8/RB8)用於“奇偶校驗”。工作方式2:——P.154

9位UART(1+8+1+1位)兩種串列傳輸速率☞方式2的串列傳輸速率=fosc

2SMOD/64

即:fosc

1/32或fosc

1/64兩種☞奇偶校驗是檢驗串行通信雙方傳輸的數據正確與否的一個措施,並不能保證通信數據的傳輸一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论