版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第7章章 MCS-51的串行口的串行口 7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.1 串行口控制寄存器串行口控制寄存器SCON7.1.2 特殊功能寄存器特殊功能寄存器PCON 7.2 串行口的串行口的4種工作方式種工作方式7.2.1 串行口的工作方式串行口的工作方式07.2.2 串行口的工作方式串行口的工作方式17.2.3 串行口的工作方式串行口的工作方式27.2.4 串行口的工作方式串行口的工作方式3 7. 3 多機(jī)通信多機(jī)通信 7. 4 波特率的制定方法波特率的制定方法 7. 5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用第第7章章 MCS-51的串行口的串行口全雙工全雙工的的異步異步通訊串行口
2、。通訊串行口。4種工作方式種工作方式 ,波特率由片內(nèi)定時(shí)器波特率由片內(nèi)定時(shí)器/計(jì)數(shù)器控制。計(jì)數(shù)器控制。每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求。每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求。除用于串行通訊,還可用來除用于串行通訊,還可用來擴(kuò)展并行擴(kuò)展并行I/O口口。7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)串行口內(nèi)部結(jié)構(gòu)如下圖,兩個物理上獨(dú)立的接收和發(fā)送緩沖器,可同時(shí)收、串行口內(nèi)部結(jié)構(gòu)如下圖,兩個物理上獨(dú)立的接收和發(fā)送緩沖器,可同時(shí)收、發(fā)數(shù)據(jù)。發(fā)數(shù)據(jù)。兩個緩沖器共用一個特殊功能寄存器字節(jié)地址兩個緩沖器共用一個特殊功能寄存器字節(jié)地址: SBUF(99H) 。 控制寄存器共兩個控制寄存器共兩個: 特殊功能寄存器特殊
3、功能寄存器SCON和和PCON。7.1.1 串行口控制寄存器串行口控制寄存器SCON字節(jié)地址字節(jié)地址98H,可位尋址,格式如圖所示,可位尋址,格式如圖所示。 (1) SM0、SM1串行口串行口4種工作方式的選擇位種工作方式的選擇位SM0SM1方式方式功功 能能 說說 明明000 同步移位寄存器方式同步移位寄存器方式(用于擴(kuò)展用于擴(kuò)展I/O口口), fosc/12011 8位異步收發(fā),波特率可變位異步收發(fā),波特率可變(由定時(shí)器控制由定時(shí)器控制)102 9位異步收發(fā),波特率為位異步收發(fā),波特率為fosc/64或或fosc/32113 9位異步收發(fā),波特率可變位異步收發(fā),波特率可變(由定時(shí)器控制由定
4、時(shí)器控制)(2) SM2 多機(jī)通信控制位多機(jī)通信控制位 用于用于方式方式2或或方式方式3中。當(dāng)串行口以方式中。當(dāng)串行口以方式2或方式或方式3接收時(shí):接收時(shí):如果如果SM2=1,只有當(dāng)接收到的第,只有當(dāng)接收到的第9位數(shù)據(jù)位數(shù)據(jù)(RB8) 為為“1”時(shí),才將接時(shí),才將接收到的前收到的前8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUF,并將,并將RI置置“1” ,產(chǎn)生中斷請求,產(chǎn)生中斷請求; 當(dāng)當(dāng)接收到的第接收到的第9位數(shù)據(jù)位數(shù)據(jù)(RB8) 為為“0”時(shí),則將接收到的前時(shí),則將接收到的前8位數(shù)據(jù)丟棄。位數(shù)據(jù)丟棄。如果如果SM2=0,則不論第,則不論第9位數(shù)據(jù)是位數(shù)據(jù)是“1”還是還是“0”,都將前,都將前8位數(shù)據(jù)位數(shù)據(jù)
5、送入送入SBUF中,并將中,并將RI置置“1” ,產(chǎn)生中斷請求。,產(chǎn)生中斷請求。在方式在方式1時(shí),如果時(shí),如果SM2=1,則只有收到停止位時(shí)才會激活,則只有收到停止位時(shí)才會激活RI。在方式在方式0時(shí),時(shí),SM2必須為必須為0。(3) REN 允許串行接收位允許串行接收位 由軟件置由軟件置“1”或清或清“0”。REN=1 允許串行口接收數(shù)據(jù)。允許串行口接收數(shù)據(jù)。REN=0 禁止串行口接收數(shù)據(jù)。禁止串行口接收數(shù)據(jù)。 (4) TB8發(fā)送的第發(fā)送的第9位數(shù)據(jù)位數(shù)據(jù)方式方式2和和3時(shí),時(shí),TB8是要發(fā)送的第是要發(fā)送的第9位數(shù)據(jù),可作為奇偶校驗(yàn)位數(shù)據(jù),可作為奇偶校驗(yàn)位使用,也可作為地址幀或數(shù)據(jù)幀的標(biāo)志。位
6、使用,也可作為地址幀或數(shù)據(jù)幀的標(biāo)志。TB8 =1為地址幀為地址幀, TB8 =0為數(shù)據(jù)幀。為數(shù)據(jù)幀。(5) RB8接收到的第接收到的第9位數(shù)據(jù)位數(shù)據(jù)方式方式2和和3時(shí)時(shí),RB8存放接收到的第存放接收到的第9位數(shù)據(jù)。位數(shù)據(jù)。在方式在方式1,如果,如果SM2=0,RB8是接收到的停止位。是接收到的停止位。在方式在方式0,不使用,不使用RB8。(6) TI發(fā)送中斷標(biāo)志位發(fā)送中斷標(biāo)志位方式方式0時(shí)時(shí),串行發(fā)送第,串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)由硬件置位數(shù)據(jù)結(jié)束時(shí)由硬件置“1”。其它工作方式其它工作方式,串行口發(fā)送停止位的開始時(shí)置,串行口發(fā)送停止位的開始時(shí)置“1”。TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢
7、,也可申請中斷。表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。CPU響應(yīng)中斷后響應(yīng)中斷后,在中斷服務(wù)程序中向在中斷服務(wù)程序中向SBUF寫入要發(fā)送的下寫入要發(fā)送的下一幀數(shù)據(jù)。一幀數(shù)據(jù)。TI必須由軟件清必須由軟件清0。(7) RI接收中斷標(biāo)志位接收中斷標(biāo)志位 方式方式0時(shí)時(shí),接收完第,接收完第8位數(shù)據(jù)時(shí),位數(shù)據(jù)時(shí),RI由硬件置由硬件置1。其它工作方式其它工作方式,串行接收到停止位時(shí),該位置,串行接收到停止位時(shí),該位置“1”。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷表示一幀數(shù)據(jù)接收完畢,并申請中斷,要求要求CPU從接收從接收SBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。取走數(shù)據(jù)。該位的狀態(tài)也可供
8、軟件查詢。RI必須由軟件清必須由軟件清“0”。7.1.2 特殊功能寄存器特殊功能寄存器PCON字節(jié)地址為字節(jié)地址為87H,沒有位尋址功能,沒有位尋址功能。 SMOD: 波特率選擇位。波特率選擇位。例如例如: 方式方式1的波特率的計(jì)算公式為的波特率的計(jì)算公式為: 方式方式1波特率波特率=(2SMOD/32) 定時(shí)器定時(shí)器T1的溢出率的溢出率當(dāng)當(dāng)SMOD=1時(shí),要比時(shí),要比SMOD=0時(shí)的波特率加倍,也稱時(shí)的波特率加倍,也稱SMOD位為位為波特率倍增位波特率倍增位。7.2 串行口的串行口的4種工作方式種工作方式7.2.1 方式方式0 同步移位寄存器輸入輸出方式,常用于外接移位寄存器,以同步移位寄存
9、器輸入輸出方式,常用于外接移位寄存器,以擴(kuò)展并行擴(kuò)展并行I/O口???。 8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。波特率固定為位。波特率固定為fosc/12。幀格式如下。幀格式如下: 7.2.1 方式方式01. 方式方式0發(fā)送發(fā)送 當(dāng)當(dāng)CPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令時(shí),產(chǎn)生的指令時(shí),產(chǎn)生一個正脈沖,串行口即把一個正脈沖,串行口即把SBUF中的中的8位數(shù)據(jù)以位數(shù)據(jù)以fosc/12的固定的固定波特率從波特率從RXD引腳串行輸出,低位在先引腳串行輸出,低位在先, TXD引腳輸出同步引腳輸出同
10、步移位脈沖移位脈沖,發(fā)送完,發(fā)送完8位數(shù)據(jù)置位數(shù)據(jù)置“1”中斷標(biāo)志位中斷標(biāo)志位TI。時(shí)序如圖所。時(shí)序如圖所示。示。2. 方式方式0接收接收 方式方式0接收時(shí),接收時(shí),REN為串行口接收允許接收控制位,為串行口接收允許接收控制位,REN=0,禁止接收。,禁止接收。 REN=1,允許接收。,允許接收。當(dāng)當(dāng)CPU向串行口的向串行口的SCON寄存器寫入控制字寄存器寫入控制字(置為方式置為方式0,并置,并置“1”REN位,同時(shí)位,同時(shí)RI=0) 時(shí),產(chǎn)生一個正脈沖,串行口即開始接收數(shù)據(jù)。時(shí),產(chǎn)生一個正脈沖,串行口即開始接收數(shù)據(jù)。引腳引腳RXD為數(shù)據(jù)輸入端,為數(shù)據(jù)輸入端,TXD為移位脈沖信號輸出端,為移位
11、脈沖信號輸出端,接收器也以接收器也以fosc/12的固定波特率采樣的固定波特率采樣RXD引腳的數(shù)據(jù)信息,當(dāng)引腳的數(shù)據(jù)信息,當(dāng)接收到接收到8位數(shù)據(jù)時(shí)置位數(shù)據(jù)時(shí)置“1”中斷標(biāo)志中斷標(biāo)志RI。表示一幀數(shù)據(jù)接收完畢,。表示一幀數(shù)據(jù)接收完畢,可進(jìn)行下一幀數(shù)據(jù)的接收。時(shí)序如下圖可進(jìn)行下一幀數(shù)據(jù)的接收。時(shí)序如下圖: 7.2.1 方式方式0方式方式0下,下,SCON中的中的TB8、RB8位沒有用到,發(fā)送或接收完位沒有用到,發(fā)送或接收完8位數(shù)據(jù)由硬件將中斷標(biāo)志位位數(shù)據(jù)由硬件將中斷標(biāo)志位TI或或RI置置“1” ,CPU響應(yīng)中斷。響應(yīng)中斷。TI或或RI標(biāo)志位須由用戶軟件清標(biāo)志位須由用戶軟件清“0”,可采用如下指令,
12、可采用如下指令: CLR TI; TI位清位清“0”CLR RI ; RI位清位清“0”方式方式0時(shí),時(shí),SM2位位(多機(jī)通訊控制位多機(jī)通訊控制位) 必須為必須為0。7.2.1 方式方式07.2.2 方式方式1SM0、SM1=01。用于數(shù)據(jù)的串行發(fā)送和接收。用于數(shù)據(jù)的串行發(fā)送和接收。TXD腳和腳和RXD腳分別用于發(fā)送和接收數(shù)據(jù)。腳分別用于發(fā)送和接收數(shù)據(jù)。方式方式1收發(fā)一幀的數(shù)據(jù)為收發(fā)一幀的數(shù)據(jù)為10位,位,1個起始位個起始位(0) ,8個數(shù)據(jù)位,個數(shù)據(jù)位,1個停止位個停止位(1) ,先發(fā)送或接收最低位。幀格式如圖所示。,先發(fā)送或接收最低位。幀格式如圖所示。波特率由下式確定波特率由下式確定: 方
13、式方式1波特率波特率= (2SMOD/32) 定時(shí)器定時(shí)器T1的溢出率的溢出率SMOD為為PCON寄存器的最高位的值寄存器的最高位的值(0或或1) 。 1. 方式方式1發(fā)送發(fā)送 方式方式1輸出時(shí),數(shù)據(jù)位由輸出時(shí),數(shù)據(jù)位由TXD端輸出,端輸出,當(dāng)當(dāng)CPU執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。圖中的指令,就啟動發(fā)送。圖中TX時(shí)鐘的頻率就是發(fā)送的波特率。發(fā)送開始時(shí),內(nèi)部發(fā)送控制信號時(shí)鐘的頻率就是發(fā)送的波特率。發(fā)送開始時(shí),內(nèi)部發(fā)送控制信號變變SEND*變?yōu)橛行?,將起始位向變?yōu)橛行?,將起始位向TXD輸出。輸出。此后,每經(jīng)過一個此后,每經(jīng)過一個TX時(shí)鐘周期,便產(chǎn)生一個
14、移位脈沖,并由時(shí)鐘周期,便產(chǎn)生一個移位脈沖,并由TXD輸輸出一個數(shù)據(jù)位。出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置位數(shù)據(jù)位全部發(fā)送完畢后,置“1”中斷標(biāo)志位中斷標(biāo)志位TI,然后然后SEND*信號失效。信號失效。7.2.2 方式方式12. 方式方式1接收接收 數(shù)據(jù)從數(shù)據(jù)從RXD(P3. 0) 引腳輸入。當(dāng)檢測到起始位的負(fù)跳變時(shí),則開始接收。引腳輸入。當(dāng)檢測到起始位的負(fù)跳變時(shí),則開始接收。 定時(shí)控制信號有兩種定時(shí)控制信號有兩種(如圖所示如圖所示) ,一種是接收移位時(shí)鐘,一種是接收移位時(shí)鐘(RX時(shí)鐘時(shí)鐘) ,它的頻,它的頻率和傳送的波特率相同。另一種是位檢測器采樣脈沖,它的頻率是率和傳送的波特率相同
15、。另一種是位檢測器采樣脈沖,它的頻率是RX時(shí)鐘時(shí)鐘的的16倍。也就是在倍。也就是在1位數(shù)據(jù)期間,有位數(shù)據(jù)期間,有16個采樣脈沖,以波特率的個采樣脈沖,以波特率的16倍的速率倍的速率采樣采樣RXD引腳狀態(tài),當(dāng)采樣到引腳狀態(tài),當(dāng)采樣到RXD端從端從1到到0的跳變時(shí)就啟動檢測器,的跳變時(shí)就啟動檢測器,接收的接收的值是值是3次連續(xù)采樣次連續(xù)采樣(第第7、8、9個脈沖時(shí)采樣個脈沖時(shí)采樣) 取其中兩次相同的值,以確認(rèn)是取其中兩次相同的值,以確認(rèn)是否是真正的起始位否是真正的起始位(負(fù)跳變負(fù)跳變) 的開始。的開始。7.2.2 方式方式1當(dāng)一幀數(shù)據(jù)接收完畢以后,必須同時(shí)滿足以下兩個條件,當(dāng)一幀數(shù)據(jù)接收完畢以后,
16、必須同時(shí)滿足以下兩個條件,這次接收才真正有效。這次接收才真正有效。 RI=0,即上一幀數(shù)據(jù)接收完成時(shí),即上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請求已發(fā)出的中斷請求已被響應(yīng),被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說明中的數(shù)據(jù)已被取走,說明“接收接收SBUF”已空。已空。 SM2=0或收到的停止位或收到的停止位=1(方式方式1時(shí),停止位已進(jìn)入時(shí),停止位已進(jìn)入RB8) ,則收到的數(shù)據(jù)裝入則收到的數(shù)據(jù)裝入SBUF和和RB8(RB8裝入停止位裝入停止位) ,且置,且置“1”中斷標(biāo)志中斷標(biāo)志RI。若這兩個條件不同時(shí)滿足,收到的數(shù)據(jù)不能裝入若這兩個條件不同時(shí)滿足,收到的數(shù)據(jù)不能裝入SBUF,該,該幀數(shù)據(jù)將丟失
17、。幀數(shù)據(jù)將丟失。7.2.2 方式方式17.2.3 方式方式29位異步通信接口。位異步通信接口。每幀數(shù)據(jù)均為每幀數(shù)據(jù)均為11位位,1位起始位位起始位0,8位位數(shù)據(jù)位數(shù)據(jù)位(先低位先低位) ,1位可程控的第位可程控的第9位數(shù)據(jù)和位數(shù)據(jù)和1位停止位。幀位停止位。幀格式見下圖。格式見下圖。方式方式2的波特率由下式確定的波特率由下式確定: 方式方式2波特率波特率= (2SMOD/64) fosc 1. 方式方式2發(fā)送發(fā)送發(fā)送前,先根據(jù)通訊協(xié)議由軟件發(fā)送前,先根據(jù)通訊協(xié)議由軟件設(shè)置設(shè)置TB8(例如,雙機(jī)通訊時(shí)例如,雙機(jī)通訊時(shí)的奇偶校驗(yàn)位或多機(jī)通訊時(shí)的地址的奇偶校驗(yàn)位或多機(jī)通訊時(shí)的地址/數(shù)據(jù)的標(biāo)志位數(shù)據(jù)的標(biāo)
18、志位) 。方式方式2發(fā)送數(shù)據(jù)波形如圖所示。發(fā)送數(shù)據(jù)波形如圖所示。7.2.3 方式方式2補(bǔ)充:補(bǔ)充:奇偶校驗(yàn)奇偶校驗(yàn) “奇偶校驗(yàn)奇偶校驗(yàn)”是一種檢錯方法,即在傳送字符的各位是一種檢錯方法,即在傳送字符的各位之外,再傳送之外,再傳送1位奇位奇/偶校驗(yàn)位??刹捎闷嫘r?yàn)或偶偶校驗(yàn)位。可采用奇校驗(yàn)或偶校驗(yàn)。校驗(yàn)。 奇校驗(yàn):奇校驗(yàn):一個字節(jié)前面加一位校驗(yàn)位使得一個字節(jié)前面加一位校驗(yàn)位使得“1”的個數(shù)保持為的個數(shù)保持為奇數(shù),若八位二進(jìn)制數(shù)中奇數(shù),若八位二進(jìn)制數(shù)中“1”的個數(shù)為偶數(shù),則校驗(yàn)位為的個數(shù)為偶數(shù),則校驗(yàn)位為“1”;若八位二進(jìn)制數(shù)中;若八位二進(jìn)制數(shù)中“1”的個數(shù)為奇數(shù),則校驗(yàn)位為的個數(shù)為奇數(shù),則校驗(yàn)位
19、為“0”。如:。如: 1 0110,0101 0 0110,0001 偶校驗(yàn):偶校驗(yàn):一個字節(jié)前面加一位校驗(yàn)位使得一個字節(jié)前面加一位校驗(yàn)位使得“1”的個數(shù)保持為的個數(shù)保持為偶數(shù),若八位二進(jìn)制數(shù)中偶數(shù),若八位二進(jìn)制數(shù)中“1”的個數(shù)為偶數(shù),則校驗(yàn)位為的個數(shù)為偶數(shù),則校驗(yàn)位為“0”;若八位二進(jìn)制數(shù)中;若八位二進(jìn)制數(shù)中“1”的個數(shù)為奇數(shù),則校驗(yàn)位為的個數(shù)為奇數(shù),則校驗(yàn)位為“1”。如:如: 1 0100,0101 0 0100,0001 例例7-1 方式方式2發(fā)送在雙機(jī)通訊中的應(yīng)用。發(fā)送在雙機(jī)通訊中的應(yīng)用。下面的發(fā)送中斷服務(wù)程序,是在雙機(jī)通訊中,以下面的發(fā)送中斷服務(wù)程序,是在雙機(jī)通訊中,以TB8作為奇作
20、為奇偶校驗(yàn)位,處理方法為數(shù)據(jù)寫入偶校驗(yàn)位,處理方法為數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的奇之前,先將數(shù)據(jù)的奇偶校驗(yàn)位寫入偶校驗(yàn)位寫入TB8,以保證采用,以保證采用偶校驗(yàn)偶校驗(yàn)發(fā)送。發(fā)送。PIPTI: PUSH PSW ; 現(xiàn)場保護(hù)現(xiàn)場保護(hù) PUSH Acc SETB RS1 ; 選擇第選擇第2組工作寄存器區(qū)組工作寄存器區(qū) CLR RS0 CLR TI ; 發(fā)送中斷標(biāo)志清發(fā)送中斷標(biāo)志清“0” MOV A, R0; 取數(shù)據(jù)取數(shù)據(jù) MOV C, P ; 校驗(yàn)位送校驗(yàn)位送TB8,采用偶校驗(yàn)采用偶校驗(yàn) MOV TB8, C MOV SBUF, A ; 啟動發(fā)送啟動發(fā)送 INC R0 ; 數(shù)據(jù)指針加數(shù)據(jù)指針加
21、1 POP Acc ; 恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 POP PSW RETI ; 中斷返回中斷返回2. 方式方式2接收接收 SM0、SM1=10,且,且REN=1。數(shù)據(jù)由。數(shù)據(jù)由RXD端輸入,接收端輸入,接收11位位信息。當(dāng)位檢測邏輯采樣到信息。當(dāng)位檢測邏輯采樣到RXD引腳從引腳從1到到0的負(fù)跳變,并判的負(fù)跳變,并判斷起始位有效后,便開始接收一幀信息。在接收器完第斷起始位有效后,便開始接收一幀信息。在接收器完第9位數(shù)位數(shù)據(jù)后,需滿足以下兩個條件,才能將接收到的數(shù)據(jù)送入據(jù)后,需滿足以下兩個條件,才能將接收到的數(shù)據(jù)送入SBUF。(1) RI=0,意味著接收緩沖器為空。,意味著接收緩沖器為空。(2) SM2=
22、0或接收到的第或接收到的第9位數(shù)據(jù)位位數(shù)據(jù)位RB8=1時(shí)。時(shí)。當(dāng)上述兩個條件滿足時(shí),接收到的數(shù)據(jù)送入當(dāng)上述兩個條件滿足時(shí),接收到的數(shù)據(jù)送入SBUF(接收緩沖接收緩沖器器) ,第,第9位數(shù)據(jù)送入位數(shù)據(jù)送入RB8,并置,并置“1”RI。若不滿足這兩個條。若不滿足這兩個條件,接收的信息將被丟棄。件,接收的信息將被丟棄。 7.2.3 方式方式2 串行口方式串行口方式2接收數(shù)據(jù)的時(shí)序波形如圖所示。接收數(shù)據(jù)的時(shí)序波形如圖所示。7.2.3 方式方式2例例7-2 方式方式2接收在雙機(jī)通訊中的應(yīng)用。接收在雙機(jī)通訊中的應(yīng)用。本例與上例相對應(yīng)。若附加的第本例與上例相對應(yīng)。若附加的第9位數(shù)據(jù)為校驗(yàn)位,在接收程序中位數(shù)
23、據(jù)為校驗(yàn)位,在接收程序中應(yīng)作偶校驗(yàn)處理,設(shè)應(yīng)作偶校驗(yàn)處理,設(shè)1組寄存器區(qū)的組寄存器區(qū)的R0為數(shù)據(jù)緩沖器指針。為數(shù)據(jù)緩沖器指針。PIRI: PUSH PSWPUSH AccSETB RS0 ; 選擇第選擇第1組寄存器區(qū)組寄存器區(qū)CLR RS1CLR RI MOV A, SBUF ; 收到數(shù)據(jù)送收到數(shù)據(jù)送A MOV C, PJNC L1JNB RB8, ERP ; ERP為出錯處理程序?yàn)槌鲥e處理程序AJMP L2L1: JB RB8, ERPL2:MOV R0, AINC R0POP AccPOP PSWERP: ; 出錯處理程序段出錯處理程序段RETI7.2.4 方式方式3當(dāng)當(dāng)SM0、SM1=1
24、1,串行口工作在方式,串行口工作在方式3。方式。方式3為波特率為波特率可變的可變的9位異步通訊方式,位異步通訊方式,除波特率外,方式除波特率外,方式3和方式和方式2相相同同。方式。方式3發(fā)送和接收數(shù)據(jù)的時(shí)序波形見方式發(fā)送和接收數(shù)據(jù)的時(shí)序波形見方式2的圖。的圖。方式方式3的波特率由下式確定的波特率由下式確定:方式方式3波特率波特率=(2SMOD/32) 定時(shí)器定時(shí)器T1的溢出率的溢出率7.3 多機(jī)通訊多機(jī)通訊多個多個MCS-51單片機(jī)利用串行口可進(jìn)行多機(jī)通訊。要保證主單片機(jī)利用串行口可進(jìn)行多機(jī)通訊。要保證主機(jī)與所選擇的從機(jī)實(shí)現(xiàn)可靠地通訊,必須保證串行口具有機(jī)與所選擇的從機(jī)實(shí)現(xiàn)可靠地通訊,必須保證
25、串行口具有識別功能。識別功能。串行口控制寄存器串行口控制寄存器SCON中的中的SM2位就是滿足這一條件而位就是滿足這一條件而設(shè)置的設(shè)置的多機(jī)通訊控制位多機(jī)通訊控制位。原理是在串行口以方式。原理是在串行口以方式2(或方式或方式3) 接收時(shí):接收時(shí):若若SM2=1,表示允許多機(jī)通訊,這時(shí)出現(xiàn)兩種可能情況,表示允許多機(jī)通訊,這時(shí)出現(xiàn)兩種可能情況: (1) 接收到的第接收到的第9位數(shù)據(jù)為位數(shù)據(jù)為1時(shí),數(shù)據(jù)才裝入時(shí),數(shù)據(jù)才裝入SBUF,并,并 將中斷標(biāo)志將中斷標(biāo)志RI置置“1”,向,向CPU發(fā)出中斷請求發(fā)出中斷請求; (2) 接收到的第接收到的第9位數(shù)據(jù)為位數(shù)據(jù)為0時(shí),則不產(chǎn)生中斷標(biāo)志,信時(shí),則不產(chǎn)生中
26、斷標(biāo)志,信 息將拋棄。息將拋棄。若若SM2=0,則接收的第,則接收的第9位數(shù)據(jù)不論是位數(shù)據(jù)不論是0還是還是1,都產(chǎn)生,都產(chǎn)生RI=1中斷標(biāo)志,接收到的數(shù)據(jù)裝入中斷標(biāo)志,接收到的數(shù)據(jù)裝入SBUF中。中。應(yīng)用上述特性,便可實(shí)現(xiàn)應(yīng)用上述特性,便可實(shí)現(xiàn)MCS-51的多機(jī)通訊。的多機(jī)通訊。設(shè)多機(jī)系統(tǒng)中有一主機(jī)和設(shè)多機(jī)系統(tǒng)中有一主機(jī)和3個個8031從機(jī),如下圖。從機(jī),如下圖。主機(jī)的主機(jī)的RXD與所有從機(jī)的與所有從機(jī)的TXD端相連,端相連,TXD與所有從機(jī)的與所有從機(jī)的RXD端相連。從機(jī)的地址分別為端相連。從機(jī)的地址分別為00H、01H和和02H。7.3 多機(jī)通訊多機(jī)通訊多機(jī)通訊工作過程多機(jī)通訊工作過程:
27、(1) 從機(jī)串行口編程為方式從機(jī)串行口編程為方式2或方式或方式3接收,且將接收,且將SM2和和REN位置位置“1” ,使從機(jī)只處于多機(jī)通訊且接收地址幀的狀態(tài)。,使從機(jī)只處于多機(jī)通訊且接收地址幀的狀態(tài)。(2) 在主機(jī)和某一個從機(jī)通信之前,主機(jī)先將從機(jī)地址在主機(jī)和某一個從機(jī)通信之前,主機(jī)先將從機(jī)地址(即準(zhǔn)備接即準(zhǔn)備接收數(shù)據(jù)的從機(jī)收數(shù)據(jù)的從機(jī)) 發(fā)送給各從機(jī)發(fā)送給各從機(jī)(主機(jī)發(fā)出的地址信息的第(主機(jī)發(fā)出的地址信息的第9位位為為1) ,接著才傳送數(shù)據(jù)或命令,接著才傳送數(shù)據(jù)或命令(數(shù)據(jù)(數(shù)據(jù)(包括命令包括命令) 信息的第信息的第9位為位為0)。當(dāng)主機(jī)向各從機(jī)發(fā)送地址時(shí),各從機(jī)的串行口接收到的第當(dāng)主機(jī)向各
28、從機(jī)發(fā)送地址時(shí),各從機(jī)的串行口接收到的第9位信息位信息RB8為為1,且由于,且由于SM2=1,則將中斷標(biāo)志位,則將中斷標(biāo)志位RI置置“1” ,各從機(jī)各從機(jī)8031響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。在中斷服務(wù)子程序中,判斷主機(jī)送來的地址是否和本機(jī)地址在中斷服務(wù)子程序中,判斷主機(jī)送來的地址是否和本機(jī)地址相符合,若為本機(jī)地址,則該從機(jī)將相符合,若為本機(jī)地址,則該從機(jī)將SM2位清位清“0” ,準(zhǔn)備接準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令收主機(jī)的數(shù)據(jù)或命令; 若地址不相符,則保持若地址不相符,則保持SM2=1狀態(tài)。狀態(tài)。7.3 多機(jī)通訊多機(jī)通訊(3) 接著主機(jī)發(fā)送數(shù)據(jù)幀,此時(shí)各從機(jī)串行口接收到的
29、接著主機(jī)發(fā)送數(shù)據(jù)幀,此時(shí)各從機(jī)串行口接收到的RB8=0,只有與前面地址相符合的從機(jī)系統(tǒng)只有與前面地址相符合的從機(jī)系統(tǒng) (即已經(jīng)將即已經(jīng)將SM2位清位清“0”的從機(jī)的從機(jī)) 才能激活中斷標(biāo)志位才能激活中斷標(biāo)志位RI,從而進(jìn)入中斷服務(wù)程序,從而進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中接收主機(jī)的數(shù)據(jù)在中斷服務(wù)程序中接收主機(jī)的數(shù)據(jù)(或命令或命令) ; 其它的從機(jī)其它的從機(jī)因因SM2保持為保持為1,并且,并且RB8=0不激活中斷標(biāo)志不激活中斷標(biāo)志RI,不能進(jìn)入中斷,所接收的數(shù)據(jù)丟失不作處理,從而保證主機(jī)不能進(jìn)入中斷,所接收的數(shù)據(jù)丟失不作處理,從而保證主機(jī)和從機(jī)間通訊的正確性。和從機(jī)間通訊的正確性。 前圖所示的
30、多機(jī)系統(tǒng)是主從式,由主機(jī)控制多機(jī)之間的通訊,前圖所示的多機(jī)系統(tǒng)是主從式,由主機(jī)控制多機(jī)之間的通訊,從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實(shí)現(xiàn)。從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實(shí)現(xiàn)。7.3 多機(jī)通訊多機(jī)通訊7.4 波特率的制定方法波特率的制定方法方式方式0和方式和方式2的波特率是固定的的波特率是固定的; 方式方式1和方式和方式3波特率可由波特率可由定時(shí)器定時(shí)器T1的溢出率來確定。的溢出率來確定。 7.4.1 波特率的定義波特率的定義定義定義: 串行口每秒鐘發(fā)送串行口每秒鐘發(fā)送(或接收或接收) 二進(jìn)制數(shù)據(jù)的位數(shù)稱為波二進(jìn)制數(shù)據(jù)的位數(shù)稱為波特率。特率。對于定時(shí)器的不同工作方式,得到的波特率的范圍不一樣,對于定
31、時(shí)器的不同工作方式,得到的波特率的范圍不一樣,因?yàn)椋?jì)數(shù)位數(shù)的不同。因?yàn)?,?jì)數(shù)位數(shù)的不同。7.4.2 定時(shí)器定時(shí)器T1產(chǎn)生波特率的計(jì)算產(chǎn)生波特率的計(jì)算(1) 方式方式0,波特率固定為時(shí)鐘頻率,波特率固定為時(shí)鐘頻率fosc的的1/12,且不受,且不受SMOD位的值的影響。若位的值的影響。若fosc=12MHz,波特率為,波特率為fosc/12即即1Mb/s。(2) 方式方式2,波特率與,波特率與SMOD位的值有關(guān)。位的值有關(guān)。方式方式 2 波特率波特率= (2SMOD/64) fosc若若fosc=12MHz: SMOD=0 波特率波特率=187. 5kb/s; SMOD=1 波特率波特率=375kb/s (3) 串行口工作在方式串行口工作在方式1或方式或方式3時(shí)時(shí),常用定時(shí)器,常用定時(shí)器T1作為波特率作為波特率發(fā)生器,其波特率為發(fā)生器,其波特率為: 波特率波特率= (2S
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 制定職業(yè)發(fā)展路線圖計(jì)劃
- 印刷行業(yè)美工工作總結(jié)
- 《豪宅精裝修解讀》課件
- 《制肺部疾病》課件
- 2023年山東省聊城市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年山東省菏澤市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年河南省許昌市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年內(nèi)蒙古自治區(qū)呼和浩特市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年貴州省遵義市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 《糖尿病飲食護(hù)理》課件
- 三級合伙人制度
- 2024年湖北省黃石市黃石港區(qū)政府雇員招聘37人公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 礦業(yè)施工組織設(shè)計(jì)方案
- 椎體感染的護(hù)理查房
- 產(chǎn)后飲食的健康宣教-課件
- 兒科案例完整-川崎病課件
- RFJ 006-2021 RFP型人防過濾吸收器制造與驗(yàn)收規(guī)范(暫行)
- 電子行業(yè)認(rèn)證行業(yè)深度研究報(bào)告
- 2022年10月自考00318公共政策試題及答案含解析
- 四川省瀘州市2023-2024學(xué)年高二上學(xué)期期末考試語文試題
- 個人簡歷電子版表格下載
評論
0/150
提交評論