版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
I/O,中斷,定時與串口
I/O介面的作用/功能/定義數(shù)據(jù)性質(zhì)不同數(shù)據(jù)協(xié)議/格式不同速度不一致所需功率/電平不匹配所需測控點數(shù)量不匹配
電腦/單片機與外設之間起橋樑作用的電路或部件——介面(interface)。
協(xié)調(diào)兩者間的差異。
本課程中講到的介面可以是口地址→可尋址的寄存器/端口地址由選用的地址線條數(shù)與地址線名決定介面與端口?地址線條數(shù)n決定:尋址範圍=2nMCS-51尋址範圍=216=65536=64K位元組?地址線在地址匯流排中的序名決定具體地址一個端口可能有多個口地址;一個口地址只能唯一地指向某個端口。→器件→功能模組→電路板卡→設備/裝置→……站在單片機/電腦一側(cè)來看待上述過程叫編址。站在單片機/電腦外側(cè)來看待上述過程叫解碼。介面地址的編址/解碼/尋址概念(P125):通過適當?shù)牡刂肪€(或控制線,或I/O線),物理上形成某個或某些片選/使能等信號,實現(xiàn)與介面對象的一一對應的過程。通過軟體與解碼電路硬體實現(xiàn)對外設的片選或使能控制過程叫尋址。編址是設計過程(在先)解碼和尋址是應用過程(在後)對I/O與記憶體編址通常有兩種方式:?
獨立編址方式:
I/O與記憶體分別編址(例如IBM-PC)?
統(tǒng)一編址方式:
I/O與記憶體合在一起編址(單片機應用系統(tǒng))編址有兩種方式
單片機對外部器件實現(xiàn)一一對應的“片選”通常要用單片機的地址匯流排A15—A0中的部分或全部,甚至也可以用某些I/O線。A15A14A13A12A11A10A9A8P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0口是低8位地址與數(shù)據(jù)複用口線選尋址與解碼尋址
(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解碼器單片機的中斷系統(tǒng)數(shù)據(jù)的輸入/輸出傳送方式查詢傳送方式(LOOKUP):傳送前一方先查詢另一方的狀態(tài),若已經(jīng)準備好就傳送,否則就繼續(xù)查詢/等待中斷傳送方式(IRQ):一方通過申請中斷的方式與另一方進行數(shù)據(jù)傳送無條件傳送方式:一方對另一方來說總是準備好的直接記憶體存取方式(DMA):雙方直接通過匯流排傳送數(shù)據(jù),不經(jīng)CPU中轉(zhuǎn)第五章
I/O,中斷,定時與串行通信
數(shù)據(jù)傳送的雙方平時各自做自己的工作,一旦甲方要求與乙方進行數(shù)據(jù)傳送,就主動發(fā)出信號提出申請,乙方接到申請後若同意傳送,安排好當前的工作,再回應與甲方發(fā)生數(shù)據(jù)傳送。完事後,回去繼續(xù)做打斷前的工作。中斷功能強弱是電腦性能優(yōu)劣的重要標誌
提高CPU效率
解決速度矛盾
實現(xiàn)並行工作
應付突發(fā)事件……中斷傳送方式特點(P.128)①中斷源②中斷申請③開放中斷④保護現(xiàn)場⑤中斷服務⑥恢復現(xiàn)場⑦中斷返回中斷涉及的幾個環(huán)節(jié)(前面提到的甲方)(甲方發(fā)出信號提出申請)(乙方同意傳送)(安排好當前的工作)(回應乙方的要求)(完事後,回去……)(繼續(xù)做打斷前的工作)單片機的中斷源及TCONCPU在每個機器週期的S5P2期間,會自動查詢各個中斷申請標誌位,若查到某標誌位被置位,將啟動中斷機制。51子系列允許5個(52子系列6個)中斷源:
2個外部中斷請求:INT0,INT12個片內(nèi)定時器/計數(shù)器T0和T1中斷請求:
TF0,TF1,(TF2——52子系列有T2)
1個串行口中斷請求:TI/RICPU識別中斷申請的依據(jù):單片機的中斷源及TCONCPU在每個機器週期的S5P2期間,會自動查詢各個中斷申請標誌位,若查到某標誌位被置位,將啟動中斷機制。CPU識別中斷申請的依據(jù):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:外部中斷請求的觸發(fā)方式選擇位:
=0:在INT0/INT1端申請中斷的信號低電平有效;=1:在INT0/INT1端申請中斷的信號負跳變有效.TCON:Timer控制寄存器,低4位管理外部中斷
在CPU已經(jīng)開放了外部中斷允許的前提下:
在INT0/INT1引腳輸入一個負脈衝或低電平,
TCON寄存器中的IE0/IE1標誌位自動變“1”,
檢測到IE0/IE1變“1”後,將產(chǎn)生指令:
LCALL0003H(/0013H)執(zhí)行中斷服務程式,
並將IE0/IE1標誌位自動清“0”,以備下次申請。外部中斷(INT0,INT1)申請過程單片機的中斷向量與優(yōu)先順序(P.130)中斷向量:MCS-51單片機的5個中斷源分別對應有各自的中斷服務程式入口地址——中斷向量000BHTF0定時/計數(shù)器0(T0)002BHTF2定時/計數(shù)器2(T2)0023HRI/TI串行口接收/發(fā)送001BHTF1定時/計數(shù)器1(T1)0013HIE1外部中斷1(INT1)0003HIE0外部中斷0(INT0)中斷優(yōu)先順序中斷向量申請標誌中斷源最高優(yōu)先順序最低優(yōu)先順序
—
—
PT2PSPT1
PX1
PT0PX0IPPX0/PX1:INT0/1優(yōu)先順序控制位:
=0
時屬低優(yōu)先順序;=1
時屬高優(yōu)先順序。PT0/PT1/PT2:T0/1/2中斷優(yōu)先順序控制位:
=0
時屬低優(yōu)先順序;=1
時屬高優(yōu)先順序。PS1:串行口中斷優(yōu)先順序控制位:
=0
時屬低優(yōu)先順序;=1
時屬高優(yōu)先順序。中斷優(yōu)先順序控制寄存器IP(0B8H)對同時發(fā)生多個中斷申請時:?不同優(yōu)先順序的中斷同時申請(很難遇到)
——先高後低?相同優(yōu)先順序的中斷同時申請(很難遇到)
——按序執(zhí)行?正處理低優(yōu)先順序中斷又接到高級別中斷
——高打斷低?正處理高優(yōu)先順序中斷又接到低級別中斷
——高不理低中斷優(yōu)先順序處理原則(P.131)?沒有同級的中斷或更高級別的中斷正在處理;在中斷源提出了中斷申請且CPU此前已經(jīng)允許中斷的前提下,還須滿足以下三個條件:?正在執(zhí)行的指令必須執(zhí)行完最後1個機器週期;?若正在執(zhí)行RETI,或正在訪問IE或IP寄存器,須執(zhí)行完上述指令和下一條指令以後方能回應中斷。
EA
—ET2ESET1EX1ET0EX0IE中斷允許寄存器IE(0A8H)
EX0/EX1/ET1/ET0/ES位:分別是INT0/1,Timer0/1,串行口的中斷允許控制位:
=0時禁止中斷;=1
時允許中斷。ET2:T2中斷允許控制位(僅52子系列有)
=0時禁止中斷;=1
時允許中斷。EA:總的中斷允許控制位(總開關):
=0時禁止全部中斷;=1
時允許中斷。中斷系統(tǒng)硬體結(jié)構(gòu)(P.132)注:各中斷允許控制位=0,開關斷開;=1,開關接通IE0EX0TF0IE1TF1TIESET1EX1ET0外部中斷請求0外部中斷請求1內(nèi)部定時器0內(nèi)部定時器1內(nèi)部串行口TRRIIE寄存器EA位IP寄存器各單路開關總開關中斷源標誌位查詢機構(gòu)高中斷級中斷請求低中斷級中斷請求中斷入口中斷源標誌位INT0INT1中斷入口中斷源標誌位外部中斷及中斷請求的撤除(P.133)低電平/負脈衝→INT0/INT1引腳可觸發(fā)中斷TF1TR1TF0TR0IE1
IT1IE0IT0TCON(88H)IT0/IT1:INT0/1的觸發(fā)方式選擇位:
IT0/IT1=0
時,INT0/INT1是低電平有效;
IT0/IT1=1
時,INT0/INT1是負跳變有效。低電平觸發(fā)引腳上的低電平須持續(xù)到中斷發(fā)生。若中斷返回前仍未及時撤除低電平,將再次中斷。負脈衝觸發(fā)CPU在前一機器週期采到INT0/INT1引腳為高,後一機器週期采到為低才認為是一次中斷請求。CPU可記憶申請、可自動撤除中斷申請。外部低電平中斷的撤除外來的低電平→反相→CLK端產(chǎn)生上跳沿→D端的“0”打到Q端→申請中斷INTxP1.0CLKSQD外來中斷申請信號(低電平)MCS-5174LS74S=0則Q=1中斷返回前對P1.0送“0”
→令Q端變?yōu)椤?”指令如下:
ANLP1,#0FEH=CLRP1.0;令Q端置“1”
ORLP1,#01H=SETBP1.0;令S端置“1”,以免下次中斷來時Q端不能變“0”中斷應用前後要做的幾項工作
中斷前開中斷允許:必須選擇優(yōu)先順序:根據(jù)需要選擇,可有/可無設置控制位:INTx—觸發(fā)方式(ITx)
Tx—TCON,TMOD,TRx,初值……
RI/TI—SCON,REN,RB8,TB8,……中斷後進入中斷服務後:保護現(xiàn)場,關中斷,……退出中斷服務前:恢復現(xiàn)場,開中斷,設Tx的初值,清TI/RI,……中斷服務程式的最後一條指令必是RETI中斷應用程式舉例:P134例2:通過外部中斷1,在中斷服務中將B寄存器裏的內(nèi)容左環(huán)移一位。
已知:(B)=01h,要求採用邊沿觸發(fā),低優(yōu)先順序。此例的實際意義:在INT1引腳接一個按鈕開關到地,每按一下按鈕就申請一次中斷,中斷服務則是:依次點亮八盞燈中的一盞。中斷應用程式舉例:P134例2:通過外部中斷1,在中斷服務中將B寄存器裏的內(nèi)容左環(huán)移一位。
已知:(B)=01h,要求採用邊沿觸發(fā),低優(yōu)先順序。此例的實際意義:在INT1引腳接一個按鈕開關到地,每按一下按鈕就申請一次中斷,中斷服務則是:依次點亮八盞燈中的一盞。P1.0P1.7INT1300
ORG0000H(P.134)LJMPMAIN
ORG0013H;中斷向量
LJMPINTMAIN:SETBEA;開總中斷允許“開關”
SETBEX1;開分中斷允許“開關”
CLRPX1;0優(yōu)先順序(也可不要此句)
SETBIT1;邊沿觸發(fā)
MOVB,#01H;給B
寄存器賦初值HERE:SJMPHERE;原地等待中斷申請INT:MOVA,B;自B寄存器中取數(shù)
RLA;左環(huán)移一次
MOVB,A;存回B,備下次取用
(MOVP1,A);輸出到P1口
RETI;中斷返回中斷服務程式單片機的定時/計數(shù)器2個16位定時器/計數(shù)器
——(52系列有3個16位Timer)定時器:對片內(nèi)機器時鐘(週期方波)進行計數(shù)計數(shù)器:對Tx引腳輸入的負脈衝進行計數(shù)與Timer工作有關的特殊功能寄存器:
TCON和
TMOD第五章I/O,中斷,定時與串行通信P.135Timer的2個特殊功能寄存器(TCON,TMOD)TF1TR1TF0TR0IE1IT1IE0IT0定時器控制寄存器TCON(88H)P.137TFx:Timer0/1計數(shù)溢出標誌位。
=1計數(shù)溢出;=0計數(shù)未滿
TFx標誌位可用於申請中斷或供CPU查詢。在進入中斷服務程式時會自動清零;但在查詢方式時必須軟體清零。TRx:Timer0/1運行控制位。
=1啟動計數(shù);=0停止計數(shù)TR0/TR1:Timer0/1運行控制位:
TR0/TR1=0時,Timer0/1停止計數(shù)
TR0/TR1=1時,Timer0/1啟動計數(shù)定時器T0/T1中斷申請過程
在已經(jīng)開放T0/T1中斷允許且已被啟動的前提下:
T0/T1加滿溢出時TF0/TF1標誌位自動置“1”
檢測到TCON中TF0/TF1變“1”後,將產(chǎn)生指令:
LCALL000BH/LCALL001BH
執(zhí)行中斷服務程式,
TF0/TF1標誌位會自動清“0”,以備下次中斷申請。
定時/計數(shù)器可按片內(nèi)機器週期定時,也可對由T0/T1引腳輸入一個負脈衝進行加法計數(shù)TF1TR1TF0
TR0
IE1IT1IE0IT0TCON(88H)GATEC/T
M1
M0GATEC/T
M1
M0定時器方式寄存器TMOD(89H)P.137T1T0M1,M0:工作方式定義位(定義4種方式):C/T:計數(shù)器/定時器選擇位
=1外部事件計數(shù)器。對Tx引腳的負脈衝計數(shù);
=0片內(nèi)時鐘定時器。對機器週期脈衝計數(shù)定時00:13位Timer——用它無益,不要記它!01:16位Timer——經(jīng)常用到10:可自動重裝的8位Timer——經(jīng)常用到11:T0分為2個8位Timer;T1此時不工作
——因為沒有帶來甚麼好處,幾乎無用GATEC/TM1M0GATEC/TM1M0T1T0GATE門控位:Timer可由軟體與硬體兩者控制
GATE=0——普通用法
Timer的啟/停由軟體對TRx位寫“1”/“0”控制定時器方式寄存器TMOD(續(xù))(89H)
GATE=1——門控用法
Timer的啟/停由軟體對TRx位寫“1”/“0”
和在INTx引腳上出現(xiàn)的信號的高/低共同控制閱讀書上定時器應用程式舉例:P.140例1:
晶振=6MHz,估算Timer的定時時長(max,min)P.141例2:
要求對T0產(chǎn)生100mS定時進行初始化。(晶振=6MHz)P.141例3:
產(chǎn)生T=2mS方波(改為方式2)P.142例4:
請改為方式1或2再閱讀,務請大家不要陷入方式0的困惑之中!P.143例5:定時1秒P.144例6:方式3(雙8位定時器)的應用定時器結(jié)構(gòu)與工作方式
P.139工作方式1:——16位的定時/計數(shù)器振盪器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等中斷允許控制位,並編寫中斷服務程式
若不用中斷,可查詢“計數(shù)溢出標誌TFx”
的方式工作,但溢出標誌TFx須軟體清0定時器(方式1)應用程式舉例:分析:已知fosc
=6MHz則:(振盪週期)1Tc=1/6MHz
(機器週期)1Tm=12Tc=12/6MHz=2
S
粗略地說:Tmin
2
S16位定時器最大數(shù)值為: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位定時器最大數(shù)值為:
216=65536(=0FFFFH+1)
故選擇方式1工作可以滿足要求。計算初值:65536-50000=15536=3CB0HP141例2:要求對T0產(chǎn)生100mS定時進行初始化。
(晶振=6MHz)定時器(方式1)應用程式舉例:GATEC/TM1M0GATEC/TM1M0定時器方式寄存器TMOD由分析得知:T0選擇方式1,初值=3CB0H
XXXX0001初始化:MOVTMOD,#01H;選T0方式1
MOVTH0,#3CH;賦初值高8位
MOVTL0,#0B0H;賦初值低8位
SETBTR0;啟動T0定時若需要定時器0產(chǎn)生中斷還應當寫如下語句:
SETBET0;開T0中斷允許
SETBEA;開總中斷允許以及相應的中斷服務程式。工作方式2:——8位自動重裝的定時/計數(shù)器振盪器12TLx(8位)TFx申請中斷Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制=1開關接通或門與門THx(8位)溢出位門開?
THx/TLx賦相同初值在TLx計數(shù)達到0FFH再加“1”時,TL0
將溢出,進位位直接進入“TFx”去申請中斷,同時打開三態(tài)門,使THx中的值自動重裝(Copy)進TLx工作方式2的編程:?
TMOD寄存器選方式:寫“M1,M0”=10
b選中方式2?其他用法與各種方式1完全相同分析:fosc
=6MHz1機器週期=2
S
1KHz方波週期=1mS
半個方波週期=500
S500uS÷2uS=250若選擇方式2工作,8位定時器最大數(shù)值為:
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位定時/計數(shù)器Timer工作方式3——幾乎無用T1:不再是定時/計數(shù)器了
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結(jié)構(gòu):?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;軟體計數(shù)單元30H初值=10
CLRF0;晶片複位時已經(jīng)是“0”,此句可有可無
SETBET1;開T1中斷
SETBEA;開總中斷
SETBTR1;啟動T1HERE:JBCF0,TIMEUP;原地等待“1秒到”的標誌F0AJMPHERETIMEUP:(dosomething);定時1秒到了以後要做的事情
AJMPHERE中斷服務在主程序中長定時舉例(續(xù)):
ORG0000HAJMPMAINORG001BHAJMPTINTMAIN:…TINT:DJNZ30H,RTN;若中斷不到10次就返回
SETBF0;已經(jīng)中斷夠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;軟體計數(shù)單元30H初值=10CLRF0;晶片複位時已經(jīng)是“0”,此句可有可無
SETBET1;開T1中斷
SETBEA;開總中斷
SETBTR1;啟動T1HERE:AJMPHERE;原地等待中斷長定時舉例(續(xù)):ORG0000HAJMPMAINORG001BHAJMPTINTMAIN:…TINT:DJNZ30H,RTN;若中斷不到10次就返回
MOV30H,#10;為下一個1秒定時做準備(dosomething);定時1秒到了以後要做的事情)RTN:MOVTH1,#3CH;再賦初值
MOVTL1,#0B0HRETI;中斷返回
END中斷服務定時器小結(jié):(2個16位加法計數(shù)器)?運行/停止由TRx位控制,(當GATE=1時:由TRx位和Tx引腳上的信號共同控制)?工作方式由TMOD決定;
計數(shù)/定時由C/T位決定工作方式0(13位)
永遠不用
工作方式3(T0拆為雙8位)幾乎無用工作方式1(16位)經(jīng)常用到工作方式2(8位自動重裝)經(jīng)常用到?從初值按機器週期或外部脈衝遞加,溢出位
TFx申請中斷;中斷允許由ETx位和EA位控制,串行口與串行通信串行通信的基本特徵是數(shù)據(jù)逐位順序進行傳送串行通信的格式及約定(如:同步方式、通訊速率、數(shù)據(jù)塊格式、信號電平……等)不同,形成了多種串行通信的協(xié)議與介面標準。常見的有:?通用非同步收發(fā)器(UART)——本課程介紹的串口?通用串行匯流排(USB)?I2C匯流排?CAN匯流排?SPI匯流排?RS-485,RS-232C,RS422A標準……等等第五章I/O,中斷,定時與串行通信(P.144)全雙工串行介面(UART)?數(shù)據(jù)通信的幾個術(shù)語:
並行:數(shù)據(jù)各位同時進行傳送
串行:數(shù)據(jù)逐位順序進行傳送?全雙工:(串行通信)收/發(fā)可同時進行半雙工:(串行通信)收/發(fā)不可同時進行?非同步串行通信:以字元為單位進行傳送同步串行通信:以數(shù)據(jù)塊為單位進行傳送串列傳輸速率(bps.):單位時間傳送的位數(shù)51單片機的串行介面(P.151)SBUF(發(fā))SBUF(收)發(fā)送控制器TI接收控制器RI移位寄存器串列傳輸速率發(fā)生器T11A累加器(門)移位寄存器RxDTxD去申請中斷引腳引腳CPU內(nèi)部串行口的結(jié)構(gòu)?兩個同名的接收/發(fā)送緩衝寄存器SBUF
指令MOVSBUF,A
啟動一次數(shù)據(jù)發(fā)送,可向SBUF
再發(fā)送下一個數(shù)指令MOVA,SBUF
完成一次數(shù)據(jù)接收,SBUF可再接收下一個數(shù)?接收/發(fā)送數(shù)據(jù),無論是否採用中斷方式工作,每接收/發(fā)送一個數(shù)據(jù)都必須用指令對RI/TI
清0,以備下一次收/發(fā)。?串行口相關的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:串行口收/發(fā)數(shù)據(jù)申請中斷標誌位=1申請中斷;=0不申請中斷?
TB8:方式2、3中,是要發(fā)送的第9位數(shù)據(jù)。多機通信中,TB8=0表示發(fā)送的是數(shù)據(jù);
TB8=1表示發(fā)送的是地址。(奇偶校驗)?
RB8:在方式2、3中,是收到的第9位數(shù)據(jù)。在多機通信中,用作區(qū)別地址幀/數(shù)據(jù)幀的標誌。(奇偶校驗)
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:常規(guī)工作方式。
=1:進入掉電方式:
振盪器停振
片內(nèi)RAM和SRF的值保持不變
P0—P3口維持原狀。
程式停止
只有複位能使之退出掉電方式。
SMOD———GF1GF0
PDIDLPCON?
IDL:待機方式(空閒方式)控制位
=0:常規(guī)工作方式。
=1:進入待機方式:
振盪器繼續(xù)振盪
中斷、定時器、串口功能繼續(xù)有效
片內(nèi)RAM和SRF保持不變
CPU狀態(tài)保持、P0—P3口維持原狀
程式停頓。
中斷和複位能退出待機,繼續(xù)後面的程式。SMOD———GF1GF0
PD1DLPCON?
PD:掉電控制位
=0:常規(guī)方式。
=1:掉電方式:
振盪器停振
片內(nèi)RAM和SRF不變
P0—P3口維持原狀
程式停止只有複位能退出掉電
?
IDL:待機控制位
=0:常規(guī)方式。
=1:待機方式:
振盪器繼續(xù)振盪
中斷,定時器,串口有效
片內(nèi)RAM和SRF不變
CPU狀態(tài),P0—P3維持原狀
程式停頓。中斷和複位能退出待機,繼續(xù)後面的程式。SMOD———GF1GF0
PD1DLPCON串行口工作方式0P.153工作方式0:8位移位寄存器I/O方式?發(fā)送:SBUF中的串行數(shù)據(jù)由RxD逐位移出;
TxD輸出移位時鐘,頻率=fosc1/12;
每送出8位數(shù)據(jù)TI就自動置1;
需要用軟體清零
TI。?接收:串行數(shù)據(jù)由RxD逐位移入SBUF中;
TxD輸出移位時鐘,頻率=fosc1/12;
每接收8位數(shù)據(jù)RI就自動置1;
需要用軟體清零RI。?經(jīng)常配合“串入並出”“併入串出”移位寄存器一起使用擴展介面(第六章)。
?方式0工作時,多用查詢方式編程:
發(fā)送:MOVSBUF,A接收:JNBRI,$JNBTI,$CLRRI
CLRTIMOVA,SBUF工作方式0:8位移位寄存器I/O方式(續(xù))?複位時,SCON
已經(jīng)被清零,缺省值:方式0。?接收前,務必先置位
REN=1允許接收數(shù)據(jù)。串行口方式0的擴展應用——經(jīng)常用到串行口常用工作方式0擴展出並行I/O口,工作方式1、2、3則常用於串行通信ABCLKhgfedcbaCLRABCLKCLRABCLKCLR+5V74LS16474LS16474LS16474LS164是串入並出晶片;74LS165是併入串出晶片hgfedcbahgfedcba+5V共陽LED
數(shù)碼管VCCTxDRxD51單片機共陽極hgfedcbaabcdgefh共陽LED數(shù)碼管公共端(字位)
接高電平,筆劃(字段)
置為低電平就被點亮了hgfedcba累加器A110000000C0H=“0”?比如要顯示“0”
須令abcdef為“0”
電平,gh為“1”電平。?再比如要顯示“3”
須令abcdg為“0”
電平,efh為“1”電平。101100000B0H=“3”例:利用串行口工作方式0擴展出8位並行I/O口,驅(qū)動共陽LED數(shù)碼管顯示0—9。ABCLKhgfedcbaCLR+5VVCCTxDRxD51單片機74LS164共陽LED數(shù)碼管根據(jù)上圖編寫的通過串行口和74LS164驅(qū)動共陽LED數(shù)碼管(查表)顯示0-9數(shù)字的副程式:DSPLY:MOVDPTR,#TABLEMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90Hhgfedcba累加器A110000000C0H=“0”101100000B0H=“3”共陽極hgfedcbaabcdgefh?常用於串行通訊。除發(fā)/收8位數(shù)據(jù)外,還在D0位前有一個起始位“0”;在D7位後有一個停止位“1”。?方式1工作時:發(fā)送端自動添加一個起始位和一個停止位;接收端自動去掉一個起始位和一個停止位。工作方式1:8位UART(1+8+1位)串列傳輸速率可變
——P.153-154?串列傳輸速率可變
——用定時器T1作串列傳輸速率發(fā)生器:公式:串列傳輸速率=(2SMOD/32)T1的溢出率串列傳輸速率=(2SMOD/32)T1的溢出率(P155)?
溢出率:T1溢出的頻繁程度即:T1溢出一次所需時間的倒數(shù)。?
初值X=2n-
2SMOD
fosc32
串列傳輸速率
12?
串列傳輸速率
=2SMOD
fosc32
12(2n-X)其中:X是定時器初值?
初值X=2n-
2SMOD
fosc32
串列傳輸速率
12?
例P157中計算串列傳輸速率的部分:題目要求用T1工作於方式2來產(chǎn)生串列傳輸速率1200,已知晶振頻率=6MHz。要求出T1的初值:初值X=28
-
20
6
10632
1200
12=256-
=256-13.026
106460800
243=0F3H——結(jié)果後面要用到
?表格有多種,晶振也不止一種常用串列傳輸速率和T1初值查表P.156表(部分)串口串列傳輸速率(方式1,3)foscSMOD位(PCON中)定時器T1C/T方式初值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F4H6006MHz0020E8H1106MHz00272H?RxD引腳為接收端,TxD引腳為發(fā)送端,由串列傳輸速率發(fā)生器T1控制發(fā)送速度,不同於方式0:收/發(fā)都需要由TxD送出移位時鐘。
?T1作串列傳輸速率發(fā)生器時初始化包括:
選定時器工作方式2(TMOD選8位自動重裝);
將計算(或查表)出的初值X賦給TH1,TL1;
啟動T1(SETBTR1);
對T1不要開中斷
!!工作方式1的接收/發(fā)送P.153-154?串行口的初始化包括:
對SCON選工作方式對PCON設串列傳輸速率加倍位“SMOD”(缺省值=0)
如果是接收數(shù)據(jù),仍要先置“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,產(chǎn)生串列傳輸速率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,產(chǎn)生串列傳輸速率1200bps發(fā)送副程式接收副程式SOUT:
SIN:
MOVA,@R0MOVA,SBUF
MOVC,PMOVC,PCPLCCPLC
MOV
ACC.7,C
ANLA,#7FH
INCR0MOV@R1,AMOVSBUF,AINCR1CLRTICLRRIRETRETP157例
(續(xù))刪除刪除?由於串列傳輸速率固定,常用於單片機間通訊。數(shù)據(jù)由8+1位組成,通常附加的一位
(TB8/RB8)用於“奇偶校驗”。工作方式2:——P.154
9位UART(1+8+1+1位)兩種串列傳輸速率?方式2的串列傳輸速率=fosc
2SMOD/64
即:fosc
1/32或fosc
1/64兩種?奇偶校驗是檢驗串行通信雙方傳輸?shù)臄?shù)據(jù)正確與否的一個措施,並不能保證通信數(shù)據(jù)的傳輸一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版摩托車二手交易評估與鑒定服務合同4篇
- 2025非全日制勞務派遣合同樣本:二零二五年度用工協(xié)議3篇
- 二零二五版廠房租賃合同標準:租賃廠房周邊環(huán)境維護責任3篇
- 2025年度環(huán)保監(jiān)測軟件服務升級及數(shù)據(jù)統(tǒng)計分析合同3篇
- 2025年度補充耕地指標出讓與農(nóng)業(yè)科技推廣合同3篇
- 二零二五年度古董藝術(shù)品售后服務與維權(quán)合同3篇
- 2025年度配音行業(yè)人才培養(yǎng)與輸送合同4篇
- 2025年度旅游紀念品采購合同書下載3篇
- 2025年度高速公路養(yǎng)護勞務分包合同范本
- 2025年度個人二手房交易合同樣本7篇
- 勞務協(xié)議范本模板
- 2024年全國職業(yè)院校技能大賽高職組(生產(chǎn)事故應急救援賽項)考試題庫(含答案)
- 2025大巴車租車合同范文
- 老年上消化道出血急診診療專家共識2024
- 人教版(2024)數(shù)學七年級上冊期末測試卷(含答案)
- 2024年國家保密培訓
- 2024年公務員職務任命書3篇
- CFM56-3發(fā)動機構(gòu)造課件
- 會議讀書交流分享匯報課件-《殺死一只知更鳥》
- 2025屆撫州市高一上數(shù)學期末綜合測試試題含解析
- 公司印章管理登記使用臺賬表
評論
0/150
提交評論