MCS-51單片微型計算機及其應用:第6章 MCS-51的串行通信口_第1頁
MCS-51單片微型計算機及其應用:第6章 MCS-51的串行通信口_第2頁
MCS-51單片微型計算機及其應用:第6章 MCS-51的串行通信口_第3頁
MCS-51單片微型計算機及其應用:第6章 MCS-51的串行通信口_第4頁
MCS-51單片微型計算機及其應用:第6章 MCS-51的串行通信口_第5頁
已閱讀5頁,還剩63頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1、80C51有幾個中斷源,各中斷標志是如何產生的,又如何清除的?CPU響應中斷時,其中斷入口地址各是多少?解:有5個中斷源(1)/INT0 外部中斷請求0,由引腳/INT0輸入。當CPU采樣到/INT0端出現有效中斷請求時,中斷請求標志位IE0硬件置1;響應中斷后,轉向中斷服務時,硬件復位。(2)/INT1 外部中斷請求1,由引腳/INT1輸入。 當CPU采樣到/INT1端出現有效中斷請求時,中斷請求標志位IE1硬件置1;響應中斷后,轉向中斷服務時,硬件復位。(3)T0 定時器/計數器T0溢出中斷請求。 T0計數溢出,中斷請求標志為TF0(TCON.5)硬件置位;響應中斷時,硬件復位。不使用

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

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

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

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

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

7、送編碼 因為單根通信線僅能表示0和1兩種狀態,而需傳送的信息中有字母、數字和字符等,這就要用二進制數對傳送字符編碼。 常用的主要有美國標準信息交換碼ASCII和擴展的BCD碼EBCDIC,后一種是8位編碼,較常用在同步通信中。 二、同步和異步方式1、 異步通訊ASYNC(Asynchronous Data Communication):數據以一個字符為單位進行傳送,一幀一幀地傳送; 在幀格式中先用一個起始位“0”表示字符的開始; 5-8位數據,規定低位在前,高位在后; 奇偶校驗位(可省略) 停止位“1”表示字符的結束D0D1D2D3D4D5D6D7PD0D01 01 0N-1 第N個字符(一串

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

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

10、IRI串行口內部,兩個物理上獨立地接收和發送緩沖器,可同時收、發數據。兩個緩沖器共用一個特殊功能寄存器字節地址:SBUF(99H)輸入數據先進入輸入移位寄存器,再送入接收SBUF。在此采用了雙緩沖結構,這是為避免在接收到第二幀數據之前,CPU未及時響應接收器的前一幀中斷請求,沒把前一幀數據讀走,而造成兩幀數據重疊的錯誤; MOV A,SBUF 對于發送器,因為發送時CPU是主動的,不會產生寫重疊問題,一般不需要雙緩沖器結構,以保持最大傳送速率。 MOV SBUF,A當接收或發送完一串行幀時,置位內部串行口中斷請求標志RI或TI,請求中斷。控制寄存器共兩個:特殊功能寄存器SCON和PCON。6.

11、7 串行口控制寄存器和特殊功能寄存器SCON中斷標志位工作方式選擇位多機通信控制、數據位PCON波特率選擇位串行口控制寄存器特殊功能寄存器一、串行口控制寄存器SCON 字節地址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 允許串行口接收數據。 REN=0 禁止

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

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

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

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

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

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

18、發送 REN置為1,在移位脈沖(TXD)的控制下,數據從RXD端輸入。當接收到8位數據時,置位接收中斷標志位RI,發生中斷請求。 通過外接74LS165,串行口能夠實現數據的并行輸入。外接移位寄存器擴展并行I/O口 數據接收二、方式1(8位異步通信方式 ) 特點TXD和RXD 方式1發送方式1接收波特率=(2SMOD/32)定時器T1的溢出;一幀數據為10位,1個起始位(0),8個數據位,1個停止位(1),先發送或接收最低位。 MOV SBUF,A啟動發送;發送完8位數據置中斷標志位TI 為“1”。方式1發送時,數據由TXD輸出;方式1接收時,數據從RXD輸入。當檢測到起始位的負跳變時,開始接

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

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

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

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

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

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

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

26、DISP1:MOV A,R0MOV DPTR,#TABHMOVC A,A+DPTR; 取顯示碼MOV SBUF,A; 啟動串行口發送過程JNB TI,$ ; 等待接收一幀數據CLR TI; 清串行口發送中斷標志INC R0; 修改指針取下一個數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的顯示代碼例:雙機通信,甲機發送乙機接收,波特率2400,晶振6MHz, T1作為波特率發生器,串行口工作在方式1。 甲機送出數據為 50H開始的16個字節數據。 乙機接收數據存

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論