版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基本概念RS-232接口MCS-51的串行接口單片機與單片機之間的通信IIC總線第
章
串行口通信技術(shù)本章內(nèi)容SingleChipMicrocomputer1.實訓(xùn)目的(1)復(fù)習(xí)掌握定時器的功能和編程使用。(2)理解串行通信與并行通信的兩種方式。(3)掌握串行通信的重要指標(biāo):字符幀和波特率。(4)初步了解MCS-51單片機串行口的使用方法。實訓(xùn)
單片機之間的雙機通信2.實訓(xùn)引入
單片機間經(jīng)常需要互相傳遞信息--通信.3.實訓(xùn)程序甲機發(fā)送程序參考如下:
MOVTMOD,#20H MOVTL1,#0F4H MOVTH1,#0F4H SETBTR1 MOVSCON,#40H MOVR0,#20H MOVR7,#08HSTART:MOVA,@R0 MOVSBUF,AWAIT:JBCTI,CONT AJMPWAITCONT:INCR0 DJNZR7,START SJMP$乙機接收及顯示程序參考如下:
MOVTMOD,#20H MOVTL1,#0F4H MOVTH1,#0F4H SETBTR1 MOVSCON,#40H MOVR0,#20H MOVR7,#08H SETBRENWAIT:JBCRI,READ AJMPWAITREAD:MOVA,SBUF MOV@R0,A INCR0 DJNZR7,WAITDISP:LCALLDISPLAY SJMPDISP4.實訓(xùn)分析與總結(jié)分析程序可以看出,通信雙方都有對單片機定時器的編程(注意發(fā)送、接收程序的前4條指令),而且雙方對定時器的編程完全相同。這說明,MCS-51單片機在進(jìn)行串行通信時,是與定時器的工作有關(guān)的。定時器用來設(shè)定串行通信數(shù)據(jù)的傳輸速度。在串行通信中,傳輸速度是用波特率來表征的,有關(guān)波特率與定時器的關(guān)系以及編程在8.3.3節(jié)介紹。
MCS-51單片機串行接口一、串行通信概述1、什么叫串行通信?
在生活中同學(xué)們排橫隊行走——并行;排縱隊行走——串行。計算機中在傳輸信息、數(shù)據(jù)時也有并行、串行的問題。0010001001P1.0P1.1P1.2P1.3RXDTXD單片機外設(shè)1外設(shè)21111110101000接收設(shè)備發(fā)送設(shè)備2、同步通信、異步通信
同步——發(fā)送設(shè)備時鐘與接收設(shè)備時鐘嚴(yán)格一致。校驗字符2校驗字符1數(shù)據(jù)n………數(shù)據(jù)2數(shù)據(jù)1同步字符2同步字符1異步——發(fā)送時鐘與接收時鐘不一定相等。空閑位停止位奇偶校驗位5~8位數(shù)據(jù)起始位空閑位3、串行通信的方向單工
A
發(fā)
B發(fā)半雙工
A
發(fā)收
B
收發(fā)例如:廣播電臺收音機例如:對講機全雙工
A
發(fā)收
B
收發(fā)例如:電話機4、波特率即串行通信速率。b/s、bps在異步通信中,單位時間內(nèi)所傳送的有效二進(jìn)制位數(shù)——波特率。舉例、設(shè)有一幀信息,1個起始位、8個數(shù)據(jù)位、1個停止位,傳輸速率為每秒240個字符。求波特率。解:(1+8+1)×240=2400b/s=2400波特。
5、串行通信接口發(fā)送:CPUD7D6D5D4D3D2D1D0發(fā)送寄存器SBUF01D0D1D2D3D4D5D6D7發(fā)送時鐘:接收:D0D1D2D3D4D5D6D710D7D6D5D4D3D2D1D0CPU接收時鐘接收數(shù)據(jù)寄存器SBUF二、MCS-51機串行接口單片機內(nèi)有通用異步接收/發(fā)送器UART。全雙工,4種工作方式,波特率可編程設(shè)置,可中斷。1、串口的組成從編程角度講來看主要由以下寄存器組成。
SBUF——串行發(fā)送/接收數(shù)據(jù)緩沖器是兩個物理單元,共用一個地址(99H)SMODSMOD位用于決定波特率的倍數(shù)。020=1倍121=2倍PCON——電源控制寄存器SCON——串行口控制寄存器SM0SM1SM2RENTB8RB8
TI
RITI/RI:中斷請求標(biāo)志位(前面已講過)RB8:接收的第九位數(shù)TB8:發(fā)送的第九位數(shù)REN:允許接收控制位SM2:多機通信控制位(常與RB8配合,決定是否激活RI)SM0、SM1:工作方式選擇位(四種工作方式)內(nèi)部結(jié)構(gòu)框圖51內(nèi)部總線SBUF零檢測器移位時鐘STARTSHIFT
發(fā)送控制器TXCLOCKTISENDDSQCLSTARTRIRECEIVERX接收控制器SHIFTCLOCK11111110輸入移位寄存器SBUF51內(nèi)部總線讀SBUF寫SBUF串行口中斷P3.1TXD裝載SBUFREN/RIP3.0RXD串型口的工作模式和控制寄存器SCON
SM0SM1模式功能波特率
000同步移位寄存器模式Fosc/12
0111+8+1位異步通信UART可變
1021+9+1位異步通信UARTFosc/64或/32
1131+9+1位異步通信UART可變SM0SM1SM2RENTB8RB8TIRI
模式選擇多機通訊位允許接收位
發(fā)送、接收第9位
發(fā)送、接收標(biāo)志2、串行口的工作方式(1)方式0:同步移位寄存器方式
波特率固定為fosc/12RXD——接收發(fā)送數(shù)據(jù)
TXD——產(chǎn)生同步移位脈沖接收/發(fā)送完,置位RI/TI,(要求SM2=0)
D7
D6
D5
D4
D3
D2
D1
D0
D0
D1
D2
D3
D4
D5
D6
D7發(fā)送接收無起始位,無停止位??捎糜诓⒖诘臄U(kuò)展。方式0
內(nèi)部結(jié)構(gòu)框圖51內(nèi)部總線SBUF零檢測器移位時鐘STARTSHIFT
發(fā)送控制器TXCLOCKTISENDDSQCLSTARTRIRECEIVERX接收控制器SHIFTCLOCK11111110輸入移位寄存器SBUF51內(nèi)部總線讀SBUF寫SBUF串行口中斷P3.1TXD裝載SBUFREN/RIP3.0RXD(S6)Fosc/12(2)方式1:8位UART波特率為(2SMOD×T1的溢出率)/32,可變。一幀信息10位。D0D1D2D3D4D5D6D7停止位起始位發(fā)送D7D6D5D4D3D2D1D0起始位停止位接收送RB8發(fā)送完置位TI。當(dāng)接收到數(shù)據(jù)后,置位RI是有條件的。即:REN=1,RI=0且SM2=0或SM2=1但是接收到的停止位為1。此時,數(shù)據(jù)裝載SBUF,RI置1,停止位進(jìn)入RB8。
(3)方式2、方式3:9位UART
一般用于多機通信。一幀信息11位。
D0D1D2D3D4D5D6D7TB8停止位起始位發(fā)送發(fā)送完數(shù)據(jù)置位TI。
TB8D7D6D5D4D3D2D1D0起始位停止位接收接收到有效數(shù)據(jù)完畢,置位RI的條件:REN=1,RI=0且SM2=0或接收到第9位數(shù)據(jù)為1,此時,數(shù)據(jù)裝載SBUF,RI置1,第9位數(shù)據(jù)(TB8)RB8。
送RB81/161/2T1溢出10SMOD1/2focs/210SMOD模式2串行口的波特率B模式1、3時串行口的波特率B1/16focs/12模式0串行口的波特率B串行口四種模式時,因移位脈沖來源不同而使串行口的波特率B不同(如圖所示)B=focs/12B=focs/32或=fosc/64
B=1/32×T1溢出率或=1/16×T1溢出率發(fā)送、接收控制器發(fā)送、接收控制器發(fā)送、接收控制器TL1(8位)TH1(8位)震蕩器1/12TF1中斷控制T1引腳TR1GATEINT1C/T=1C/T=08位+1計數(shù)器8位初值寄存器T1溢出率=Yc=1/TcTc=(256-N)*12/foscYc=fosc/[12×(256-TH1)]溢出率是指每秒定時器溢出的次數(shù)波特率=2SMOD×Yc
32模式0、2時的波特率的計算模式0:波特率B=fosc/12fosc為系統(tǒng)頻率模式2:B=1/64*fosc(SMOD=0時)或B=1/32*fosc(SMOD=1時)其中:SMOD為電源控制寄存器PCON的最高位。返回本節(jié)目錄模式1、3時的波特率的計算
B=1/16×T1溢出率(SMOD=1時)或:B=1/32×T1溢出率(SMOD=0時)其中:T1溢出率=fosc/12×[1/(256-TH1)];TH1為初值所以:B=fosc/192×[1/(256-TH1)](SMOD=1時)或:B=fosc/384×[1/(256-TH1)](SMOD=0時)這樣,我們可以得到求TH1(初值)的計算公式:
TH1=256-[fosc/(384XB)];(SMOD=0時)
TH1=256-[fosc/(192XB)];(SMOD=1時)【舉例】:設(shè)fosc為11.0592MHz,波特率為1200Hz,求TH(設(shè):SMOD=0)?!窘狻浚河蒙鲜龉?/p>
TH1=256-[11.059MHz/(384X1200)]=232=0E8H
返回本節(jié)目錄方式2波特率:(固定)2SMOD/64×fosc3、波特率的設(shè)置方式0、方式2固定。方式1,方式3可變。波特率=2SMOD/32×(T1的溢出率)
T1溢出率=單位時間內(nèi)溢出次數(shù)=1/(T1的定時時間)而T1的定時時間t就是T1溢出一次所用的時間。此情況下,一般設(shè)T1工作在模式2(8位自動重裝初值)。
N=28-t/T,t=(28-N)T=(28-N)×12/fosc所以,T1溢出率=1/t=fosc/12(28-N),故,波特率=2SMOD/32×fosc/12(256-N)。若已知波特率,則可求出T1的計數(shù)初值:
y=256-2SMOD×fosc/(波特率×32×12)
方式1和方式3的波特率可變,由定時器1的溢出率決定波特率/(b/s)fosc/MHzSMOD定時器1C/模式初始值方式0:1M方式2:375k方式1、3:62.5k19.2k9.6k4.8k2.4k1.2k137.5k11011012121211.05911.05911.05911.05911.05911.986612×1110000000××000000000××222222221××FFHFDHFDHFAHF4HE8H1DH72HFEEBHT波特率=一個機器周期是晶振的頻率f除以12(標(biāo)準(zhǔn)模式),每當(dāng)計數(shù)到256-TH1溢出一次(定時器1工作在方式2,8位),使用11.0592MHz晶振,TH1=0xFD,此時溢出速率為
11.0592/12/(0xFF-0xFD)=0.3072(MHz)
再除以32,為0.0096MHz,9600Hz!串行口的應(yīng)用在編制串行通訊程序時,首先要確定兩個參數(shù):
1,通訊雙方的“波特率”,必須保持嚴(yán)格一致;
2,傳輸數(shù)據(jù)的格式“字符幀格式”必須統(tǒng)一。MCS-51串口的4種模式中:0、2模式的波特率是固定的;1和3模式時波特率是可變且由定時器T1來作為波特率發(fā)生器,以模式2的方式工作。用T1作為波特率發(fā)生器時,根據(jù)波特率來計算T1的初值就成為串口程序初始化的主要任務(wù)之一。在通訊過程中,對標(biāo)志(RI、TI)的判斷是控制通訊全過程的關(guān)鍵環(huán)節(jié)。四種模式的接收、發(fā)送條件模式發(fā)送條件接收條件接收方式主要應(yīng)用0TI=0RI=0,REN=1查詢、中斷同步移位,系統(tǒng)擴(kuò)并口1TI=0RI=0,REN=1查詢、中斷8位數(shù)據(jù)異步傳送2、3TI=0RI=0,REN=1,SM2=0查詢(無中斷)8位數(shù)據(jù)+奇偶位的異步收發(fā)UARTRI=0,REN=1,RB8=1若SM2=0時查詢。若SM2=1時引發(fā)中斷8位數(shù)據(jù)+控制位的異步收發(fā)UART返回本節(jié)目錄模式1舉例(一)發(fā)送程序TXD.ASM
org0000hljmp0100horg0100hstart:movtmod,#20h;設(shè)定定時器T1為模式2movtl1,#0f4h;送定時初值(fosc=11.059)
movth1,#0f4h;波特率B=2400movpcon,#00h;PCON中的SMOD=0setbtr1;啟動定時器T1movscon,#40h;設(shè)定串行口為模式1loop2:movp1,#0ffhmova,p1;從P1口輸入數(shù)據(jù)
movsbuf,a;數(shù)據(jù)送SBUF發(fā)送loop1:jnbti,loop1;判斷數(shù)據(jù)是否發(fā)送完畢?
clrti;發(fā)送完一幀后清標(biāo)志
sjmploop2;返回繼續(xù)
endTXD.ASM發(fā)送程序框圖(查詢方式)SM0SM1SM2RENTB8RB8TIRIT1初始化啟動T1串行口初始化輸入數(shù)據(jù)到A發(fā)送一幀數(shù)據(jù)MOVSBUF,ATI=1?軟件清TIGATEC/TM1M0GATEC/TM1M0設(shè)定定時器T1的工作模式00000010B設(shè)定串行口模式寄存器SCON為01000000BYN(二)接收程序:RXD.ASM
org0000h ljmp0100h org0100hstart: movtmod,#20h ;選定T1為模式2(自動重裝)
movtl1,#0f4h ;設(shè)定初值
movth1,#0f4h ;同上
movpcon,#00h ;PCON的SMOD=0 setbtr1 ;啟動T1定時器
clrri ;清接收標(biāo)志
movscon,#50h ;設(shè)定串行口為方式1loop1:jnbri,loop1 ;判斷是否接收到數(shù)據(jù)?
clrri ;接收到數(shù)據(jù)后清接收標(biāo)志
mova,sbuf ;數(shù)據(jù)送累加器A movp1,a ;從P1口輸出
sjmploop1 ;回繼續(xù)
endRXD.ASM接收程序框圖(查詢方式)T1初始化啟動T1串行口初始化輸出數(shù)據(jù)到P1數(shù)據(jù)送AMOVA,SBUFRI=1?軟件清TISM0SM1SM2RENTB8RB8TIRIGATEC/TM1M0GATEC/TM1M0定時器TMOD(89H)的工作模式00000010B串行口模式寄存器SCON(98H)為01010000BYN思考題:用中斷的方式接收數(shù)據(jù)
org0000h ljmpstart
org0023h ljmprxd1
org0100hstart: movtmod,#20h;選定T1為模式2(自動重裝)
movtl1,#0f4h ;設(shè)定初值
movth1,#0f4h ;同上
movpcon,#00h;PCON的SMOD=0 setbtr1 ;啟動T1定時器
clrri ;清接收標(biāo)志
movscon,#50h;設(shè)定串行口為方式1 movie,#90h;開串行口中斷
sjmp$
org0200hrxd1: clrri ;接收到數(shù)據(jù)后清接收標(biāo)志
mova,sbuf ;數(shù)據(jù)送累加器A movp1,a ;從P1口輸出
retiendLJMPLJMPMOVCLR0000H0023H0100H0200HRXD.ASM接收程序框圖(中斷方式)T1初始化并啟動T1串行口初始化開串行口中斷等待RI中斷輸出數(shù)據(jù)到P1接收一幀數(shù)據(jù)MOVA,SBUF軟件清TIRETI主程序框圖中斷服務(wù)程序框圖EAXXESET1EX1ET0EX0設(shè)定中斷允許寄存器IE(A8H)為10010000B
模式2、3應(yīng)用舉例與模式1相比,模式2、3的主要特點:
1,9位數(shù)據(jù)的傳送格式:
其中:發(fā)送時第9位在TB8;接收時第9位在RB8中。
2,SM2:多機通訊位:
在模式0、1中:SM2=0。當(dāng)RI=1時便可以引發(fā)中斷。
在模式2、3中:
如果SM2=0,TI和RI雖然可以被激活,但不能引發(fā)中斷!如果SM2=1,且RB8=1時,RI被激活時可以引發(fā)中斷!根據(jù)上面特點,模式2、3可以:1,利用第9位數(shù)據(jù)來傳送、接收每一字節(jié)的“奇偶效驗位”。
2,利用SM2、RB8實現(xiàn)多機通訊功能。利用模式2,3進(jìn)行帶奇校驗的串行通訊程序流程圖數(shù)據(jù)送累加器APSW.P=1?SETBSCON.TB8CLRSCON.TB8MOVSBUF,ATI=1?CLRSCON.TIYESNONOYES發(fā)送端程序RI=1?MOVA,SBUFPSW.P⊕RB8=1?出錯處理CLRSCON.RIYESNO接收端程序使用“查詢法”編制的發(fā)送、接收程序NY數(shù)據(jù)送內(nèi)存使用模式3進(jìn)行多機通訊主機從機N從機4從機3從機2從機1串行數(shù)據(jù)線(2條)主從式多機通訊原理1,主機發(fā)送的數(shù)據(jù)可以傳送到各個從機,從機發(fā)送的數(shù)據(jù)只能為主機接收,從機之間不能直接通訊。2,主機和從機的設(shè)置為模式2或3,其中:主機的SM2=0(單機方式);從機的SM2=1(多機方式)。3,主機發(fā)送地址碼來尋找從機(地址碼特征是第9位數(shù)據(jù)為“1”
),所有從機都接收主機發(fā)出的地址碼(因為RB8=1),既RI=1引發(fā)中斷。在中斷服務(wù)程序中,將接收到地址碼與自己的地址進(jìn)行比較,被選中的從機將自己的SM2=0,并維持在中斷服務(wù)程序中保持與主機的聯(lián)系。而未被選中的從機仍保持SM2=1,并退出中斷服務(wù)程序。4,當(dāng)主機找到從機后,開始向從機發(fā)數(shù)據(jù)、命令(其特征為第9位=0)。由于選中的從機SM2=0,從機仍可以使用查詢RI的方式接收主機發(fā)出的數(shù)據(jù)或命令(而未選中的從機因RB8=0不會引發(fā)它們的中斷)。當(dāng)主機與從機的通訊完成后,該從機再將其SM2=1并退出中斷服務(wù)程序。主機重新發(fā)出另一個從機的地址,所有從機可以馬上響應(yīng)并接收地址信息。多機通訊中主機與從機之間的控制、狀態(tài)信息主機的控制命令:00H主機發(fā)送,從機接收;(控制從機的操作)01H主機接收,從機發(fā)送。從機狀態(tài)字:從機向主機發(fā)送的用于表征從機工作狀態(tài)的信息(如下圖)。ERRTRDYRRDY0:合法命令0:發(fā)送未就緒0:接收未就緒1:非法命令1:發(fā)送就緒1:接收就緒從機返回的狀態(tài)字主機程序框圖T1為定時,模式2B=1200,啟動T1設(shè)串口為模式3REN=1,SM2=0TB8=1設(shè)定程序數(shù)據(jù):R0~R5調(diào)用MCOMMU停機MCOMMU發(fā)送從機地址從機應(yīng)答?地址相符?發(fā)送命令字TB8=0從機應(yīng)答?命令正確?命令分類接收數(shù)據(jù)塊發(fā)送數(shù)據(jù)塊從機接收就緒?從機發(fā)送就緒?RET命令從機復(fù)位NNYYNNYYNNYY接收發(fā)送一:主機程序(初始化部分)
ORG2000HSTART: MOVTMOD,#20H ;定時器T1為模式2 MOVTH1,#0F4H MOVTL1,#0F4H ;波特率為1200(設(shè)外接6MHz晶體)
SETBTR1 ;啟動T1 MOVSCON,#0D8H ;串口為模式3允許接收,SM2=0,TB8=1 MOVPCON,#00H ;設(shè)PCON中的SMOD=0 MOVR0,#40H ;發(fā)送數(shù)據(jù)塊首地址送R0 MOVR1,#20H ;接收數(shù)據(jù)塊首地址送R1 MOVR2,#SLAVE ;被尋從機地址送R2 MOVR3,#00H/#01H ;主發(fā)、從收命令。或主收、從發(fā)命令
MOVR4,#14H ;發(fā)送數(shù)據(jù)塊長度送R4(20)
MOVR5,#14H ;接收數(shù)據(jù)塊長度送R5(20)
ACALLMCOM ;調(diào)用主機通訊子程序
SJMP$二:主機通訊子程序(MCOM)
ORG2100HMCOM: MOVA,R2 ;取從機地址
MOVSBUF,A JNBRI,$ CLRRI MOVA,SBUF XRLA,R2 ;核對兩個地址
JZMTXD2 ;相符時,轉(zhuǎn)MTXD2MTXD1:MOVSBUF,#0FFH ;返回地址錯誤時,發(fā)送從機復(fù)位信號
SETBTB8 ;設(shè)定地址標(biāo)志
SJMPMCOM ;重發(fā)從機地址,使所有從機重新判斷地址MTXD2:CLRTB8 ;準(zhǔn)備發(fā)送命令
MOVSBUF,R3 ;送出命令
JNBRI,$ ;等待從機應(yīng)答
CLRRI ;從機應(yīng)答后清標(biāo)志
MOVA,SBUF ;接收從機應(yīng)答命令
JNBACC.7,MTXD3 ;命令無錯時,則命令分類
SJMPMTXD1 ;命令錯返回重新聯(lián)絡(luò)MTXD3:CJNER3,#00H,MRXD ;從機發(fā)送主機接收時,轉(zhuǎn)MRXD
JNBACC.0,MTXD1 ;從機接收時,若從機未準(zhǔn)備好轉(zhuǎn)回MTXD4:MOVSBUF,@R0 ;若從機準(zhǔn)備好,則開始發(fā)送
JNBTI,$ CLRTI INCR0 DJNZR4,MTXD4 RETMRXD: JNBACC.1,MTXD1 ;從機發(fā)送未準(zhǔn)備好返回MRXD1:JNBRI,$ ;等待接收
CLRRI MOVA,SBUF INCR1 ;接收數(shù)據(jù)區(qū)指針加一
DJNZR5,MRXD1 ;未接收完則繼續(xù)(R5接收數(shù)據(jù)計數(shù)器)
RET END
ERR從機返回的狀態(tài)字TRDYRRDY0:合法命令
0:發(fā)送未就緒
0:接收未就緒1:非法命令
1:發(fā)送就緒
1:接收就緒從機程序框圖T1為定時,模式2B=1200,啟動T1設(shè)串口為模式3REN=1,SM2=0TB8=1設(shè)定程序參數(shù):R0~R3開串行口中斷停機保護(hù)現(xiàn)場接收地址符合本機?回送本機地址接收下一字符是命令嗎?命令分類本機發(fā)送準(zhǔn)備就緒?本機接收準(zhǔn)備就緒?發(fā)TRDY=1狀態(tài)字發(fā)RRDY=1狀態(tài)字發(fā)送數(shù)據(jù)接收數(shù)據(jù)發(fā)送完?接收完?保護(hù)現(xiàn)場返回NNYY發(fā)送命令接收命令非法命令送TRDY=0送RRDY=0NNNY主程序中斷服務(wù)程序三:從機主程序
ORG1000HSTART: MOVTMOD,#20H ;設(shè)定定時器T1為模式2 MOVTH1,#0F4H ;設(shè)定波特率為1200 MOVTL1,#0F4H SETBTR1 ;啟動定時器T1
MOVSCON,#0F8H
;設(shè)串口模式3,REN=1,SM2=1,TB8=1
MOVPCON,#00H MOVR0,#20H ;R0指向發(fā)送數(shù)據(jù)塊首地址
MOVR1,#40H ;R1指向接收數(shù)據(jù)塊首址
MOVR2,#14H ;R2賦發(fā)送數(shù)據(jù)塊長度
MOVR3,#14H ;R3賦接收數(shù)據(jù)塊長度
SETBEA SETBES
;開中斷
CLRRI ;清標(biāo)志RI準(zhǔn)備接收數(shù)據(jù)
SJMP$ ;等待中斷四:從機中斷服務(wù)程序
` ORG0023H LJMP0100H ORG0100HSINTS: CLRRI ;接收到地址后清RI
PUSHACC PUSHPSW ;保護(hù)現(xiàn)場
MOVA,SBUF ;接收主機送來得從機地址
XRLA,#SLAVE ;核實從機地址
JZSRXD1 ;若是本機地址轉(zhuǎn)SRXD1RETU: POPPSW ;返回主程序
POPACC ;恢復(fù)現(xiàn)場
RETI ;中斷返回SRXD1:CLRSM2 ;準(zhǔn)備接收主機數(shù)據(jù)/命令
MOVSBUF,#SLAVE ;向主機發(fā)回從機地址
JNBRI,$ ;等待主機的命令
CLRRI ;接收到主機命令后清RI JNBRB8,SRXD2 ;若是命令(RB8=0)則轉(zhuǎn)SRXD2繼續(xù)
SJMPRETU ;接收的不是命令時(RB8=1),返回SRXD2:MOVA,SBUF ;將接收到的命令送A CJNEA,#02H,NEXT ;命令合法NEXT: JCSRXD3 ;若命令合法(A>02H)則繼續(xù)
CLRTI ;命令不合法則清TI準(zhǔn)備發(fā)回ERR=1 MOVSBUF,#80H ;發(fā)送ERR=1的狀態(tài)字
SETBSM2 ;SM2重新置位
SJMPRETU ;返回主程序SRXD3:JZSCHRX ;若A=00H既主機發(fā)送從機接收轉(zhuǎn)SCHRX JBF0H,STXD ;若從機準(zhǔn)備好(F0H=1)時,轉(zhuǎn)STXD MOVSBUF,#00H ;未準(zhǔn)備好時,向主機發(fā)回TRXD=0信息
SETBSM2 SJMPRETU ;返回主程序STXD: MOVSBUF,#02H ;向主機發(fā)送TRDY=1的狀態(tài)字
JNBTI,$ ;等待發(fā)送完畢
CLRTI ;發(fā)送完畢后清標(biāo)志TILOOP1:MOVSBUF,@R0 ;開始發(fā)送數(shù)據(jù)塊
JNBTI,$ CLRTI INCR0 DJNZR2,LOOP1 SETBSM2 ;數(shù)據(jù)塊發(fā)送完畢
SJMPRETU ;返回主程序SCHRX:JBPSW.1,SRXD ;本機接收就緒時轉(zhuǎn)SRXD
MOVSBUF,#00H ;接收未準(zhǔn)備好時,向主機發(fā)RRDY=0 SETBSM2 SJMPRETU ;返回主程序SRXD: MOVSBUF,#01H ;向主機發(fā)送RRDY=1狀態(tài)字LOOP2:JNBRI,$ ;等待接收數(shù)據(jù)塊,開始接收數(shù)據(jù)塊
CLRRI MOV@R1,SBUF INCR1 DJNZR3,LOOP2
SETBSM2 ;數(shù)據(jù)塊接收完畢
SJMPRETU ;返回主程序
END返回本節(jié)目錄串行通信總線:RS232RS485IICSPIUSBCAN…4.6.3I2C總線標(biāo)準(zhǔn)與接口電路
I2C總線(InterIntegratedCircuitBus):是Philips公司推出的串行總線標(biāo)準(zhǔn)(為二線制)??偩€上擴(kuò)展的外圍器件及外設(shè)接口通過總線尋址,是具備總線仲裁和高低速設(shè)備同步等功能的高性能多主機總線。1.I2C總線工作原理組成:串行數(shù)據(jù)線SDA和串行時鐘線SCL構(gòu)成的,可發(fā)送和接收數(shù)據(jù)。要求:所有掛接在I2C總線上的器件和接口電路都應(yīng)具有I2C總線接口,且所有的SDA/SCL同名端相連??偩€上所有器件要依靠SDA發(fā)送的地址信號尋址,不需要片選線。特點:組成系統(tǒng)結(jié)構(gòu)簡單,占用空間小,無需專門的母板和插座,芯片管腳的數(shù)量少,無需片選信號,價格低。允許若干兼容器件共享總線,應(yīng)用比較廣泛??偩€的長度可達(dá)7.6m,傳送速度可達(dá)400kbps,標(biāo)準(zhǔn)速率為100kbps。支持多個組件。支持多主控器件(某時刻只能有一個主控器件)。I2C總線上所有設(shè)備的SDA,SCL引腳必須外接上拉電阻。2.I2C總線系統(tǒng)結(jié)構(gòu)
一個典型的I2C總線結(jié)構(gòu)如下圖所示。系統(tǒng)中所有的器件均有I2C總線接口,所有器件通過兩根線SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)連接到I2C總線上,并通過尋址識別。
I2C總線中的器件既可以作為主控器,也可以作為被控器,系統(tǒng)中每個器件均具有惟一的地址,各器件之間通過尋址確定數(shù)據(jù)交換方。任何時刻總線只能由一個主控制器,數(shù)據(jù)的傳輸只能在主、從器件間進(jìn)行。3.I2C總線協(xié)議
I2C總線在傳送數(shù)據(jù)過程中共有三種類型信號:開始信號、停止信號和應(yīng)答信號。開始信號:SCL保持高電平的狀態(tài)下,SDA出現(xiàn)下降沿。出現(xiàn)開始信號以后,總線被認(rèn)為“忙”。停止信號:SCL保持高電平的狀態(tài)下,SDA出現(xiàn)上升沿。停止信號過后,總線被認(rèn)為“空閑”。應(yīng)答信號:接收數(shù)據(jù)的器件在接收到8位數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的器件發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。
總線空閑:SCL和SDA都保持高電平??偩€忙:在數(shù)據(jù)傳送開始以后,SCL為高電平的時候,SDA的數(shù)據(jù)必須保持穩(wěn)定,只有當(dāng)SCL為低電平的時候才允許SDA上的數(shù)據(jù)改變。4.I2C總線的傳送格式
I2C總線的傳送格式為主從式,對系統(tǒng)中的某一器件來說有四種工作方式:主發(fā)送方式、從發(fā)送方式、主接收方式、從接收方式。
(1)主發(fā)送從接收
主器件產(chǎn)生開始信號以后,發(fā)送的第一個字節(jié)為控制字節(jié)。前七位為從器件的地址片選信號。最低位為數(shù)據(jù)傳送方向位(高電平表示讀從器件,低電平表示寫從器件),然后發(fā)送一個選擇從器件片內(nèi)地址的字節(jié),來決定開始讀寫數(shù)據(jù)的起始地址。接著再發(fā)送數(shù)據(jù)字節(jié),可以是單字節(jié)數(shù)據(jù),也可以是一組數(shù)據(jù),由主器件來決定。從器件每接收到一個字節(jié)以后,都要返回一個應(yīng)答信號(ASK=0)。主器件在應(yīng)答時鐘周期高電平期間釋放SDA線,轉(zhuǎn)由從器件控制,從器件在這個時鐘周期的高電平期間必須拉低SDA線,并使之為穩(wěn)定的低電平,作為有效的應(yīng)答信號。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流課程設(shè)計實驗
- 種蘑菇課程設(shè)計
- 中華人民共和國民法典知識競賽題庫及答案
- 2024幼兒園安全教育工作總結(jié)結(jié)尾(31篇)
- 2024年自來水公司年終工作總結(jié)(35篇)
- 液體混合裝置plc課程設(shè)計
- 玉雕課程設(shè)計
- 食品行業(yè)客服工作總結(jié)
- 客房清潔員的工作總結(jié)
- 中醫(yī)科醫(yī)師工作總結(jié)
- 深部真菌病課件
- 用戶界面測試
- 人工氣道濕化的護(hù)理培訓(xùn)課件
- 電網(wǎng)適用的法律法規(guī)標(biāo)準(zhǔn)規(guī)范清單
- 讀書分享-給教師的一百條建議
- GB/T 4269.3-2000農(nóng)林拖拉機和機械、草坪和園藝動力機械操作者操縱機構(gòu)和其他顯示裝置用符號第3部分:草坪和園藝動力機械用符號
- GB/T 11618.1-2008銅管接頭第1部分:釬焊式管件
- 開工復(fù)工第一課
- 安徽省淮南市鳳臺縣基層診所醫(yī)療機構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室地址信息
- 旅游服務(wù)禮儀說課市公開課金獎市賽課一等獎?wù)n件
- 【線性代數(shù)自考練習(xí)題】滇西應(yīng)用技術(shù)大學(xué)專升本真題匯總(附答案解析)
評論
0/150
提交評論