版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章 串行通信接口技術4.1 串行通信基礎n串行通信:是指一條信息的各位數據被逐位按順序傳送的通信方式。n優(yōu)點:優(yōu)點:傳輸線少,連線簡單,傳輸距離遠。傳輸線少,連線簡單,傳輸距離遠。n缺點:缺點:速度慢速度慢網絡網絡RS232USB打印打印機機鼠標鼠標掃描儀掃描儀通信類型1、同步傳輸方式、同步傳輸方式USRT (Universal Synchronous Receiver/Transmitter)通用同步接收器通用同步接收器/發(fā)送器發(fā)送器同步傳輸同步傳輸1位位 數據數據計算機計算機外設外設 1 2 3 4 5 6 7 81001111110011111同步時鐘同步時鐘高位高位先送先送通信類型
2、2、異步傳輸方式、異步傳輸方式UART (Universal Asynchronous Receiver/Transmitter)通用異通用異步接收器步接收器/發(fā)送器發(fā)送器1位位 數據數據計算機計算機異步傳輸異步傳輸外設外設發(fā)送發(fā)送速率速率接收接收速率速率靠靠發(fā)送發(fā)送和和接收接收速率速率相同來保證相同來保證通信類型2、異步傳輸方式、異步傳輸方式n(1)沒有數據發(fā)送時,數據線保持)沒有數據發(fā)送時,數據線保持“1”狀態(tài)狀態(tài)n(2)發(fā)送數據時,先發(fā)起始位)發(fā)送數據時,先發(fā)起始位“0”,其后是數據,其后是數據n(3)數據后再發(fā)一位停止位)數據后再發(fā)一位停止位“1“傳輸方式發(fā)送器發(fā)送器接收器接收器數據數
3、據收發(fā)器收發(fā)器收發(fā)器收發(fā)器數據數據收發(fā)器收發(fā)器收發(fā)器收發(fā)器數據數據單工方式:只允許數據按照一個固定單工方式:只允許數據按照一個固定的方向傳送的方向傳送半雙工方式:只有半雙工方式:只有1根數據線傳送數據根數據線傳送數據信號,通訊雙方不能同時在兩個方向信號,通訊雙方不能同時在兩個方向上傳送。上傳送。全雙工方式:通訊雙方能同時進行發(fā)全雙工方式:通訊雙方能同時進行發(fā)送和接收操作送和接收操作4.2 RS-232C串行通信接口nRS-232C串行通信接口標準是在1969年由美國電子工業(yè)協會(EIA)聯合貝爾實驗室、調制解調器和計算機生產商制定的用于數據終端設備(DTE)和數據通信設備(DCE)之間串行通信
4、的標準。nPC機上的COM1、COM2接口,就是RS-232C接口,使用9針和25針連接器。4.2 RS-232C串行通信接口nTxD 發(fā)送數據(發(fā)送數據(DTEDCE)nRxD 接收數據接收數據(DCEDTE)nSG信號地信號地nDSR DCE就緒(就緒(DCEDTE)nDTR DTE就緒(就緒(DTEDCE)nRTS 請求發(fā)送(請求發(fā)送(DTEDCE)nCTS 清除發(fā)送(清除發(fā)送(DCEDTE) DCE允許允許DTE發(fā)送發(fā)送,該信號是對該信號是對RTS信號的信號的回答?;卮稹DCD 數據載波檢出(數據載波檢出(DCEDTE)n當本地當本地DCE收到對方的收到對方的DCE設備送來設備送來的
5、載波信號時,使的載波信號時,使DCD有效,通知有效,通知DTE準備接收,并且由準備接收,并且由DCE將接收到將接收到的載波信號解調為數字信號,經的載波信號解調為數字信號,經RxD線送給線送給DTE。nRI振鈴信號(振鈴信號(DCEDTE)n當當DCE收到交換機送來的振鈴呼叫信收到交換機送來的振鈴呼叫信號時,使該信號有效,通知號時,使該信號有效,通知DTE已被已被呼叫。呼叫。4.2 RS-232C串行通信接口n電氣特性n1 -3V-15Vn0 +3V+15Vn典型速率(波特率)n110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8
6、Kbps、33.6Kbps、56Kbps。n傳輸距離n50米左右n擴展能力n1對14.2 RS-232C串行通信接口n接口芯片4.3 RS-422/485串行通信接口n在RS-232基礎上提出RS-422。nRS-422傳輸距離1200米左右。n可實現單機發(fā)送,多機接收(最多10個)的傳輸規(guī)范。n采用差分傳輸(0:兩線壓差-2-6V; 1:+26V)。n最高傳輸速率達到10Mb/s。4.3 RS-422/485串行通信接口n在RS-422基礎上提出RS-485。nRS-485傳輸距離3000米左右。n可實現多機交互通信(最多128個)的傳輸規(guī)范。n采用差分傳輸(0:兩線壓差-0.2-6V; 1
7、:+0.26V)。n最高傳輸速率達到10Mb/s。4.3 RS-422/485串行通信接口n在RS-422/485連接器管腳定義。4.3 RS-422/485串行通信接口n接口芯片4.4 MCS-51單片機的串行接口TXDRXDRXDTXDTXDRXDRXDTXDRS-232或485RS-232或485TXDRXDRS-232PC機COM1,COM2單片機甲乙之間近距離通訊單片機甲乙兩地之間遠距離通訊單片機與PC機之間的數據通訊4.4.1 數據緩沖寄存器 SBUFnSBUF是用來存放串行口發(fā)送和接收數據的寄存器,在SFR的地址為99H.在物理上它對應兩個不同的單元:發(fā)送寄存器和接收寄存器。nC
8、PU寫SBUF就是開始發(fā)送數據(MOV SBUF,A);nCPU讀SBUF就是接收數據到A (MOV A,SBUF)。n由于發(fā)送SBUF與接收的SBUF是兩個不同的邏輯部件,所以在硬件設計上保證了51單片機串行口是一個可以同時發(fā)送與接收的”全雙工”接口。 4.4.2 串行口控制寄存器SCON 地址:98H SM0SM1SM2RENTB8RB8TIRInSM0 SM1: 串行口操作模式選擇位.可以確定串行口的四種模式之一(如下表);SM0 SM1模式功 能波特率 0 00同步移位寄存器模式Fosc/12 0 111+8+1位UART可變 1 021+9+1位UARTFosc/64或/32 1 1
9、31+9+1位UART可變 SM0SM1SM2RENTB8RB8TIRInRI :完成一幀數據接收的標志,原始應清零,接收完成RI=1并申請中斷;nTI :完成一幀數據發(fā)送的標志,原始應清零,發(fā)送完成TI=1同時申請中斷;nRB8:在9位數據傳送的模式2、3時,接收到的第9位數據;nTB8:在9位數據傳送的模式2、3時,將要發(fā)送的第9位數據;nREN:允許接收位,REN=1時允許接收.由軟件置位或清零; SM0SM1SM2RENTB8RB8TIRInSM2 :多機通信使能位. 1,模式0、1時: SM2不用,應設為0。此時RI才能被正常激活并引發(fā)中斷; 2,模式2、3時:若SM2=0時,無論R
10、B8如何,RI都能被激活(RI=1)。但是RI=1并不能引發(fā)中斷!所以只能用查詢的方式接收數據。 若SM2=1,收到的第9位(RB8)=0時,則RI不會被激活; 若SM2=1且RB8=1時,RI才能被激活=1并引發(fā)中斷。如何使用RI,TI標志(中斷和查詢)nCPU與串行口之間不是同步工作的,兩者之間的數據交換通過SBUF,何時交換必須借助于標志信號進行。nRI(SCON.0):接收完一幀數據的標志。 如果系統(tǒng)中斷是開放的,則RI=1時會自動引發(fā)中斷。用戶可以通過中斷服務程序將SBUF中的數據取出送累加器A。 MOV A,SBUF。也可以使用查詢的方式對RI進行檢測,如果RI=1則執(zhí)行: MOV
11、 A,SBUF 。nTI (SCON.1):發(fā)送完一幀數據標志。 如果系統(tǒng)中斷是開放的,則TI會自動引發(fā)中斷。用戶可以通過中斷服務程序向SBUF輸送下一個數據: MOV SBUF, A 。也可以使用查詢的方式對TI進行檢測,如果TI=1則執(zhí)行: MOV SBUF , A 。 使用查詢RI、TI標志方式進行發(fā)送與接收N個數據CLR SCON .TI數據送累加器A修改數據區(qū)指針mov sbuf,aTI=1?N個數據發(fā)送完?YESNOYESNO發(fā)送數據的程序框圖SETB SCON .RENmov a,sbufRI=1? N個數據接收完?YESNOYESNOCLR SCON .RI A送數據區(qū)修改數據
12、指針接收數據程序框圖4.4.3 波特率及定時器T1的設定 n在串行口的異步通訊中,發(fā)送方與接收方是兩個互相獨立的系統(tǒng),它們的系統(tǒng)時鐘可以各不相同。在這種條件下使通訊正確的條件是:1,要有相同的字符幀格式;2,要有相同的波特率。nMCS-51單片機的串行口四種模式其波特率各不相同。其中模式1、3的波特率就是由定時器T1的溢出率來決定的(另外PCON中的SMOD位起著波特率加倍的作用)。SM0 SM1模式功 能波特率 0 00同步移位寄存器模式Fosc/12 0 1110位異步通信UART可變,由T1初值確定 1 0211位異步通信UARTFosc/64或/32 1 1311位異步通信UART可變
13、,由T1初值確定4.4.3 波特率及定時器T1的設定 n在編制串行口通訊(模式1、3)程序時,在程序的初始化中,必須進行波特率的設定,既對T1進行初始化。nT1初始化的主要任務就是: 1,設置T1的工作方式為定時(C/T=0); 工作模式為模式2 :自動重裝。 2,計算定時常數并分別送給TH1、TL1。n波特率計算公式:B =nT1溢出率:=(計數速率)/ 256-(TH1) = (fosc/12) / 256-(TH1)4.4.3 波特率及定時器T1的設定 n波特率、初值TC計算公式: B= fosc / 192 X(256-TH); (SMOD=1時)或 B= fosc / 384 X(2
14、56-TH); (SMOD=0時) 其中:fosc為系統(tǒng)時鐘頻率,TH為定時器T1的初值。TH=256- fosc/(384XB) ; (SMOD=0時)或: TH=256- fosc/(192XB) ; (SMOD=1時)【舉例】設系統(tǒng)時鐘為11.059MHz,要求波特率為1200Hz,求TH。【解】用上述公式TH=256-11.059MHz /(384X1200) =232=0E8H 設:SMOD=04.4.4 串行口的模式0 n特點:串行口做同步移位寄存器用,其波特率為 fosc/12.在這種模式下RXD(P3.0)做數據口;TXD(P3.1)做移位脈沖輸出端.在移位過程中,先移數據的低
15、位.注意:移位脈沖的頻率就是模式0的波特率.n模式0的主要功能是:可以使用一個串行口來擴展出8位、16位等并行口,且理論上可以擴展n*8位的并行口.MCS-51RXDTXDData 外部移位寄存器cp移位脈沖串行數據并行的數據(8位)4.4.5 串行口的模式1 n特點:10位傳輸格式 (1個起始位(0)+8個數據位+1個停止位(1)); 波特率波特率:可變波特率,由定時器T1的溢出率來確定,所以在此種模式下,首先要對T1進行初始化以確定串行口的波特率;5.4.5 串行口的模式1 n發(fā)送操作:在TI=0,執(zhí)行mov sbuf,a 指令后從TXD端開始發(fā)送數據。當發(fā)送完8位數據后自動的添加一個高電
16、平的停止位,并將TI置位。n接收操作:在REN=1且RI=0的條件下進行。串行口的接收控制器對RXD線進行采樣,其采樣頻率是接收時鐘的16倍。當連續(xù)8次采集到RXD線上為低電平時,檢測電路便認定RXD線上有了“起始位”,在此后,便開始在每次第7 、 8 、9三個脈沖時進行RXD采樣,采取“三中取二”的原則來確定接收的數據(如圖所示)。n當接收到停止位時,必須滿足:RI=0且SM2=0,才能把接收的數據送到SBUF中(停止位送SCON的RB8中,并使RI=1),否則數據丟失。串行口模式1時數據幀格式及接收采樣示意圖D0D1D2D3D4D5D6D7起始位8位數據停止位對RXD線的數據以16倍速度采
17、樣當連續(xù)8次采集到低電平時,便確認起始位到來在每個第7,8,9個脈沖對RXD采樣并采用“以三取二”來確定采集的數據7.8.9模式1舉例:發(fā)送程序TXD.ASM org 0000h ljmp 0100h org 0100hstart: mov tmod,#20h ;設定定時器T1為模式2 mov tl1,#0f4h ;送定時初值(fosc=11.059) mov th1,#0f4h ;波特率B=2400 mov pcon,#00h ;PCON中的SMOD=0 setb tr1 ;啟動定時器T1 mov scon,#40h ;設定串行口為模式1loop2: mov p1,#0ffh mov a,p
18、1 ;從P1口輸入數據 mov sbuf,a ;數據送SBUF發(fā)送loop1: jnb ti,loop1 ;判斷數據是否發(fā)送完畢? clr ti ;發(fā)送完一幀后清標志 sjmp loop2 ;返回繼續(xù) endTXD.ASM發(fā)送程序框圖(查詢方式)SM0SM1SM2RENTB8RB8TIRIT1初始化啟動T1串行口初始化輸入數據到A發(fā)送一幀數據MOV SBUF,ATI=1?軟件清TIGATEC/TM1M0GATEC/T M1M0設定定時器T1的工作模式 00000010B設定串行口模式寄存器SCON為01000000BYN(二)接收程序:RXD.ASMorg 0000hljmp 0100horg
19、 0100hstart: mov tmod,#20h ;選定T1為模式2(自動重裝)mov tl1,#0f4h ;設定初值mov th1,#0f4h ;同上mov pcon,#00h ;PCON的SMOD=0setb tr1 ;啟動T1定時器clr ri ;清接收標志mov scon,#50h ;設定串行口為方式1loop1: jnb ri,loop1 ;判斷是否接收到數據?clr ri ;接收到數據后清接收標志mov a,sbuf ;數據送累加器Amov p1,a ;從P1口輸出sjmp loop1 ;回繼續(xù)endRXD.ASM接收程序框圖(查詢方式)T1初始化啟動T1串行口初始化輸出數據到
20、P1數據送AMOV A,SBUFRI=1?軟件清TISM0SM1SM2RENTB8RB8 TIRIGATEC/TM1M0GATEC/T M1M0定時器TMOD(89H)的工作模式 00000010B串行口模式寄存器SCON(98H)為01010000BYNorg 0000hljmp 0100horg 0023hljmp 0200horg 0100hstart: mov tmod,#20h ;選定T1為模式2(自動重裝)mov tl1,#0f4h ;設定初值mov th1,#0f4h ;同上mov pcon,#00h ;PCON的SMOD=0setb tr1 ;啟動T1定時器clr ri ;清接
21、收標志mov scon,#50h ;設定串行口為方式1mov ie,#90h ;開串行口中斷sjmp $org 0200hrxd1:clr ri ;接收到數據后清接收標志mov a,sbuf ;數據送累加器Amov p1,a ;從P1口輸出reti endLJMP01H00HLJMP02H00HMOVCLR0000H0023H0100H0200HRXD.ASM接收程序框圖(中斷方式)T1初始化并啟動T1串行口初始化開串行口中斷等待RI中斷輸出數據到P1接收一幀數據MOV A,SBUF軟件清TIRETI主程序框圖中斷服務程序框圖EAXXESET1EX1ET0EX0設定中斷允許寄存器IE(A8H)
22、為10010000Borg 0000hljmp 0100horg 0023hljmp 0200horg 0100hstart: mov tmod,#20h ;選定T1為模式2(自動重裝)mov tl1,#0f4h ;設定初值mov th1,#0f4h ;同上mov pcon,#00h ;PCON的SMOD=0setb tr1 ;啟動T1定時器clr ri ;清接收標志mov scon,#50h ;設定串行口為方式1mov ie,#90h ;開串行口中斷sjmp $org 0200hrxd1:clr ri ;接收到數據后清接收標志mov a,sbuf ;數據送累加器Amov p1,a ;從P1口
23、輸出reti endLJMP01H00HLJMP02H00HMOVCLR0000H0023H0100H0200H4.4.6 串行口的模式2、3 n特點:模式2、3都是11位傳輸格式 (1個起始位(0)+9個數據位+1個停止位(1)),不同處是波特率; 波特率: 模式2:固定為fosc/64或fosc/32(具體由PCON中的 SMOD位來確定)。 模式3:由定時器T1的溢出波特率來確定。4.4.6 串行口的模式2、3 n模式2、3的發(fā)送過程類似于模式1,唯一的區(qū)別在于數據幀中數據是9位。這樣,在發(fā)送一幀數據時,CPU除了要把8位數據送SBUF外(mov sbuf,a),還要把第9位數據送到SC
24、ON.TB8中 set scon.tb8 或:clr scon.tb8 但注意要先設定好scon.tb8,然后再向SBUF送數,因為mov sbuf,a指令一執(zhí)行,串行口就開始發(fā)送。 例如: set scon.tb8 或: clr scon.tb8 mov sbuf,a mov sbuf,a 4.4.6 串行口的模式2、3 n模式2、3的接收過程類似于模式1,不同的是:模式1時,SCON中的RB8是接收到的停止位(“1”);而模式2、3時,RB8是接收到的第9位。 在模式1,接收操作只有在RI=0,且REN=1時數據才能接收。而模式2、3的接收條件是: a,RI=0且SM2=0 或 b, RI
25、=0且RB8=1且SM2=1 。 只有滿足a或滿足b的條件時,接收到的數據才能送到SBUF,并使RI=1激活,否則接收無效且RI不能置位。4.4.6 串行口的模式2、3 nRI=0是保證SBUF空(每次取走數據時通過軟件復位RI,如果沒有取走數據則RI=1),以保證接收到的數據不丟失。后一個條件是由SM2和RB8共同來控制接收。 令SM2=0可以保證RB8正確的接收奇偶校驗位; 令SM2=1可以利用接收到的RB8控制接收是否有效。 即 RB8=1時,接收有效。RB8=0時,接收無效。串行口模式2、3時數據幀格式 發(fā)送時:將SCON中的TB8作為第9位數據發(fā)送; 接收時:將接收來的第9位送到SC
26、ON中的RB8中。D0D1D2D3D4D5D6D7D8起始位9位數據停止位SM0SM1SM2 RENTB8RB8TIRI4.4.6 串行口的模式2、3 n模式2、3的應用之一:帶奇偶校驗位的數據傳送n奇偶校驗:接收到的第9位數據是發(fā)送方送來的奇偶校驗位。 在這種情況下,必須令SM2=0,否則接收的校驗位RB8=0時,將影響數據的接收(因為RB8是根據8位數據進行奇偶校驗的結果來設定,有時為“1”,而有時為“0”)。n當接收到數據后,用指令對 PSW.P位進行判斷。將此結果與RB8中的數據進行“異或”,看結果是否與約定的相符合。 4.4.6 串行口的模式2、3 例如:發(fā)送、接收雙方約定為奇校驗:
27、若發(fā)送的數據和第9位分別是:00011010 、0 (第9位數據是發(fā)送方用根據奇校驗自動生成的)n若接收后SBUF送A的數據是:00011010,這時,PSW.P=1,且 RB8=0 。則進行: P異或RB8=1,滿足約定條件既接收正確。n反之若SBUF送A=00011011,使PSW.P=0,且RB8=0 。 P異或RB8=0 表明不符合約定條件,接收出錯。 總之,使用模式2、3發(fā)送帶“奇偶校驗”位的數據時: 1,一定要使SM2=0。 2,又因為SM2=0,所以盡管RI能夠激活,但不會引發(fā)中斷,所以只能采用“查詢”的方式接收數據。利用模式2,3進行帶奇校驗的串行通訊程序流程圖數據送累加器AP
28、SW.P=1 ?SET SCON.TB8CLR SCON.TB8MOV SBUF,ATI=1 ?CLR SCON.TIYESNONOYES發(fā)送端程序(原始TI=0)使用“查詢法”編制的發(fā)送、接收程序返回本節(jié)目錄二RI=1 ?MOV A,SBUFPSW.P RB8=1?出錯處理CLR SCON.RIYESNO接收端程序(原始RI=0)NY數據送內存4.4.6 串行口的模式2、3 n模式2、3的應用之二:多機通訊n在傳統(tǒng)的多路數據采集系統(tǒng)中,存在著許多缺點。使它在采集的點數和引線長度都受到限制。n采用多CPU的方式可以構成一個多機通訊系統(tǒng)。如在一個生產線上要對許多參數(溫度、壓力、流量等)進行采集
29、檢測,并且要對這些數據進行處理、顯示、打印或保存。n我們可以將這些單片機進行分工:選一臺單片機作為主機,專門負責接收其他單片機傳回的數據,并進行數據的后期處理如:保存、顯示等。而其它的單片機則完成對傳感器的信號檢測、A/D轉換,最后將數據上傳給主機。我們稱這些單片機為從機。傳統(tǒng)方式的多路數據采集系統(tǒng)單片機系統(tǒng)或微型計算機系統(tǒng)傳感器 1傳感器 2傳感器 3傳感器 4傳感器 N接口電路引線(模擬信號) 機房 或 儀表室檢測現場采用“智能傳感器”組成的多路數據采集系統(tǒng)主機從機 N從機 4從機 3從機 2從機 1串行數據線(2條)RXDTXDTXDRXD4.4.6 串行口的模式2、3 n主從式多機通訊
30、原理n主機發(fā)送的數據可以傳送到各個從機,從機發(fā)送的數據只能為主機接收,從機之間不能直接通訊;n主機和從機的設置為模式2或3,其中主機的SM2=0,從機的SM2=1。n主機首先通過發(fā)送地址碼來尋找從機(地址碼的特征是第9位數據為“1”,且被從機接收為RB8),所以,所有的從機都能接收到主機發(fā)出的地址碼(因為:RI=0,SM2=1, RB8=1),并使RI=1引發(fā)中斷。從機在中斷服務程序中,將接收到地址碼與自己的地址進行比較,被選中的從機將自己的SM2=0,而未被選中的從機仍保持SM2=1。4.4.6 串行口的模式2、3 n主從式多機通訊原理n當主機找到從機后,開始向從機發(fā)數據、命令,其特征為第9
31、位=0。由于從機SM2=0,所以盡管接收到的RB8=0,同樣可以激活從機的RI,使其以查詢的方式接收主機發(fā)出的數據或命令。當主機與從機的通訊完成后,從機再將其SM2=1,主機重新發(fā)出另一個從機的地址,所有從機可以馬上響應并接收地址信息。n在模式2、3中,SM2=0時:RB8=1或RB8=0 都可以激活RI,但不能引發(fā)中斷。SM2=1時:RB8=1才能激活RI并引發(fā)中斷。而RB8=0時,RI不能激活。4.4.6 串行口的模式2、3 n模式2、3使用時要注意的問題n當主機找到從機后,開始向從在模式2、3中,可以實現較為特殊的通訊方式,如帶校驗位的9位傳送、多機通訊。注意:當SM2=0時,只能采用查
32、詢方式。功能SM2第9位 工作方式帶校驗位的9位數傳送SM2=0校驗位以查詢(RI)的方式接收數據多機通訊主機SM2=0地址碼:TB8=1數據、命令時=0以查詢的方式工作從機SM2=1未選中時SM2不變以中斷的方式接收地址選中后SM2=0以查詢的方式與主機通訊主機程序框圖T1為定時,模式2B=1200,啟動T1設串口為模式3REN=1,SM2=0TB8=1設定程序數據:R0R5調用MCOMMU停機MCOMMU發(fā)送從機地址從機應答?地址相符?發(fā)送命令字TB8=0從機應答?命令正確?命令分類接收數據塊發(fā)送數據塊從機接收就緒?從機發(fā)送就緒?RET命令從機復位NNYYNNYYNNYY接收發(fā)送一:主機程
33、序(初始化部分)ORG 2000HSTART: MOV TMOD,#20H;定時器T1為模式2MOV TH1,#0F4HMOV TL1,#0F4H;波特率為1200(設外接MHz晶體)SETB TR1;啟動T1MOV SCON,#0D8H;串口為模式3允許接收,SM2=0,TB8=1MOV PCON,#00H;設PCON中的SMOD=0MOV R0,#40H;發(fā)送數據塊首地址送R0MOV R1,#20H;接收數據塊首地址送R1MOV R2,#SLAVE;被尋從機地址送R2MOV R3,#00H/#01H;主發(fā)、從收命令?;蛑魇?、從發(fā)命令MOV R4,#14H;發(fā)送數據塊長度送R4(20)MOV
34、 R5,#14H;接收數據塊長度送R5(20)ACALL MCOM;調用主機通訊子程序SJMP $二:主機通訊子程序( MCOM)OGR 2100HMCOM:MOV A,R2;取從機地址MOV SBUF,AJNB RI,$CLR RIMOV A,SBUFXRL A,R2;核對兩個地址JZ MTXD2;相符時,轉MTXD2MTXD1:MOV SBUF,#0FFH;返回地址錯誤時,發(fā)送從機復位信號SETB TB8;設定地址標志SJMP MCOM ; 重發(fā)從機地址,使所有從機重新判斷地址MTXD2:CLR TB8;準備發(fā)送命令MOV SBUF,R3;送出命令JNB RI,$;等待從機應答CLR RI
35、;從機應答后清標志MOV A,SBUF;接收從機應答命令JNB ACC.7,MTXD3;命令無錯時,則命令分類SJMP MTXD1;命令錯返回重新聯絡MTXD3:CJNE R3,#00H,MRXD ;從機發(fā)送主機接收時,轉MRXDJNB ACC.0,MTXD1;從機接收時,若從機未準備好轉回MTXD4:MOV SBUF,R0;若從機準備好,則開始發(fā)送JNB TI,$CLR TIINC R0DJNZ R4,MTXD4RETMRXD: JNB ACC.1,MTXD1;從機發(fā)送未準備好返回MRXD1:JNB RI,$;等待接收CLR RIMOV A,SBUFINC R1;接收數據區(qū)指針加一DJNZ
36、R5,MRXD1;未接收完則繼續(xù)(R5接收數據計數器)RETENDERR從機返回的狀態(tài)字TRDYRRDY0:合法命令 0:發(fā)送未就緒 0:接收未就緒1:非法命令 1:發(fā)送就緒 1:接收就緒從機程序框圖T1為定時,模式2B=1200,啟動T1設串口為模式3REN=1,SM2=1TB8=1設定程序參數:R0R3開串行口中斷停機保護現場接收地址符合本機? 回送本機地址接收下一字符是命令嗎? 命令分類 本機發(fā)送準備就緒? 本機接收準備就緒? 發(fā)TRDY=1狀態(tài)字發(fā)RRDY=1狀態(tài)字發(fā)送數據接收數據發(fā)送完? 接收完? 保護現場返回NNYY發(fā)送命令接收命令非法命令送TRDY=0送RRDY=0NNNY主程序
37、中斷服務程序三:從機主程序ORG 1000HSTART: MOV TMOD,#20H;設定定時器T1為模式2MOV TH1,#0F4H;設定波特率為1200MOV TL1,#0F4HSETB TR1;啟動定時器T1MOV SCON,#0F8H;設串口模式3,REN=1,SM2=1,TB8=1MOV PCON,#00HMOV R0,#20H;R0指向發(fā)送數據塊首地址MOV R1,#40H;R1指向接收數據塊首址MOV R2,#14H;R2賦發(fā)送數據塊長度MOV R3,#14H;R3賦接收數據塊長度SETB EASETB ES;開中斷CLR RI ;清標志RI準備接收數據SJMP $;等待中斷四:從機中斷服務程序ORG 0023HLJMP 0100HORG 0100HSINTS: CLR RI;接收到地址后清RI PUSH ACCPUSH PSW;保護現場MOV A,SBUF;接收主機送來得從機地址XRL A,#SLAVE;核實從機地址JZ SRXD1;若是本機地址轉SRXD1RE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 散客旅游合同范本在線查看
- 企業(yè)車輛交易協議書模板
- 2024體育賽事場地租賃合同
- 2024版土石方運輸合同
- 農村個人購房合同范例
- 合伙協議書范例
- 如何簽訂借款合同避免風險
- 個人汽車買賣合同樣本模板
- 2023年高考地理專題復習新題典題精練-洋流(原卷版)
- 致大海選擇性必修中冊 第四單元課件
- (必練)廣東省軍隊文職(經濟學)近年考試真題試題庫(含答案)
- 含羞草天氣課件
- 2024年安全生產知識競賽考試題庫及答案(共五套)
- 22《鳥的天堂》課件
- 農業(yè)灌溉裝置市場環(huán)境與對策分析
- 新疆烏魯木齊市第十一中學2024-2025學年八年級上學期期中道德與法治試卷
- 2024年江西省高考地理真題(原卷版)
- 部編版小學五年級上冊道法課程綱要(知識清單)
- 經濟法學-計分作業(yè)一(第1-4章權重25%)-國開-參考資料
- 山東省臨沂市(2024年-2025年小學四年級語文)人教版期中考試(上學期)試卷及答案
- 護士2024思想匯報5篇
評論
0/150
提交評論