【正文】
SCON (98H) SM0、 SM1:工作方式設置位 3/2/2023 17 SM2,多機通信控制位。 方式 0時, SM2必須是 0。 方式 1時,若 SM2=0,則 RB8是接收到的停止位。 RI,接收中斷標志位。 在方式 3時,波特率與 SMOD有關(guān): SMOD=1時,波特率提高一倍 。 用于擴展并行輸入或輸出口 。 方式 0發(fā)送 1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e vi s i onS i z eBD a t e : 5 M a r 2023 S he e t of F i l e : C : \ P R O G R A M F I L E S \ D E S I G N E X P L O R E R 9 9 S E \ E X A M P L E S \ c h7gz s r a w n B y :寫入 S B U FS 6 P 2S E N DR X D ( D A T A O U T )S H I F TD0 D1 D2 D3TID4 D5 D6 D7T X D ( S H I F T C L O C K )S 3 P 1 S 6 P 1方式 0 發(fā)送時序3/2/2023 24 方式 0接收 方式 0接收和發(fā)送電路 7 4 H C 1 6 4R X DT X DP 1 . 08 9 S 5 1C L RC L KABG N D7 4 H C 1 6 5R X DT X DP 1 . 08 9 S 5 1S / LC L KQG N D1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e vi s i onS i z eBD a t e : 15 M a r 2023 S he e t of F i l e : E : \教材參編 \第七章圖 \ c h7gz s D r a w n B y :清除 S C O N 中的 RI 位R E C E I V ER X D ( D A T A I N )S H I F TD0 D1 D2 D3方式 0 接收時序RID4 D5T X D ( S H I F T C L O C K )D6 D7S 5 P 23/2/2023 25 工作方式 1 方式 1 10位數(shù)據(jù)的異步通信。 1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e vi s i onS i z eBD a t e : 16 M a r 2023 S he e t of F i l e : E : \教材參編 \第七章圖 \ c h7gz s D r a w n B y :R X DS H I F TD0 D1 D2 D3RID4 D5 D6 D7R X C L O C K方式 1 接收時序起始位停止位位檢測器采樣時間3/2/2023 27 工作方式 3 方式 2和方式 3 11位數(shù)據(jù)的異步通信。 1 2 3 4 5 6 7 8ABCD87654321DCBAT i t l eN u m b e r R e v i s i o nS i z eA2D a t e : 1 6 M a r 2 0 0 9 S h e e t o f F i l e : E : \教材參編 \第七章圖 \ c h 7 g z s x .d d b D r a w n B y :寫入 S B U FS 1 P 1S E N DT X DS H I F TD0 D1 D2 D3TID4 D5 D6 D7T X C L O C K方式 2 發(fā)送時序D A T A起始位停止位T B 8S T O P B I T G E N3/2/2023 29 方式 2和方式 3接收 數(shù)據(jù)從右邊移入輸入移位寄存器,最后一次移位后,若 RI=0,且 SM2=0(或接收到的第 9位數(shù)據(jù)為 1)時,接收到的數(shù)據(jù)裝入接收緩沖器 SBUF和 RB8(接收數(shù)據(jù)的第 9位),置 RI=1,向 CPU請求中斷。( T1溢出率) 方式 3波特率 =( 2SMOD/32) 3/2/2023 35 MOV R7,20 。 允許并行置入數(shù)據(jù) SETB 。 清除接收中斷標志 MOV A,SBUF 。 判斷是否已讀入預定的字節(jié)數(shù) … … … … 。 二極管間隔點亮初值 LP2: MOV R0,2 。 啟動串行口發(fā)送 JNB TI,$ 。 調(diào)用延時 2S子程序(略) CPL A 。 單片機的奇偶校驗位 P是當累加器 A中 1的數(shù)目為奇數(shù)時, P=1。實際上,收發(fā)操作主要是在串行接口進行,CPU只把數(shù)據(jù)從接收緩沖器讀出和把數(shù)據(jù)寫入發(fā)送緩沖器。 3/2/2023 39 主程序: MOV TMOD,20H 。 啟動定時器 1 MOV SCON,50H 。 先輸出一個字符 SETB ES SETB EA LOOP:SJMP $ 。 TI=1,為發(fā)送中斷 ACALL SIN 。 中斷返回 發(fā)送子程序: SOUT: CLR TI MOV A,R0 。 加到 ASCII碼高位 INC R0 。 讀出接收緩沖區(qū)內(nèi)容 MOV C,P 。 讀入接收緩沖區(qū) INC R1 。 3/2/2023 42 例 4 單片機與單片機的通信 R 2 I NT 2 O U TT X DR X DM A X 2 3 2 AT 1 I NG N DR 2 O U TT 1 O U T8 9 S 5 1T X DR X D8 9 S 5 1G N DR 1 I NT 2 O U TM A X 2 3 2 AG N DR 2 I NR 1 O U T系 統(tǒng) 1 系 統(tǒng) 2T 2 I N3/2/2023 43 程序流程圖 3/2/2023 44 設 1號機是發(fā)送方, 2號機是接收方。若兩者相等,說明接收正確, 2號機回答 00H;若兩者不相等,說明接收不正確, 2號機回答 0FFH,請求重發(fā)。 3/2/2023 45 發(fā)送程序清單如下: ASTART: CLR EA MOV TMOD, 20H ;定時器 1置為方式 2 MOV TH1, 0F4H ;裝載定時器初值,波特率 2400 MOV TL1, 0F4H MOV PCON, 00H SETB TR1 ;啟動定時器 MOV SCON, 50H ;設定串口方式 1,且準備接收應答信號 ALOOP1: MOV SBUF, 0E1H ;發(fā)聯(lián)絡信號 JNB TI, $ ;等待一幀發(fā)送完畢 CLR TI ;允許再發(fā)送 JNB RI, $ ;等待 2號機的應答信號 CLR RI ;允許再接收 MOV A, SBUF ; 2號機應答后,讀至 A XRL A, 0E2H ;判斷 2號機是否準備完畢 JNZ ALOOP1 ; 2號機未準備好,繼續(xù)聯(lián)絡 ALOOP2: MOV R0, 40H ; 2號機準備好,設定數(shù)據(jù)塊地址指針初值 MOV R7, 10H ;設定數(shù)據(jù)塊長度初值 MOV R6, 00H ;清校驗和單元 3/2/2023 46 ALOOP3: MOV SBUF, R0 ;發(fā)送一個數(shù)據(jù)字節(jié) MOV A, R6 ADD A, R0 ;求校驗和 MOV R6, A ;保存校驗和 INC R0 JNB TI, $ CLR TI DJNZ R7, ALOOP3 ;整個數(shù)據(jù)塊是否發(fā)送完畢 MOV SBUF, R6 ;發(fā)送校驗和 JNB TI, $ CLR TI J