單片機(jī)原理及接口技術(shù)-第7章課件_第1頁
單片機(jī)原理及接口技術(shù)-第7章課件_第2頁
單片機(jī)原理及接口技術(shù)-第7章課件_第3頁
單片機(jī)原理及接口技術(shù)-第7章課件_第4頁
單片機(jī)原理及接口技術(shù)-第7章課件_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作單片機(jī)原理及接口技術(shù)單片機(jī)原理及接口技術(shù)主編:張毅剛主編:張毅剛 主講:主講: 張毅剛張毅剛湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作第第7 7章章 AT89C51單片機(jī)的串行口單片機(jī)的串行口 在單片機(jī)的應(yīng)用系統(tǒng)中,單機(jī)應(yīng)用非常廣泛,但在一些大型、智能化系統(tǒng)中,必須要由多個(gè)單片機(jī)或者多個(gè)單片機(jī)和多個(gè)其它計(jì)算機(jī)協(xié)同工作才能完成任務(wù),因此,必然涉及到它們之間的信息傳遞。 AT89C51單片機(jī)內(nèi)有一個(gè)全雙工串行通信接口。 本章應(yīng)重點(diǎn)掌握AT89C51中串行通信口的基本原理,有關(guān)的特殊功能寄存器,串行通信口的4種工作方式 ,以及串行通信的軟件編程。

2、達(dá)到對(duì)AT89C51中串行通信口的正確使用。(本課件交換次序)。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作串行口通信基本知識(shí)串行口通信基本知識(shí)1、串行通信和并行通信、串行通信和并行通信并行通信并行通信:即數(shù)據(jù)的各位同時(shí)傳送;特點(diǎn):傳送速率快,但數(shù)據(jù)線較多。串行通信:串行通信:即數(shù)據(jù)一位一位順序傳送。特點(diǎn):只要一根數(shù)據(jù)線,設(shè)備簡單,但傳送速率較慢。 計(jì)算機(jī)1 GND 計(jì)算機(jī)2 GND并行通信 計(jì)算機(jī)1 GND 計(jì)算機(jī)2 GND發(fā)送接收串行通信湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作串行口通信基本知識(shí)串行口通信基本知識(shí)2、串行通信中的異步通信方式與同步通信方式、串行通信中的異步通信方

3、式與同步通信方式異步通信異步通信:通信雙方使用各自的時(shí)鐘控制發(fā)送和接收。由起始位和結(jié)束位來實(shí)現(xiàn)收、發(fā)同步。 在異步通信中,數(shù)據(jù)是一幀一幀傳送的,幀為收發(fā)雙方傳數(shù)據(jù)的基本單位,一幀數(shù)據(jù)由一個(gè)起始位“0”,58位數(shù)據(jù)(低位在前),奇偶校驗(yàn)位或多機(jī)標(biāo)志位(可無),最后是一個(gè)停止位“1”構(gòu)成。42H數(shù)據(jù)幀結(jié)構(gòu)如圖所示(8位數(shù)據(jù),1位偶校驗(yàn)位)。起始位010000100校驗(yàn)位停止位TXDT1位數(shù)據(jù)的停留時(shí)間D0 D1D7湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作串行口通信基本知識(shí)串行口通信基本知識(shí)同步通信:同步通信:收發(fā)雙方的時(shí)鐘實(shí)現(xiàn)同步。同步傳送方式是一種連續(xù)傳送方式,適合于大量數(shù)據(jù)的高速傳送。

4、 在異步傳輸中,每一幀數(shù)據(jù)都要有起始位“0”和停止位“1” ,多占用了1/5的時(shí)間。同步通信方式由于收發(fā)雙方實(shí)現(xiàn)時(shí)鐘同步,所以不需要起始位和停止位,通信效率高,但硬件電路復(fù)雜。異步通信方式中起始位和停止位的作用異步通信方式中起始位和停止位的作用 異步通信方式,收發(fā)雙方時(shí)鐘頻率存在一定的誤差,接收方若不及時(shí)校準(zhǔn),就會(huì)產(chǎn)生接收錯(cuò)誤。所以,接收方每接收一幀數(shù)據(jù)后,利用上幀的停止位“1”和本幀的起始位“0” 的產(chǎn)生的下降沿,校準(zhǔn)一次找到數(shù)據(jù)的中點(diǎn)找到數(shù)據(jù)的中點(diǎn)。由于每接收一幀數(shù)據(jù)校準(zhǔn)一次,只要收發(fā)雙方時(shí)鐘頻率誤差不大,就不會(huì)產(chǎn)生接收錯(cuò)誤。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作0 0 1 0

5、0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 串行口通信基本知識(shí)串行口通信基本知識(shí)異步通信方式通過起始位異步通信方式通過起始位“0”校準(zhǔn)的作用示意校準(zhǔn)的作用示意起始位42H停止位55H一幀數(shù)據(jù)一幀數(shù)據(jù)一幀數(shù)據(jù)AAH同步異步不校準(zhǔn)異步校準(zhǔn)84HAAH4AH湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作串行口通信基本知識(shí)串行口通信基本知識(shí)3、串行通信制式、串行通信制式單工:單工:數(shù)據(jù)只能單向傳送;半雙工半雙工:數(shù)據(jù)雖能雙向傳輸,但任一時(shí)刻僅能單向傳送;全雙工雙工:收、發(fā)各用一根信號(hào)線,任何時(shí)刻通信雙方可以同時(shí)雙向傳輸串行數(shù)據(jù)。即:可以同時(shí)收、

6、發(fā)。4、波特率、波特率波特率定義:波特率定義:串行口每秒鐘發(fā)送(或接收)的位數(shù)稱為波特率。設(shè)發(fā)送每一位數(shù)據(jù)所需要的時(shí)間為T,則波特率 = 1/T。5、通信協(xié)議、通信協(xié)議 數(shù)據(jù)通信的雙方進(jìn)行數(shù)據(jù)傳輸?shù)囊恍┘s定,包括通信方式,波特率,幀格式,校驗(yàn)方式等,通信的雙方必須遵守統(tǒng)一的通信協(xié)議。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作AT89C51單片機(jī)串行通信口單片機(jī)串行通信口 AT89C51單片機(jī)內(nèi)有一個(gè)全雙工全雙工的串行通信口,可同時(shí)發(fā)送、接收數(shù)據(jù)。 有四種工作方式,幀格式有8、10、11位。 通信波特率可設(shè)置。7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作

7、AT89C51串行口內(nèi)部結(jié)構(gòu)如圖所示串行口內(nèi)部結(jié)構(gòu)如圖所示,兩個(gè)物理上獨(dú)立的發(fā)送緩沖器發(fā)送緩沖器和接收緩沖器接收緩沖器,可同時(shí)收、發(fā)數(shù)據(jù) (全雙工)。兩個(gè)緩沖器共用共用一個(gè)特殊功能寄存器字節(jié)地址:SBUF ( 99H )控制寄存器共兩個(gè):特殊功能寄存器SCON和PCON。 7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)MOVSBUF,AMOVA,SBUF發(fā)送引腳接收引腳湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作AT89C51串行口通信口的基本概念串行口通信口的基本概念7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)RXDTXDRXDTXD89C51 89C51 發(fā)送發(fā)送發(fā)送時(shí),只要將需要發(fā)送的字節(jié)送到發(fā)送緩沖器,發(fā)送

8、緩沖器,MOVSBUF,A則串行口自動(dòng)地按照指定的數(shù)據(jù)格式、波特率從TXD引腳發(fā)送。需要解決的問題需要解決的問題.如何指定發(fā)送數(shù)據(jù)格式和波特率,確定工作方式問題;.如何知道一個(gè)字節(jié)已經(jīng)發(fā)送完畢,發(fā)送完后才能發(fā)送下一個(gè)字節(jié);.多機(jī)通信及其它問題。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作AT89C51串行口通信口的基本概念串行口通信口的基本概念7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)RXDTXDRXDTXD89C51 89C51 接收接收啟動(dòng)接收后,串行口自動(dòng)接收RXD引腳串行數(shù)據(jù),接收完一幀數(shù)據(jù)后自動(dòng)送到接收緩沖器,接收緩沖器,只要將接收的字節(jié)讀出即可。MOVA,SBUF需要解決的問題需要解決的

9、問題.如何啟動(dòng)接收;.如何指定接收數(shù)據(jù)格式和波特率,確定工作方式問題;.如何知道已經(jīng)接收了一個(gè)字節(jié),以便及時(shí)讀走;.多機(jī)通信及其它問題。通過SFR解決問題湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作SCON 各位的意義(1). SM0、SM1串行口串行口4種工作方式的選擇位種工作方式的選擇位 SM0 SM1 方式 功 能 說 明 0 0 0 同步移位寄存器方式(用于擴(kuò)展I/O口) 0 1 1 8位異步收發(fā),波特率可變(由定時(shí)器控制) 1 0 2 9位異步收發(fā),波特率為fosc/64或fosc/32 1 1 3 9位異步收發(fā),波特率可變(由定時(shí)器控制)串行口控制寄存器串行口控制寄存器SCON

10、 字節(jié)地址98H,可位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作(2). SM2 多機(jī)通信控制位多機(jī)通信控制位 用于方式2或方式3中。 當(dāng)串行口以方式2或方式3接收時(shí),若SM2=1,表示多機(jī)通信功能多機(jī)通信功能有效。 方式1時(shí),如果SM2=1,則只有收到停止位時(shí)才會(huì)激活RI。 方式0時(shí),SM2必須為0。串行口控制寄存器串行口控制寄存器SCON 字節(jié)地址98H,可位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工學(xué)院信息與通

11、信工程學(xué)院電子信息教研室制作(3). REN允許串行接收位允許串行接收位 REN由軟件置“1”或清“0”。REN=1,允許串行口接收數(shù)據(jù);REN=0,禁止串行口接收數(shù)據(jù)。 程序中, 執(zhí)行 SETB REN,就啟動(dòng)串行口接收;執(zhí)行 CLR REN,就禁止串行口接收。串行口控制寄存器串行口控制寄存器SCON 字節(jié)地址98H,可位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作(4). TB8發(fā)送的第發(fā)送的第9位數(shù)據(jù)位數(shù)據(jù) 方式2和3時(shí),TB8是要發(fā)送的第9位數(shù)據(jù),由軟件寫入,可作奇偶校驗(yàn)位,也可

12、作地址幀或數(shù)據(jù)幀的標(biāo)志:1:地址幀,0:數(shù)據(jù)幀。(5). RB8接收到的第接收到的第9位數(shù)據(jù)位數(shù)據(jù) 方式2和3時(shí),RB8存放接收到的第9位數(shù)據(jù)。在方式1,若SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。串行口控制寄存器串行口控制寄存器SCON 字節(jié)地址98H,可位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作(6). TI發(fā)送中斷標(biāo)志位發(fā)送中斷標(biāo)志位 TI =1,表示發(fā)送SBUF空,即已將發(fā)送SBUF中的一幀數(shù)據(jù)發(fā)送結(jié)束,請(qǐng)求給出新發(fā)送數(shù)據(jù)。TI標(biāo)志,可供軟件查詢,也可申請(qǐng)中

13、斷。 方式0時(shí),串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)由硬件對(duì)TI置“1”; 其它工作方式,串行口發(fā)送停止位的開始時(shí)對(duì)TI置“1” ; CPU響應(yīng)中斷后,向發(fā)送SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。注意:注意:TI必須由軟件清0,即在中斷服務(wù)程序要對(duì) TI 清0。串行口控制寄存器串行口控制寄存器SCON 字節(jié)地址98H,可位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作(7). RI接收中斷標(biāo)志位接收中斷標(biāo)志位 RI =1,表示接收SBUF滿,即一幀數(shù)據(jù)接收完畢,請(qǐng)求讀走接收SBUF的接收數(shù)據(jù)。RI標(biāo)志,可供

14、軟件查詢,也可申請(qǐng)中斷。 方式0時(shí),接收完第8位數(shù)據(jù)時(shí),由硬件對(duì)RI置“1”。 其它工作方式,串行接收到停止位時(shí),由硬件對(duì)RI置“1”。 CPU響應(yīng)中斷后,讀走接收SBUF中接收的一幀數(shù)據(jù)。注意注意:RI必須由軟件清0,即在中斷服務(wù)程序要對(duì) RI 清0。串行口控制寄存器串行口控制寄存器SCON 字節(jié)地址98H,可位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.1 串行口控制寄存器串行口控制寄存器SCON 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1 GF0 PD IDL特殊功能控制寄存器特殊功能控制寄存器

15、PCON 字節(jié)地址87H,無位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.2 特殊功能寄存器特殊功能寄存器PCON PCON 各位的意義各位的意義(1). SMOD波特率選擇位波特率選擇位 例如:方式1的波特率的計(jì)算公式為: 方式1波特率= ( 2SMOD/32 )定時(shí)器T1的溢出率 也稱SMOD位為波特率倍增位。SMOD=1,波特率增加1倍。(2). GF1、GF0通用標(biāo)志位通用標(biāo)志位 這兩個(gè)標(biāo)志位可供用戶使用,可用軟件置1或清0。兩個(gè)標(biāo)志位用戶應(yīng)充分利用。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1

16、 GF0 PD IDL特殊功能控制寄存器特殊功能控制寄存器SCON 字節(jié)地址87H,無位尋址,格式如圖所示7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.1.2 特殊功能寄存器特殊功能寄存器PCON PCON 各位的意義(3). PD掉電方式位掉電方式位 若PD=1,單片機(jī)進(jìn)入掉電工作方式。(4). IDL待機(jī)方式位待機(jī)方式位 IDL=1,單片機(jī)進(jìn)入待機(jī)工作方式。 有關(guān)單片機(jī)的掉電工作方式和待機(jī)工作方式,請(qǐng)查閱相關(guān)資料。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.2 串行口的串行口的4種工作方式種工作方式 方式1、2、3才是真正意義的全雙工異步通信串行接口。在方式1、2、3時(shí),發(fā)送數(shù)據(jù)由TXD輸出

17、;接收數(shù)據(jù)由RXD輸入。全雙工同時(shí)發(fā)送和接收。RXDTXDRXDTXD89C51 89C51 發(fā)送時(shí),將需要發(fā)送的字節(jié)送到發(fā)送緩沖器,發(fā)送緩沖器,MOVSBUF,A 串行口自動(dòng)按指定的數(shù)據(jù)格式、波特率從TXD引腳發(fā)送。 啟動(dòng)接收后,串行口自動(dòng)接收RXD引腳串行數(shù)據(jù),接收完一幀數(shù)據(jù)后自動(dòng)送到接收緩沖器,接收緩沖器,只要將接收的字節(jié)讀出即可。MOVA,SBUF湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作方式方式1SM0、SM1=01 一幀數(shù)據(jù)為10位,1個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1個(gè)停止位(1),先發(fā)送或接收最低位。幀格式如圖所示7.2 串行口的串行口的4種工作方式種工作方式7.2.2 方式

18、方式1 起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位01 方式1波特率=(2SMOD/32)定時(shí)器T1的溢出率 SMOD為PCON寄存器的最高位的值(0或1)。溢出率:溢出率:每秒溢出的次數(shù),溢出率=1/定時(shí)時(shí)間湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作1. 方式方式1發(fā)送發(fā)送 當(dāng)執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動(dòng)發(fā)送。 串行口自動(dòng)自動(dòng)按如下過程發(fā)送:首先將起始位 0 向TXD輸出,此后,每經(jīng)過一個(gè)TX時(shí)鐘周期,便產(chǎn)生一個(gè)移位脈沖,并由TXD輸出一個(gè)數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置“1” TI。方式1發(fā)送數(shù)據(jù)的時(shí)序,如圖7-8所示。圖中T

19、X時(shí)鐘是發(fā)送的波特率。7.2 串行口的串行口的4種工作方式種工作方式7.2.2 方式方式1 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作2. 方式方式1接收接收 定時(shí)控制信號(hào)有兩種:接收移位時(shí)鐘(RX時(shí)鐘,頻率和波特率相同)和位檢測(cè)器采樣脈沖(頻率是RX時(shí)鐘的16倍)。 當(dāng)REN=1,啟動(dòng)接收,啟動(dòng)后,串行口自動(dòng)自動(dòng)按如下過程接收: (1). 當(dāng)采樣到RXD端從1到0的就啟動(dòng)檢測(cè)器,然后在接收數(shù)據(jù)中間3次連續(xù)采樣(第7、8、9個(gè)脈沖時(shí)采樣),進(jìn)行表決后確認(rèn)是否是真正的起始位( )的開始。7.2 串行口的串行口的4種工作方式種工作方式7.2.2 方式方式1 湖南理工學(xué)院信息與通信工程學(xué)院電子

20、信息教研室制作2. 方式方式1接收接收 (2).當(dāng)確認(rèn)起始位后,開始接收一幀數(shù)據(jù)。每接收一位數(shù)據(jù)時(shí), 也都進(jìn)行3次連續(xù)采樣(第7、8、9個(gè)脈沖時(shí)采樣),接收到值是3次采樣中至少2次相同的值,以保證接收到的數(shù)據(jù)位的準(zhǔn)確性。 (3).方式1不考慮多機(jī)通信,即SM2=0,當(dāng)一幀數(shù)據(jù)接收完后:. 若RI=0,表明上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請(qǐng)求已被響應(yīng),接收SBUF中的數(shù)據(jù)已被取走,即“接收SBUF”已空,則剛收到的數(shù)據(jù)裝入接收SBUF,且置“1”中斷標(biāo)志中斷標(biāo)志RI。. 若RI=1,則收到的數(shù)據(jù)不裝入接收SBUF,意味著該幀接收數(shù)據(jù)丟失。7.2 串行口的串行口的4種工作方式種工作方式7.

21、2.2 方式方式1 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作方式方式2SM0、SM1=109位異步通信方式位異步通信方式。一幀數(shù)據(jù)為11位,1個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1位可程控的第9位數(shù)據(jù)和1個(gè)停止位(1),先發(fā)送或接收最低位。幀格式如圖所示7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式201方式2波特率=(2SMOD/64)fOSCSMOD為PCON寄存器的最高位的值(0或1)。起始位 D0 D1 D2 D3 D4 D5 D6 D7 D8 停止位湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作1. 方式方式2發(fā)送發(fā)送 發(fā)送前,先根據(jù)通訊協(xié)議由軟件設(shè)置TB8(第

22、9位數(shù)據(jù))。 例如,雙機(jī)通訊:第9位作奇偶校驗(yàn)位。若是偶檢驗(yàn),一幀數(shù)據(jù)的9位中,“1”的個(gè)數(shù)為偶數(shù)。 多機(jī)通訊:第9位作地址/數(shù)據(jù)的標(biāo)志位。1:地址幀;0:數(shù)據(jù)幀。方式2發(fā)送數(shù)據(jù)波形如圖所示。7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作偶校驗(yàn)方法偶校驗(yàn)方法發(fā)送方發(fā)送方,保證發(fā)送的一幀數(shù)據(jù)的9位中,“1”的個(gè)數(shù)為偶數(shù)偶數(shù)。方法:方法:將要發(fā)送的數(shù)據(jù)放入A,將PPSW.0放入TB8第9位;7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 PSW Cy Ac F0 RS1 RS0 OV PA中“1”的個(gè)數(shù)為

23、奇數(shù), P=1; A中“1”的個(gè)數(shù)為偶數(shù),P=0。即: A中“1”的個(gè)數(shù)和P中“1”的個(gè)數(shù)一定是偶數(shù)偶數(shù)。接收方接收方,驗(yàn)證接收的一幀數(shù)據(jù)的9位中,“1”的個(gè)數(shù)為偶數(shù)偶數(shù)。方法:方法:接收數(shù)據(jù)放入A,將接收的第9位RB8與P比較,相等則正確。例如,例如,發(fā)送方發(fā)送方發(fā)送36H 00110110,(A)=36H P=0,TB8=0若接收方接收方接收數(shù)據(jù)為34H 00110100,RB8=0, (A)=34H P=1,RB8=0,P=1, RB8P,接收出錯(cuò)。奇偶標(biāo)志位湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作例例7-1 方式2發(fā)送在雙機(jī)通信中的應(yīng)用。 下面給出的方式2發(fā)送中斷服務(wù)程序,是在

24、雙機(jī)通信中,以TB8作為偶校驗(yàn)位,處理方法為數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的偶校驗(yàn)位寫入TB8,以保證采用偶校驗(yàn)發(fā)送。 主程序這里沒有給出,作一簡要介紹。 主程序中,必須作初始化設(shè)置,例如中斷設(shè)置,串行通信口方式2設(shè)置等。 主程序中,先發(fā)送第1幀,發(fā)送完后,進(jìn)入中斷服務(wù)程序,繼續(xù)發(fā)送第2、3、4 的后續(xù)幀。 實(shí)際的中斷服務(wù)程序,應(yīng)對(duì)發(fā)送幀計(jì)數(shù),發(fā)完后關(guān)中斷。7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作PIPTI: PUSH PSW ;現(xiàn)場保護(hù) PUSH Acc;用到了A,必須保護(hù) SETB RS1 ;選擇第2組工作寄存器

25、區(qū) CLR RS0;與主程序工作寄存器不沖突 CLR TI ;發(fā)送中斷標(biāo)志清“0” MOV A,R0;取要發(fā)送的數(shù)據(jù)MOV C,P ; A中1的個(gè)數(shù)為奇數(shù),P=1 MOV TB8,C; 校驗(yàn)位送TB8,采用偶校驗(yàn) MOV SBUF,A ;啟動(dòng)發(fā)送 INC R0 ;數(shù)據(jù)指針加1CLR RS1;恢復(fù)工作寄存器第恢復(fù)工作寄存器第0組組 POP Acc ;恢復(fù)現(xiàn)場 POP PSW RETI ;中斷返回7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作2. 方式方式2接收接收 當(dāng)REN=1,就啟動(dòng)接收。這時(shí),當(dāng)位檢測(cè)到RXD從1到0的,

26、并判斷起始位有效后,開始收一幀信息。 不考慮多機(jī)通信 (SM2=0) 時(shí),當(dāng)接收完完第9位數(shù)據(jù)后:. 若RI=0,表明上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請(qǐng)求已被響應(yīng),接收SBUF中的數(shù)據(jù)已被取走,即“接收SBUF”已空,則剛收到的數(shù)據(jù)裝入接收SBUF,第9位數(shù)據(jù)送入RB8,并置“1”中斷標(biāo)志RI。. 若RI=1,則收到的數(shù)據(jù)不裝入接收SBUF,意味著該幀接收數(shù)據(jù)丟失。7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作例例7-2 方式2接收在雙機(jī)通信中的應(yīng)用。 本例與例例7-1對(duì)應(yīng)。接收到的第9位數(shù)據(jù)為偶校驗(yàn)位,放在RB8

27、。若接收到的9位數(shù)據(jù)中“1”的個(gè)數(shù)不是偶數(shù),表示接收出錯(cuò)。判斷方法:接收數(shù)據(jù)送A后,若P = RB8,表示偶校驗(yàn)正確。程序中處理: P=1 ,RB8=0,轉(zhuǎn)出錯(cuò)處理P=0 ,RB8=1,轉(zhuǎn)出錯(cuò)處理中斷服務(wù)程序PIRI: PUSH PSWPUSH AccSETB RS0 ;選擇1組寄存器區(qū)CLR RS1CLR RI ;軟件清接收標(biāo)志RI7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作MOV A,SBUF ;收到數(shù)據(jù)送AMOV C,PJNC L1;C0,即P=0,轉(zhuǎn)L1JNB RB8,ERP ;P=1,RB80,出錯(cuò)AJMP L

28、2;P=1,RB81,正確L1: JB RB8,ERP;P=0,RB81,出錯(cuò)L2: MOV R0,A;接收數(shù)據(jù)正確,放入接收緩沖區(qū) INC R0;接收緩沖區(qū)指針下移CLR RS0;恢復(fù)工作寄存器第恢復(fù)工作寄存器第0組組 POP Acc POP PSWERP: ;出錯(cuò)處理程序段 RETI7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作關(guān)于數(shù)據(jù)校驗(yàn)關(guān)于數(shù)據(jù)校驗(yàn) 實(shí)際應(yīng)用中,為了確保接收正確,除了進(jìn)行奇偶校驗(yàn)外(一幀數(shù)據(jù)中兩位同時(shí)錯(cuò)同時(shí)錯(cuò)不能判斷),通常還要作縱向冗余校驗(yàn)縱向冗余校驗(yàn)。例如,發(fā)送方需要發(fā)送4字節(jié)數(shù)據(jù),則將4字節(jié)數(shù)

29、據(jù)異或作為第5字節(jié)(冗余幀冗余幀)發(fā)出。接收方,除奇偶校驗(yàn)正確外,還要保證接收的5字節(jié)數(shù)據(jù)異或結(jié)果為0,才認(rèn)為接收數(shù)據(jù)正確。7.2 串行口的串行口的4種工作方式種工作方式7.2.3 方式方式2 50H90H51H 73H52H 38H53H FEH54H 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 101111100 0 0 1 1 1 0 0 01 1 0 1 1 0 1 1 1 1 1 1 1 1 1 00 0 1 0 0 1 0 125HFEH38H90H73H25H1 0 0 1 0 0 0 00 1 1 1 0 0 1 10 0 1 1 1 0 0 01 1 1 1

30、1 1 1 00 0 1 0 0 1 0 1縱向偶校驗(yàn)湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作方式方式3SM0、SM1=11波特率可變的波特率可變的9位異步通信方式位異步通信方式。除波特率外,方式3和方式2相同。方式3的時(shí)序見方式2。 方式3波特率=(2SMOD/32)定時(shí)器T1的溢出率 SMOD為PCON寄存器的最高位的值(0或1)。 由于波特率可設(shè)置,方式3是最常用的方式。7.2 串行口的串行口的4種工作方式種工作方式7.2.4 方式方式3湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作 在串行通信中,發(fā)送、接收雙方的發(fā)送或接收波特率必須一致,通過軟件對(duì)AT89C51單片機(jī)串行口可

31、設(shè)定4種工作方式。方式0、方式2的波特率是固定的;方式1、方式3波特率由定時(shí)器T1的溢出率來確定。波特率定義:波特率定義:串行口每秒鐘發(fā)送(或接收)的位數(shù)稱為波特率。設(shè)發(fā)送每一位數(shù)據(jù)所需要的時(shí)間為T,則波特率 = 1/T。 對(duì)于定時(shí)器T1的不同工作方式,得到的波特率的范圍是不一樣的 ,因?yàn)槎〞r(shí)器的不同工作方式下計(jì)數(shù)位數(shù)不同。7.4 波特率的制定方法波特率的制定方法7.4.1 波特率的定義波特率的定義湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作串行口工作在方式串行口工作在方式0、方式、方式2的波特率是固定的的波特率是固定的(1). 方式0 波特率 = 時(shí)鐘頻率fosc1/12,不受SMOD位

32、值影響。若fosc=12MHz,波特率為fosc/12即1Mb/s。(2). 方式2 波特率=(2SMOD/64)fosc若fosc=12MHz:SMOD=0 波特率=187.5kb/s; SMOD=1 波特率=375kb/s 串行口工作在方式串行口工作在方式1、方式、方式3波特率由定時(shí)器波特率由定時(shí)器T1的溢出率來確定的溢出率來確定(3). 方式1、3波特率=(2SMOD/32)T1的溢出率 實(shí)際設(shè)定波特率時(shí),T1常設(shè)置為方式方式2定時(shí)(自動(dòng)裝初值)這種方式不僅操作方便,也可避免因軟件重裝初值而帶來的定時(shí)誤差,波特率比較準(zhǔn)確。7.4 波特率的制定方法波特率的制定方法7.4.2 定時(shí)器定時(shí)器T

33、1產(chǎn)生波特率的計(jì)算產(chǎn)生波特率的計(jì)算湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作方式方式1、方式、方式3時(shí),由波特率計(jì)算定時(shí)器時(shí),由波特率計(jì)算定時(shí)器T1方式方式2的初值的相關(guān)公式:的初值的相關(guān)公式:7.4 波特率的制定方法波特率的制定方法7.4.2 定時(shí)器定時(shí)器T1產(chǎn)生波特率的計(jì)算產(chǎn)生波特率的計(jì)算定時(shí)時(shí)間溢出率1T1 T112f 2 OSC8定時(shí)時(shí)間初值溢出率波特率1T322 SMOD波特率溢出率SMOD2 32 1T波特率定時(shí)時(shí)間322 1TSMOD12f 322 2 OSCSMOD8波特率初值波特率初值384f 2 2 OSCSMOD8湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作 實(shí)

34、際使用時(shí),為避免煩雜的初值計(jì)算,常用的波特率和初值X間的關(guān)系列成表7-2(P124),以供查用。7.4 波特率的制定方法波特率的制定方法7.4.2 定時(shí)器定時(shí)器T1產(chǎn)生波特率的計(jì)算產(chǎn)生波特率的計(jì)算湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作表表7-2有兩點(diǎn)需要注意有兩點(diǎn)需要注意:(1). fOSC為12MHz或6MHz,表中初值和相應(yīng)波特率之間有一定誤差。 例如,當(dāng)fOSC=6MHz ,SMOD=1, 9600波特率查表初值為FDH。實(shí)際上,初值FDH的對(duì)應(yīng)的波特率是10416,誤差816波特;初值FCH的對(duì)應(yīng)的波特率是7812。誤差1788波特。 調(diào)整fosc可消除誤差,例如fosc為1

35、1.0592MHz。若SMOD=0, 9600波特率查表對(duì)應(yīng)的初值為FDH,并沒有誤差。(2). 如果串行通訊選用很低的波特率,例如,波特率選為55,可將T1設(shè)置為方式方式1定時(shí)。但在T1溢出時(shí),需用在中斷服務(wù)程序中重新裝入初值。中斷響應(yīng)時(shí)間和執(zhí)行指令時(shí)間會(huì)使波特率產(chǎn)生一定的誤差,可用改變初值的方法加以調(diào)整。7.4 波特率的制定方法波特率的制定方法7.4.2 定時(shí)器定時(shí)器T1產(chǎn)生波特率的計(jì)算產(chǎn)生波特率的計(jì)算湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作例例7-3 若8031單片機(jī)的時(shí)鐘振蕩頻率為11.0592MHz,選用T1為方式2定時(shí)作為波特率發(fā)生器,波特率為2400b/s,求初值。 上述

36、結(jié)果可直接從表7-2中查到。 SMOD=0, 2400波特率查表對(duì)應(yīng)的初值為F4H。 這里時(shí)鐘振蕩頻率選為11.0592 MHz,就可使初值為整數(shù),從而產(chǎn)生精確的波特率。計(jì)算:7.4 波特率的制定方法波特率的制定方法7.4.2 定時(shí)器定時(shí)器T1產(chǎn)生波特率的計(jì)算產(chǎn)生波特率的計(jì)算波特率初值384f 2 2 OSCSMOD8240038410592001 1 256 92160010592001 256 24412 256 = F4H湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程 串行口的的方式0是移

37、位寄存器工作方式,主要用于擴(kuò)展并行I/O用,并不用于串行通信。 串行口的方式13是用于串行通信的,下面介紹雙機(jī)串行通信軟件編程,應(yīng)當(dāng)說明的是,軟件編程與上面介紹的各種串行標(biāo)準(zhǔn)的硬件接口電路無關(guān)。串行口通信的編程設(shè)計(jì)步驟串行口通信的編程設(shè)計(jì)步驟1. 編程前準(zhǔn)備編程前準(zhǔn)備. 確定工作方式,確定TMOD、SCON、 PCON、 IE、IP等相關(guān)SFR的值;. 根據(jù)波特率計(jì)算或查表定時(shí)器初值;湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程串行口通信的編程設(shè)計(jì)步驟串行口通信的編程設(shè)計(jì)步驟2. 發(fā)送編程發(fā)送

38、編程(1).主程序主程序. 主程序初始化各相關(guān)SFR設(shè)置,開啟波特率定時(shí)器;.確定發(fā)送數(shù)據(jù)系列,找到第1個(gè)發(fā)送數(shù)據(jù);. 要發(fā)送的第9位送TB8,將第1個(gè)發(fā)送數(shù)據(jù)放入SBUF。(2).中斷服務(wù)程序中斷服務(wù)程序. 判斷是TI=1?是,TI清0;. 判斷全部數(shù)據(jù)是否發(fā)送完畢;. 未完,找到要發(fā)送第i個(gè)數(shù)據(jù);. 要發(fā)送的第9位送TB8,將要發(fā)送的第i個(gè)數(shù)據(jù)放入SBUF。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程串行口通信的編程設(shè)計(jì)步驟串行口通信的編程設(shè)計(jì)步驟3. 接收編程接收編程(2).主程序主程序

39、. 主程序初始化各相關(guān)SFR設(shè)置,開啟波特率定時(shí)器;. 接收數(shù)據(jù)放置位置安排,確定指針;. REN置1,啟動(dòng)接收;(2).中斷服務(wù)程序中斷服務(wù)程序. 判斷是RI=1?是,RI清0;. 從SBUF讀出接收數(shù)據(jù),并讀出RB8進(jìn)行奇偶校驗(yàn);. 接收正確的數(shù)據(jù)放入指定位置,接收錯(cuò)誤另行處理;. 判斷是否接收完畢,是,REN清0關(guān)閉接收。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作1串行口方式串行口方式1應(yīng)用編程應(yīng)用編程例例7-4 用方式1雙機(jī)串行通信,收、發(fā)雙方均采用6MHz晶振,波特率為2400b/s,發(fā)送方把以78H、77H單元的內(nèi)容為首地址首地址,以76H、75H單元內(nèi)容減1為末地址末地址的

40、數(shù)據(jù)塊通過串行口發(fā)送給接收方。題意分析題意分析7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程75H40H76H 20H77H 00H78H 20H發(fā)送方要發(fā)送的數(shù)據(jù)塊的地址為2000H203FH。發(fā)送時(shí)先發(fā)送地址幀,再發(fā)送數(shù)據(jù)幀;接收方在接收時(shí)使用一個(gè)標(biāo)志位來區(qū)分接收的是地址還是數(shù)據(jù),然后將其分別存放到指定的單元中。當(dāng)接收地址時(shí),放在78H75H中;接收數(shù)據(jù)時(shí),放在78H75H指定的地址中。下面僅介紹采用中斷方式發(fā)送、接收的程序。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作例例7-4 6MHz晶振,波特率為2400b/s,每一幀信息為10

41、位,第0位為起始位,第18位為數(shù)據(jù)位,最后1位為停止位。編程準(zhǔn)備編程準(zhǔn)備:波特率為2400b/s, SMOD=1, 計(jì)算初值為F3H。7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程0 0 1 0 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1 GF0 PD IDLT1作波特率發(fā)生器,定時(shí)模式,方式21 0 0 0 0 0 0 080H20H串行口方式10 1 0 0/1 0 0 0 040H/50H湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作例例7-4 發(fā)送方甲機(jī)程序設(shè)計(jì)思想發(fā)送方甲機(jī)程序設(shè)計(jì)思想

42、(1). 在主程序主程序中,調(diào)用發(fā)送子程序(2). 發(fā)送子程序發(fā)送子程序. 初始化處理,設(shè)置相關(guān)特殊功能寄存器;. 先關(guān)閉中斷,采用查詢的方式發(fā)送地址幀,共4幀;. 發(fā)送地址幀完成后,作發(fā)送數(shù)據(jù)幀準(zhǔn)備,首地址送DPTR;開中斷,發(fā)送第1幀數(shù)據(jù),然后再中斷服務(wù)子程序中發(fā)送其它數(shù)據(jù)幀;. 判斷是否有數(shù)據(jù)幀發(fā)送完畢標(biāo)志(F0=1),若有標(biāo)志,返回。(3).中斷服務(wù)子程序中斷服務(wù)子程序. 數(shù)據(jù)指針下移,發(fā)送一幀數(shù)據(jù);.判斷數(shù)據(jù)幀是否發(fā)送完畢,若是設(shè)置數(shù)據(jù)幀發(fā)送完畢標(biāo)志(F0=1) 。7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信

43、工程學(xué)院電子信息教研室制作(1). 甲機(jī)發(fā)送程序甲機(jī)發(fā)送程序中斷方式中斷方式ORG 0000H LJMP MAIN ORG 0023H;串行口中斷地址 LJMP COM_INT ORG 1000HMAIN:MOV SP,#53H;設(shè)置堆棧指針MOV 78H,#20H;設(shè)置發(fā)送的數(shù)據(jù)塊的首、末地址MOV 77H,#00H MOV 76H,#20H MOV 75H,#40H ACALL TRANS;調(diào)用發(fā)送子程序HERE:SJMP HERE7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作TRANS:M

44、OV TMOD,#20H ;設(shè)置定時(shí)器工作方式 MOV TH1,#0F3H;設(shè)置計(jì)數(shù)器初值 MOV TL1,#0F3H MOV PCON,#80H;波特率加倍 SETB TR1;啟動(dòng)T1計(jì)數(shù)器計(jì)數(shù) MOV SCON,#40H;設(shè)置串行口工作方式1 MOV IE,#00H;先關(guān)中斷, 利用查詢發(fā)送地址幀 CLR F0 MOV SBUF,78H;發(fā)送首地址高8位WAIT1:JNB TI,WAIT1 CLR TI MOV SBUF,77H;發(fā)送首地址低8位WAIT2:JNB TI,WAIT2 CLR TI7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編

45、程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作MOV SBUF,76H;發(fā)送末地址高8位WAIT3:JNB TI,WAIT3 CLR TI MOV SBUF,75H;發(fā)送末地址低8位WAIT4:JNB TI,WAIT4 CLR TI MOV IE,#90H;開中斷, 采用中斷方式發(fā)送數(shù)據(jù) MOV DPH,78H MOV DPL,77H MOVX A,DPTR MOV SBUF,A;發(fā)送首個(gè)數(shù)據(jù)WAIT:JNB F0,WAIT;發(fā)送等待 RET7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作CO

46、M_INT:CLR TI;發(fā)送中斷標(biāo)志位TI清0 INC DPTR;數(shù)據(jù)指針加1, 準(zhǔn)備發(fā)送下個(gè)數(shù)據(jù) MOV A,DPH;判斷當(dāng)前是否發(fā)送數(shù)據(jù)的末地址 CJNE A,76H,END1;不是末地址則跳轉(zhuǎn) MOVA,DPL;同上 CJNE A,75H,END1 SETB F0;數(shù)據(jù)發(fā)送完畢, 置1標(biāo)志位 CLR ES ;關(guān)串行口中斷 CLR EA;關(guān)中斷 RETI;中斷返回END1: MOVX A,DPTR;將要發(fā)送的數(shù)據(jù)送A, 準(zhǔn)備發(fā)送 MOV SBUF,A;發(fā)送數(shù)據(jù) RETI;中斷返回 END7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南

47、理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作例例7-4 接收方乙機(jī)程序設(shè)計(jì)思想接收方乙機(jī)程序設(shè)計(jì)思想(1). 在主程序主程序中,調(diào)用接收子程序(2). 接收子程序接收子程序. 初始化處理,設(shè)置相關(guān)特殊功能寄存器;. 設(shè)置2個(gè)標(biāo)志,F(xiàn)0=1:地址幀收完,(7FH)=1:表示數(shù)據(jù)幀接收完;. 開中斷,在中斷服務(wù)子程序中接收;. 判斷是否有數(shù)據(jù)幀接收完畢標(biāo)志,若有標(biāo)志,返回。(3).中斷服務(wù)子程序中斷服務(wù)子程序. 判斷F0,是接收地址,還是數(shù)據(jù),分別放入不同位置;. F0=0是地址,判斷地址幀是否接收完畢,若接收完畢設(shè)置F0=1。. F0=1是數(shù)據(jù),判斷數(shù)據(jù)幀是否接收完畢,若接收完畢設(shè)置(7FH)=

48、1。7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作(2). 乙機(jī)接收程序乙機(jī)接收程序中斷方式中斷方式ORG 0000H LJMPMAINORG 0023HLJMP COM_INTORG 1000HMAIN: MOV SP,#53H;設(shè)置堆棧指針ACALL RECEI;調(diào)用接收子程序HERE:SJMP HERE7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作RECEI: MOV R0,#78H;設(shè)置地

49、址接收區(qū)MOV TMOD,#20H;設(shè)置定時(shí)器/計(jì)數(shù)器工作方式MOV TH1,#0F3H;設(shè)置波特率MOV TL1,#0F3HMOV PCON,#80H;波特率加倍SETB TR1;開計(jì)數(shù)器MOV SCON,#50H;設(shè)置串行口工作方式1,接收MOV IE,#90H;開中斷CLR F0;標(biāo)志位清“0”,先接收的是地址CLR 7FH;=1,表示接收數(shù)據(jù)結(jié)束WAIT:JNB 7F,WAIT;查詢標(biāo)志位等待接收RET7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作COM_INT:PUSH DPL;壓棧,

50、 保護(hù)現(xiàn)場PUSH DPHPUSH AccCLR RI;接收中斷標(biāo)志位清“0”JB F0,R_DATA; 接收是數(shù)據(jù)?地址?F0=0地址MOV A,SBUF;接收的是地址幀數(shù)據(jù)MOV R0,A;將地址幀送指定的寄存器DEC R0CJNE R0,#74H,RETNSETB F0;置標(biāo)志位, 地址接收完畢RETN: POP Acc;出棧, 恢復(fù)現(xiàn)場POP DPHPOP DPLRETI;中斷返回7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作R_DATA:MOV DPH,78H;數(shù)據(jù)接收程序區(qū)MOV D

51、PL, 77HMOV A,SBUF;接收數(shù)據(jù)MOVX DPTR,A;送指定的數(shù)據(jù)存儲(chǔ)單元中INC 77H;地址加1MOV A,77H;判斷當(dāng)前接收的數(shù)據(jù)的地址JNZ END2;是否應(yīng)向高8位進(jìn)位INC 78HEND2: MOV A,76HCJNE A,78H,RETN; 是否最后一幀數(shù)據(jù),否則繼續(xù)MOV A,75HCJNE A,77H,RETN;是最后一幀則各種標(biāo)志位清“0”7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作CLR ES;關(guān)閉串行口中斷CLR EA;關(guān)中斷SETB 7FH;設(shè)置數(shù)據(jù)接

52、收完畢標(biāo)志SJMP RETN;跳入返回子程序區(qū)END7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作2串行口方式串行口方式2應(yīng)用編程應(yīng)用編程方式2和方式1有兩點(diǎn)不同之處。不同點(diǎn)1:方式2接收/發(fā)送11位信息,第0位為起始位;第18位為數(shù)據(jù)位;第9位是程控位,該位可由用戶置TB8決定,在實(shí)際應(yīng)用中第9位通常作為奇偶校驗(yàn)位;第10位是停止位1。不同點(diǎn)2:方式2的波特率基本固定:波特率=振蕩器頻率/n。 當(dāng)SMOD=0時(shí),n=64。 當(dāng)SMOD=1時(shí),n=32。 方式2的使用和方式3基本一樣,由于方式3

53、波特率可由定時(shí)器的溢出率確定,應(yīng)用較多。方式2的編程應(yīng)用,可參照方式3的應(yīng)用編程。 7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作3串行口方式串行口方式3應(yīng)用編程應(yīng)用編程例例* 電路如圖所示,甲、乙雙機(jī)串行通信,要求:波特率9600,采用偶校驗(yàn);甲機(jī)讀入P1口的8個(gè)開關(guān)的狀態(tài)后,通過串行口發(fā)送到乙機(jī),乙機(jī)將接收到的甲機(jī)的8個(gè)開關(guān)的狀態(tài)數(shù)據(jù)送入P1口,由P1口的8個(gè)發(fā)光二極管來顯示8個(gè)開關(guān)的狀態(tài)。雙方晶振均采用11.0592MHz。7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行

54、通信軟件編程雙機(jī)串行通信軟件編程7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作編程準(zhǔn)備編程準(zhǔn)備:波特率為9600b/s, SMOD=0, 查表初值為FDH。0 0 1 0 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD GF1 GF0 PD IDLT1作波特率發(fā)生器,定時(shí)模式方式2 0 0 0 0 0 0 0 000H20H7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研

55、室制作串行口方式31 1 0 0/1 0 0 0 0C0H/D0H中斷設(shè)置:允許串行口、定時(shí)器T0中斷1 0 0 1 0 0 0 090H7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作程序設(shè)計(jì)思想程序設(shè)計(jì)思想采用中斷方式采用中斷方式1.發(fā)送方發(fā)送方(1)主程序主程序設(shè)置相關(guān)SFR;讀出P1口開關(guān)狀態(tài)作為發(fā)送數(shù)據(jù),確定第9位TB8,將發(fā)送數(shù)據(jù)放入SBUF;(2)中斷服務(wù)程序中斷服務(wù)程序 TI清0, 作主程序相同的事。7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)

56、串行通信軟件編程2.接收方接收方(1)主程序主程序主程序中,設(shè)置相關(guān)SFR;(2)中斷服務(wù)程序中斷服務(wù)程序 RI清0; 讀出SBUF中的接收數(shù)據(jù),并進(jìn)行偶檢驗(yàn):RB8 = P,接收正確, RB8P,接收出錯(cuò);若接收正確,將接收數(shù)據(jù)從P1輸出控制LED。湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程(1). 甲機(jī)發(fā)送程序甲機(jī)發(fā)送程序ORG 0000H LJMP MAIN ORG 0023H;串行口中斷地址 LJMP COM_INT湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.5 串行口的編程

57、和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程MAIN:MOV SP,#60H;設(shè)置堆棧指針MOV TMOD,#20H ;設(shè)置定時(shí)器工作方式 MOV TH1,#0FDH;設(shè)置計(jì)數(shù)器初值 MOV TL1,#0FDH MOV PCON,#00H;波特率不加倍 SETB TR1;啟動(dòng)T1計(jì)數(shù)器計(jì)數(shù) MOV SCON,#0C0H ;設(shè)置串行口工作方式3MOV IE,#90H;開中斷, 僅允許串行口中斷MOVP1,#0FFH;要輸入,先輸出“1”MOVA,P1;讀出P1口MOV C,P ; A中“1” 和P中“1” 一定是偶數(shù)偶數(shù) MOV TB8,C; 校驗(yàn)位送TB8,采

58、用偶校驗(yàn) MOV SBUF,A ; 發(fā)送一次HERE:SJMP HERE波特率設(shè)置湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作COM_INT:CLR TI;發(fā)送中斷標(biāo)志位TI清0 MOVA,P1MOV C,P ; A中1的個(gè)數(shù)為奇數(shù),P=1 MOV TB8,C; 校驗(yàn)位送TB8,采用偶校驗(yàn) MOV SBUF,A ;啟動(dòng)發(fā)送RETI;中斷返回7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程(2).

59、乙機(jī)接收程序乙機(jī)接收程序ORG 0000H LJMP MAIN ORG 0023H;串行口中斷地址 LJMP COM_INT湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程MAIN:MOV SP,#60H;設(shè)置堆棧指針MOV TMOD,#20H ;設(shè)置定時(shí)器工作方式 MOV TH1,#0FDH;設(shè)置計(jì)數(shù)器初值 MOV TL1,#0FDH MOV PCON,#00H;波特率不加倍 SETB TR1;啟動(dòng)T1計(jì)數(shù)器計(jì)數(shù) MOV SCON,#0D0H ;設(shè)置串行口工作方式,開啟接收MOV IE,#90H

60、;開中斷, 僅允許串行口中斷HERE:SJMP HERE波特率設(shè)置湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作COM_INT:CLR RI; 接收中斷標(biāo)志位RI清0MOV A,SBUF ; 接收的數(shù)據(jù)送AJNB P,L1; P=0,轉(zhuǎn)L1JNB RB8,L3 ; P=1,RB80,出錯(cuò)SJMP L2; P=1,RB81,正確L1: JB RB8,L3; P=0,RB81,出錯(cuò)L2: MOV P1,A; 接收數(shù)據(jù)正確,控制LEDL3: RETI 7.5 串行口的編程和應(yīng)用串行口的編程和應(yīng)用 7.5.2 雙機(jī)串行通信軟件編程雙機(jī)串行通信軟件編程湖南理工學(xué)院信息與通信工程學(xué)院電子信息教研室制作7

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論