MCS-51單片微型計(jì)算機(jī)及其應(yīng)用:第6章 MCS-51的串行通信口_第1頁(yè)
MCS-51單片微型計(jì)算機(jī)及其應(yīng)用:第6章 MCS-51的串行通信口_第2頁(yè)
MCS-51單片微型計(jì)算機(jī)及其應(yīng)用:第6章 MCS-51的串行通信口_第3頁(yè)
MCS-51單片微型計(jì)算機(jī)及其應(yīng)用:第6章 MCS-51的串行通信口_第4頁(yè)
MCS-51單片微型計(jì)算機(jī)及其應(yīng)用:第6章 MCS-51的串行通信口_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1、80C51有幾個(gè)中斷源,各中斷標(biāo)志是如何產(chǎn)生的,又如何清除的?CPU響應(yīng)中斷時(shí),其中斷入口地址各是多少?解:有5個(gè)中斷源(1)/INT0 外部中斷請(qǐng)求0,由引腳/INT0輸入。當(dāng)CPU采樣到/INT0端出現(xiàn)有效中斷請(qǐng)求時(shí),中斷請(qǐng)求標(biāo)志位IE0硬件置1;響應(yīng)中斷后,轉(zhuǎn)向中斷服務(wù)時(shí),硬件復(fù)位。(2)/INT1 外部中斷請(qǐng)求1,由引腳/INT1輸入。 當(dāng)CPU采樣到/INT1端出現(xiàn)有效中斷請(qǐng)求時(shí),中斷請(qǐng)求標(biāo)志位IE1硬件置1;響應(yīng)中斷后,轉(zhuǎn)向中斷服務(wù)時(shí),硬件復(fù)位。(3)T0 定時(shí)器/計(jì)數(shù)器T0溢出中斷請(qǐng)求。 T0計(jì)數(shù)溢出,中斷請(qǐng)求標(biāo)志為TF0(TCON.5)硬件置位;響應(yīng)中斷時(shí),硬件復(fù)位。不使用

2、中斷時(shí)用軟件清0。(4)T1 定時(shí)器/計(jì)數(shù)器T1溢出中斷請(qǐng)求。 T1計(jì)數(shù)溢出,中斷請(qǐng)求標(biāo)志為TF1硬件置位;響應(yīng)中斷時(shí),硬件復(fù)位。不使用中斷時(shí)用軟件清0。(5)RX、TX 串行口中斷請(qǐng)求。 發(fā)送完一幀,中斷請(qǐng)求標(biāo)志位TI硬件置位;響應(yīng)中斷后,必須軟件清0; 接收完一幀,中斷請(qǐng)求標(biāo)志位RI硬件置位;響應(yīng)中斷后,必須軟件清0。中斷入口地址中斷源 入口地址 外部中斷0 0003H定時(shí)器/計(jì)數(shù)器T0 000BH外部中斷1 0013H定時(shí)器/計(jì)數(shù)器T1001BH串行口中斷0023H2、80C51單片機(jī)的中斷系統(tǒng)中有幾個(gè)優(yōu)先級(jí),如何設(shè)定?若擴(kuò)充8個(gè)中斷源,如何確定優(yōu)先級(jí)? 80C51單片機(jī)的中斷系統(tǒng)具有兩

3、個(gè)中斷優(yōu)先級(jí)。中斷優(yōu)先級(jí)的設(shè)定:由專用寄存器IP統(tǒng)一管理,由軟件設(shè)置每個(gè)中斷源為高優(yōu)先級(jí)中斷或者低優(yōu)先級(jí)中斷??蓪?shí)現(xiàn)兩級(jí)中斷嵌套。其格式如下:(1)PS 串行口中斷優(yōu)先級(jí)控制位 1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(2)PT1 定時(shí)器T1中斷優(yōu)先級(jí)控制位 1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(3)PX1 外部中斷1中斷優(yōu)先級(jí)控制位 1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(4)PT0 定時(shí)器T0中斷優(yōu)先級(jí)控制位 1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。(5)PX0 外部中斷0中斷優(yōu)先級(jí)控制位 1:高優(yōu)先級(jí)中斷;0:低優(yōu)先級(jí)中斷。 可以采用中斷和查詢結(jié)合的方法確定優(yōu)先級(jí)??梢杂?個(gè)外部中斷請(qǐng)求源IR1I

4、R8用“線或”的辦法連到MCS-51的一個(gè)外中斷源輸入端,同時(shí)還連到P1口。當(dāng)8個(gè)擴(kuò)充中斷源中有一個(gè)或幾個(gè)出現(xiàn)高電平,OC門輸出為0,使得/INT0、/INT1為低電平觸發(fā)中斷,所以這些擴(kuò)充的外中斷源都是電平觸發(fā)方式(高電平有效)。這8個(gè)擴(kuò)充中斷源的輸入信號(hào)同時(shí)接到8個(gè)I/O口上。在外中斷服務(wù)程序中,由軟件按照人為設(shè)定的順序(優(yōu)先級(jí))查詢外中斷源哪位是高電平,然后進(jìn)入該中斷處理。 高電平有效:這些擴(kuò)充的外中斷都是電平觸發(fā)方式優(yōu)先級(jí):由軟件按人為設(shè)定的查詢順序決定 EXINT:PUSHPSW PUSHACCJBP1.0,SAV1 ;P1.0高,IR1有請(qǐng)求JBP1.2,SAV3 ;P1.2高,I

5、R3有請(qǐng)求JBP1.1,SAV1 ;P1.1高,IR2有請(qǐng)求JBP1.3,SAV4 ;P1.3高,IR4有請(qǐng)求DISUB:POPACCPOPPSWRETISAV1:XI1中斷服務(wù)程序1AJMPDISUBSAV2:XI1中斷服務(wù)程序2AJMPDISUBSAV3:XI1中斷服務(wù)程序3AJMPDISUBSAV4:XI1中斷服務(wù)程序4AJMPDISUB/INT1的中斷服務(wù)程序如下: 優(yōu)先級(jí)順序依此為:IR1、IR3、IR2、IR4。3、中斷子程序返回指令與調(diào)用子程序返回指令有何異同? 相同點(diǎn):都是作為最后一條指令,起返回作用。不同點(diǎn): RET指令必須作子程序的最后一條指令;RETI必須作中斷服務(wù)程序的

6、最后一條指令。 RETI指令除恢復(fù)斷點(diǎn)地址外,還恢復(fù)CPU響應(yīng)中斷時(shí)硬件自動(dòng)保護(hù)的現(xiàn)場(chǎng)信息。執(zhí)行RETI指令后,將清除中斷響應(yīng)時(shí)所置位的優(yōu)先級(jí)狀態(tài)觸發(fā)器,使得已申請(qǐng)的同級(jí)或低級(jí)中斷申請(qǐng)可以響應(yīng);而RET指令只能恢復(fù)返回地址。第六章串行通信口第6章 MCS-51的串行通信口第五節(jié)串行通信口概述第六節(jié)串行口結(jié)構(gòu)與工作原理第七節(jié) 串行控制寄存器和特殊功能寄存器第八節(jié)串行通信工作方式第九節(jié)串行口應(yīng)用舉例第十節(jié) 多機(jī)串行通信技術(shù)6.5串行通信口概述串行通信:所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。經(jīng)濟(jì),但速度慢。并行通信:所傳送數(shù)據(jù)的各位同時(shí)發(fā)送或接收。速度快,但價(jià)格貴。 串行通信中的幾個(gè)概念一、傳

7、送編碼 因?yàn)閱胃ㄐ啪€僅能表示0和1兩種狀態(tài),而需傳送的信息中有字母、數(shù)字和字符等,這就要用二進(jìn)制數(shù)對(duì)傳送字符編碼。 常用的主要有美國(guó)標(biāo)準(zhǔn)信息交換碼ASCII和擴(kuò)展的BCD碼EBCDIC,后一種是8位編碼,較常用在同步通信中。 二、同步和異步方式1、 異步通訊ASYNC(Asynchronous Data Communication):數(shù)據(jù)以一個(gè)字符為單位進(jìn)行傳送,一幀一幀地傳送; 在幀格式中先用一個(gè)起始位“0”表示字符的開始; 5-8位數(shù)據(jù),規(guī)定低位在前,高位在后; 奇偶校驗(yàn)位(可省略) 停止位“1”表示字符的結(jié)束D0D1D2D3D4D5D6D7PD0D01 01 0N-1 第N個(gè)字符(一串

8、行幀) N+12、同步通訊(速度快,但硬件結(jié)構(gòu)要求高) 在數(shù)據(jù)或字符開始處用一同步字符來(lái)指示(常約定12個(gè)),由時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端和接收端同步。一旦檢測(cè)到與規(guī)定的同步字符符合,下面就連續(xù)按照順序傳送數(shù)據(jù)。 SYN字符1 SYN字符2 連續(xù)傳送的數(shù)據(jù) 波特率是異步通信中對(duì)數(shù)據(jù)傳送速率的規(guī)定,其意義是每秒鐘 傳送多少位二進(jìn)制數(shù)。 例如:數(shù)據(jù)傳送的速率每秒為120個(gè)字符,每個(gè)字符由1個(gè)起始位、 8個(gè)數(shù)據(jù)位和1個(gè)停止位組成,則其傳送波特率為: 10*120=1200b/s=1200波特 每一位的傳送時(shí)間即為波特率的倒數(shù): Td=1/1200=0.833ms 異步通信的傳送速度一般在50到9600波特之間

9、。三、波特率四、通信方向1、單工傳送:只能發(fā)送或接收,這種單向傳送的方法稱單工傳送;2、半雙工傳送:數(shù)據(jù)可在兩機(jī)之間雙向傳送,但接收和發(fā)送不能 同時(shí)進(jìn)行,只能分時(shí)接收和發(fā)送;3、全雙工傳送:兩機(jī)的發(fā)送和接收可以同時(shí)進(jìn)行。 圖 串行通信數(shù)據(jù)傳送的三種方式(a) 單工方式;(b) 半雙工方式;(c) 全雙工方式五、信號(hào)的調(diào)制與解調(diào) 異步通信有距離的限制,傳輸距離較遠(yuǎn)時(shí),信號(hào)衰減、頻帶不夠?qū)?,因此,用調(diào)制器把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),并加以放大再傳送,這個(gè)過(guò)程叫調(diào)制。 在接收時(shí),再用解調(diào)器檢測(cè)此模擬信號(hào),并把它轉(zhuǎn)換成數(shù)字信號(hào)再送入計(jì)算機(jī)接口,這個(gè)過(guò)程即解調(diào)。 6.6 串行口的結(jié)構(gòu)與工作原理雙緩沖結(jié)構(gòu)T

10、IRI串行口內(nèi)部,兩個(gè)物理上獨(dú)立地接收和發(fā)送緩沖器,可同時(shí)收、發(fā)數(shù)據(jù)。兩個(gè)緩沖器共用一個(gè)特殊功能寄存器字節(jié)地址:SBUF(99H)輸入數(shù)據(jù)先進(jìn)入輸入移位寄存器,再送入接收SBUF。在此采用了雙緩沖結(jié)構(gòu),這是為避免在接收到第二幀數(shù)據(jù)之前,CPU未及時(shí)響應(yīng)接收器的前一幀中斷請(qǐng)求,沒(méi)把前一幀數(shù)據(jù)讀走,而造成兩幀數(shù)據(jù)重疊的錯(cuò)誤; MOV A,SBUF 對(duì)于發(fā)送器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生寫重疊問(wèn)題,一般不需要雙緩沖器結(jié)構(gòu),以保持最大傳送速率。 MOV SBUF,A當(dāng)接收或發(fā)送完一串行幀時(shí),置位內(nèi)部串行口中斷請(qǐng)求標(biāo)志RI或TI,請(qǐng)求中斷??刂萍拇嫫鞴矁蓚€(gè):特殊功能寄存器SCON和PCON。6.

11、7 串行口控制寄存器和特殊功能寄存器SCON中斷標(biāo)志位工作方式選擇位多機(jī)通信控制、數(shù)據(jù)位PCON波特率選擇位串行口控制寄存器特殊功能寄存器一、串行口控制寄存器SCON 字節(jié)地址98H,可位尋址,格式如圖所示。(1)SM0、SM1串行口4種工作方式的選擇位 SM0 SM1 工作方式 功 能 波特率 0 0 方式0 同步移位寄存器方式 fosc/12 0 1 方式1 8位異步通信方式 可變 1 0 方式2 9位異步通信方式 fosc/64或fosc/32 1 1 方式3 9位異步通信方式 可變(2)REN允許串行接收位 由軟件置“1”或清“0”。 REN=1 允許串行口接收數(shù)據(jù)。 REN=0 禁止

12、串行口接收數(shù)據(jù)。(3)TB8發(fā)送的第9位數(shù)據(jù) 方式2和3時(shí),TB8是要發(fā)送的第9位數(shù)據(jù)。 可作為奇偶校驗(yàn)位使用; 也可作為地址幀或數(shù)據(jù)幀的標(biāo)志: =1為地址幀, =0為數(shù)據(jù)幀。(4)RB8接收到的第9位數(shù)據(jù) 方式2和3時(shí),RB8存放接收到的第9位數(shù)據(jù)。 在方式1,如果SM2=0,RB8是接收到的停止位。 在方式0,不使用RB8。方式2、3SM2=1RB8=0RB8=1SM2=0無(wú)論RB8為何值不啟動(dòng)接收中斷標(biāo)志RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI,產(chǎn)生中斷請(qǐng)求(5)SM2 多機(jī)通信控制位(用于方式2或方式3中)(5)SM2 多機(jī)通信控制位

13、(用于方式2或方式3中)方式1中,當(dāng)處于接收時(shí),若SM2=1,則只有接收到有效的停止 信號(hào)為止,RI 才置1。方式0中SM2 應(yīng)置0。 (6)TI發(fā)送中斷標(biāo)志位 方式0時(shí),串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)由硬件置“1”, 其它工作方式,串行口發(fā)送停止位的開始時(shí)置“1”。 TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可申請(qǐng)中斷,也可供軟件查詢。CPU查詢或響應(yīng)中斷后,向SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。TI必須由軟件清0。(7)RI接收中斷標(biāo)志位 方式0時(shí),接收完第8位數(shù)據(jù)時(shí),RI由硬件置1。 其它工作方式,串行接收到停止位時(shí),該位置“1”。 RI=1,表示一幀數(shù)據(jù)接收完畢,可申請(qǐng)中斷,也可供軟件查詢。CPU查詢或響

14、應(yīng)中斷后,從接收SBUF取走數(shù)據(jù)。RI必須由軟件清“0”。二、特殊功能寄存器PCON 字節(jié)地址為87H,沒(méi)有位尋址功能。 SMOD 波特率選擇位。 SMOD位也稱為波特率倍增位。波特率的制定方法1、波特率的定義 波特率是異步通信中對(duì)數(shù)據(jù)傳送速率的規(guī)定,其意義是每秒鐘傳送多少位二進(jìn)制數(shù)。2、各工作方式下的波特率時(shí)鐘頻率fosc/12方式0方式1方式2方式3(2SMOD/32)T1的溢出率(2SMOD/32)T1的溢出率(2SMOD/64) fosc(3)方式1或方式3時(shí),波特率的計(jì)算 實(shí)際設(shè)定波特率時(shí),常設(shè)置T1為方式2定時(shí)(自動(dòng)裝初值)??杀苊庖蜍浖匮b初值而帶來(lái)的定時(shí)誤差。 溢出周期為:(1

15、2/Fosc) (256-X) 溢出率為溢出周期的倒數(shù)。則波特率的計(jì)算公式為: 波特率=(2SMOD/32)T1的溢出率 定時(shí)器T1方式2的初始值為:常用的波特率和初值X間的關(guān)系列成表6-2(P130),以供查用。兩點(diǎn)需要注意:時(shí)鐘振蕩頻率為12MHz或6MHz時(shí),表中初值X和相應(yīng)的波特率之間有一定誤差。例如,F(xiàn)DH的對(duì)應(yīng)的理論值是10416波特(時(shí)鐘6MHz)。與9600波特相差816波特,消除誤差可以調(diào)整時(shí)鐘振蕩頻率fosc實(shí)現(xiàn)。例如采用的時(shí)鐘振蕩頻率為11.0592MHz。(2) 如果串行通訊選用很低的波特率,例如,波特率選為55,可將定時(shí)器T1設(shè)置為方式1定時(shí)。但在這種情況下,T1溢出

16、時(shí),需用在中斷服務(wù)程序中重新裝入初值。中斷響應(yīng)時(shí)間和執(zhí)行指令時(shí)間會(huì)使波特率產(chǎn)生一定的誤差,可用改變初值的方法加以調(diào)整。例 若8051單片機(jī)的時(shí)鐘振蕩頻率為11.0592MHz,選用T1為方式2定時(shí)作為波特率發(fā)生器,波特率為2400b/s,求初值。 設(shè)SMOD=0, =25611.0592 106 1/(384 2400) =244=F4H所以TH1=TL1=F4H 上述結(jié)果可直接從表中查到。 6.8 串行口的4種工作方式一、方式0 同步移位寄存器輸入/輸出方式 特點(diǎn)TXD和RXD 方式0發(fā)送方式0接收波特率固定為fosc/12; SM2位必須為0;一幀數(shù)據(jù)為8位,不設(shè)起始位和停止位。先發(fā)送或接

17、收最低位。 MOV SBUF,A啟動(dòng)發(fā)送;發(fā)送完8位數(shù)據(jù)置中斷標(biāo)志位TI 為“1”。串行數(shù)據(jù)由RXD(P3.0)端輸入或輸出;同步移位脈沖由TXD(P3.1)端送出。置位允許接收控制位REN=1,啟動(dòng)接收;接收完8位數(shù)據(jù)置中斷標(biāo)志位RI 為“1”; MOV A,SBUF常用于外接移位寄存器,以擴(kuò)展并行I/O口幀格式1方式0發(fā)送 2方式0接收 REN=1接收緩沖器SBUF以fosc/12的固定波特率采樣RXD引腳的數(shù)據(jù)信息 當(dāng)數(shù)據(jù)寫入SBUF后,在移位脈沖(TXD)的控制下,數(shù)據(jù)從RXD端逐位移入74LS164。 74LS164能完成數(shù)據(jù)的串并轉(zhuǎn)換,并行輸出。外接移位寄存器擴(kuò)展并行I/O口 數(shù)據(jù)

18、發(fā)送 REN置為1,在移位脈沖(TXD)的控制下,數(shù)據(jù)從RXD端輸入。當(dāng)接收到8位數(shù)據(jù)時(shí),置位接收中斷標(biāo)志位RI,發(fā)生中斷請(qǐng)求。 通過(guò)外接74LS165,串行口能夠?qū)崿F(xiàn)數(shù)據(jù)的并行輸入。外接移位寄存器擴(kuò)展并行I/O口 數(shù)據(jù)接收二、方式1(8位異步通信方式 ) 特點(diǎn)TXD和RXD 方式1發(fā)送方式1接收波特率=(2SMOD/32)定時(shí)器T1的溢出;一幀數(shù)據(jù)為10位,1個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1個(gè)停止位(1),先發(fā)送或接收最低位。 MOV SBUF,A啟動(dòng)發(fā)送;發(fā)送完8位數(shù)據(jù)置中斷標(biāo)志位TI 為“1”。方式1發(fā)送時(shí),數(shù)據(jù)由TXD輸出;方式1接收時(shí),數(shù)據(jù)從RXD輸入。當(dāng)檢測(cè)到起始位的負(fù)跳變時(shí),開始接

19、收數(shù)據(jù); 同時(shí)滿足才有效:RI=0SM2=0或接收到停止位=1 ; MOV A,SBUF幀格式 1方式1發(fā)送 2方式1接收 當(dāng)采樣到RXD端從1到0的跳變時(shí)就啟動(dòng)檢測(cè)器;接收的值是3次連續(xù)采樣(第7、8、9個(gè)脈沖時(shí)采樣),三中取二。提高可靠性有條件當(dāng)一幀數(shù)據(jù)接收完,須同時(shí)滿足兩個(gè)條件,接收才真正有效: RI=0,即上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說(shuō)明“接收SBUF”已空。 SM2=0或接收到停止位(=1),則收到的數(shù)據(jù)裝入SBUF(停止位裝入RB8),且置“1”中斷標(biāo)志RI。若這兩個(gè)條件不同時(shí)滿足,收到的數(shù)據(jù)將丟失。三、方式2(9位異步通信方式

20、) 特點(diǎn)TXD和RXD 方式1發(fā)送方式1接收波特率= (2SMOD/64)fosc 一幀數(shù)據(jù)為11位,1個(gè)起始位(0),8個(gè)數(shù)據(jù)位, 1位可程控的第9位數(shù)據(jù)1個(gè)停止位。 軟件設(shè)置TB8; MOV SBUF,A啟動(dòng)發(fā)送;發(fā)送完8位數(shù)據(jù)置中斷標(biāo)志位TI 為“1”。方式2發(fā)送時(shí),數(shù)據(jù)由TXD輸出;方式2接收時(shí),數(shù)據(jù)從RXD輸入。當(dāng)檢測(cè)到起始位的負(fù)跳變時(shí),開始接收數(shù)據(jù); 同時(shí)滿足才有效:RI=0SM2=0或SM2=1時(shí)第9位數(shù)據(jù)=1 ; MOV A,SBUF幀格式雙機(jī)通訊時(shí)的奇偶校驗(yàn)位或多機(jī)通訊時(shí)的地址/數(shù)據(jù)的標(biāo)志位D81方式2發(fā)送 有條件第9位數(shù)據(jù)送入RB8 在接收器完第9位數(shù)據(jù)后,需滿足兩個(gè)條件,

21、才能將接收到的數(shù)據(jù)送入SBUF。 (1)RI=0,意味著接收緩沖器為空。 (2)SM2=0或SM2=1時(shí)第9位數(shù)據(jù)=1。 上述兩個(gè)條件滿足時(shí),接收到的數(shù)據(jù)送入接收緩沖器SBUF,第9位數(shù)據(jù)送入RB8,并置“1”RI。 若不滿足兩個(gè)條件,接收的信息將被丟棄。四、方式3(波特率可變的9位異步通信方式) 除波特率外,方式3和方式2相同。 方式3的時(shí)序見(jiàn)方式2。 方式3波特率=(2SMOD/32)定時(shí)器T1的溢出率6.9 串行口的編程和應(yīng)用方式0舉例,用串行口擴(kuò)展I/O口 例 用并行輸入8位移位寄存器74LS165作為擴(kuò)展輸入口。 下圖是利用8051的3根口線擴(kuò)展為16根輸入口線的實(shí)用電路,其由2塊

22、74LS165串接而成(前級(jí)的數(shù)據(jù)輸出位QH與后級(jí)的信號(hào)輸入端SIN相連)。 現(xiàn)編程從16位擴(kuò)展口讀入20個(gè)字節(jié)數(shù)據(jù)(讀十次),并把它們轉(zhuǎn)存到內(nèi)部RAM的50H63H中。 P3.0 8051 P3.1 P1.0QH SIN 74LS165 S/L CKQH 74LS165 S/L CK+5VD0D7D0D76129111516810TXDRXD1、移位寄存器165并入串出,因此需要置數(shù);2、由于每次由擴(kuò)展口并行輸入到移位寄存器的是兩個(gè)字節(jié)數(shù)據(jù),置入一次,串行口應(yīng)接收二幀數(shù)據(jù);3、程序中設(shè)F0作為讀入字節(jié)的奇偶性標(biāo)志。當(dāng)已接收的數(shù)據(jù)字節(jié)數(shù)為奇數(shù)時(shí)F00,不再并行輸入數(shù)據(jù)就直接啟動(dòng)接收過(guò)程;當(dāng)F0

23、1,在啟動(dòng)接收過(guò)程前,應(yīng)該先在外部移位寄存器中置入新的數(shù)據(jù);4、接收緩沖器SBUF以fosc/12的固定波特率采樣RXD引腳的數(shù)據(jù)信息,當(dāng)收到8位數(shù)據(jù)時(shí)置“1” RI,表示一幀數(shù)據(jù)接收完。判斷RI狀態(tài),讀入緩沖器數(shù)據(jù)。思路 MOV R7,#14H ; 設(shè)置讀入字節(jié)數(shù) MOV R0,#50H; 設(shè)片內(nèi)RAM指針 SETB F0; 設(shè)置讀入字節(jié)奇偶數(shù)標(biāo)志RCV0:CLR P1.0 ; 并行口輸入數(shù)據(jù),允許74165串行移位 SETB P1.0 RCV1: MOV SCON,#10H ; 設(shè)串行口方式0并啟動(dòng)接收 JNB RI,$; 等待接收一幀數(shù)據(jù) CLR RI ; 清接收中斷標(biāo)志 MOV A,S

24、BUF ; 取緩沖器數(shù)據(jù) MOV R0,A INC R0 CPL F0 JB F0,RCV2 ; 判是否接收完偶數(shù)幀,接收完則重新并行置入 DEC R7 SJMP RCV1 ; 否則再接收一幀RCV2: DJNZ R7,RCV0; 判是否已讀入預(yù)定的字節(jié)數(shù) 由于74LS164無(wú)并行輸出控制端,在串行輸入過(guò)程中,其輸出端的狀態(tài)會(huì)不斷變化,故在某些場(chǎng)合,在74LS164與輸出裝置之間,還應(yīng)加上輸出可控的緩沖級(jí)(如74LS244),以便串行輸入過(guò)程結(jié)束后再輸出。 圖中的輸出裝置是2位共陽(yáng)級(jí)七段顯示發(fā)光二極管,采用靜態(tài)顯示方式。由于74LS164在低電平輸出時(shí),允許通過(guò)電流可達(dá)8mA,故不需再加驅(qū)動(dòng)電

25、路。與動(dòng)態(tài)掃描顯示比較,靜態(tài)顯示方式的優(yōu)點(diǎn)是CPU不必頻繁的為顯示服務(wù),軟件設(shè)計(jì)比較簡(jiǎn)單,很容易做到顯示不閃爍。 編程把片內(nèi)20H、21H中的數(shù)字取出,由串行口送給顯示器,顯示相應(yīng)的數(shù)字。例 用8位并行輸出串行移位寄存器74LS164作為擴(kuò)展輸出口。 +5V P3.08051 P3.1 P1.0 QA QHA,B 74LS164 CLR CK QA QHA,B 74LS164 CLR CK+5V 共陽(yáng)極LED 。 g a 共陽(yáng)極LED 。 g a3131,298714MOV R7,#02H; 設(shè)置顯示位數(shù)MOV R0,#20H ; 設(shè)顯示數(shù)據(jù)區(qū)指針MOV SCON,#00H ; 設(shè)串行口方式0

26、DISP1:MOV A,R0MOV DPTR,#TABHMOVC A,A+DPTR; 取顯示碼MOV SBUF,A; 啟動(dòng)串行口發(fā)送過(guò)程JNB TI,$ ; 等待接收一幀數(shù)據(jù)CLR TI; 清串行口發(fā)送中斷標(biāo)志INC R0; 修改指針取下一個(gè)數(shù)DJNZ R7,DISP1RETTAB:DB C0H,F9H,A4H,B0H,99H;0,1,2,3,4的顯示代碼DB 92H,82H,F8H,80H,98H;5,6,7,8,9的顯示代碼例:雙機(jī)通信,甲機(jī)發(fā)送乙機(jī)接收,波特率2400,晶振6MHz, T1作為波特率發(fā)生器,串行口工作在方式1。 甲機(jī)送出數(shù)據(jù)為 50H開始的16個(gè)字節(jié)數(shù)據(jù)。 乙機(jī)接收數(shù)據(jù)存

27、放在3000H300FH 單元中(外部RAM) 解:雙機(jī)通信串行口工作在方式1,定時(shí)器T1工作在方式2。 定時(shí)常數(shù):若SMOD=0,則 =249.49,誤差較大。 取SMOD=1,則 =242.98=243=F3H, 誤差較小。方式1舉例 發(fā)送程序: MOV TMOD,#20H;定時(shí)器(波特率)初始化MOV TL1,#0F3H MOV TH1,#0F3HSETB TR1 MOV SCON,#40H ;串行口初始化MOV PCON,#80HMOV R0,#50HMOV R7,#10HTRS:MOV A,R0MOV SBUF,A;啟動(dòng)串行口發(fā)送過(guò)程WAIT:JBC TI,CONTAJMP WAIT

28、CONT:INC R0DJNZ R7,TRSRET接收程序: MOV TMOD,#20H ;定時(shí)器(波特率)初始化MOV TL1,#0F3H MOV TH1,#0F3HSETB TR1 MOV SCON,#50H ;串行口初始化MOV PCON,#80HMOV DPTR,#3000HMOV R7,#10HWAIT:JBC RI,READAJMP WAIT;等待接收一幀數(shù)據(jù)READ:MOV A,SBUF;取緩沖器數(shù)據(jù)MOVX DPTR,AINC DPTRDJNZ R7,WAITRET波特率? 編程把甲機(jī)片內(nèi)RAM50H5FH單元中的數(shù)據(jù)塊從串行口輸出。乙機(jī)從甲機(jī)接收16字節(jié)數(shù)據(jù)塊,并存入片外30

29、00H300FH單元。接收過(guò)程要求判斷奇偶校驗(yàn)標(biāo)志RB8。若出錯(cuò)置F0標(biāo)志為1,正確置F0標(biāo)志為0。然后返回。要求:定義工作方式3發(fā)送,TB8作奇偶校驗(yàn)位。 采用定時(shí)器1方式2作波特率發(fā)生器,波特率為1200, Fosc=11.0592MHZ分析: 預(yù)置值TH1=0F8H。方式3舉例發(fā)送: MOVTMOD,#20H;設(shè)置定時(shí)器1為方式2MOVTL1,#0F8H;設(shè)置預(yù)置值;MOVTH1,#0F8HSETBTR1;啟動(dòng)定時(shí)器1MOVSCON,#0C0H;設(shè)置串行口為方式3MOVPCON,#00H;SMOD=0MOVR0,#50H;設(shè)數(shù)據(jù)塊指針MOVR7,#10H;設(shè)數(shù)據(jù)長(zhǎng)度TRS:MOVA,R0

30、;取數(shù)據(jù)到AMOVC,PMOVTB8,C;奇偶位P送TB8MOVSBUF,A;數(shù)據(jù)送SBUF,啟動(dòng)發(fā)送WAIT:JBCTI,CONT;判一幀是否發(fā)送完AJMPMAIT;未完等待CONT:INCR0;更新數(shù)據(jù)單元DJNZR7,TRS;循環(huán)發(fā)送至結(jié)束RET;返回接收: MOVTMOD,#20H;設(shè)置定時(shí)器1為方式2MOVTL1,#0F8H;設(shè)置預(yù)置值MOVTH1,#0F8HSETBTR1;啟動(dòng)定時(shí)器1MOVSCON,#0C0H;設(shè)置串行口為方式3MOVPCON,#00H;SMOD=0MOVDPTR,#3000H;設(shè)置數(shù)據(jù)塊指針MOVR7,#10H;設(shè)數(shù)據(jù)塊長(zhǎng)度SETBREN;允許接收WAIT:JB

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論