【正文】
定時初值。 8. 設(shè)計一個單片機的雙機通信系統(tǒng),并編寫通信程序。假定波特率為 1200bps,第九數(shù)據(jù)位作奇偶校驗位,以中斷方式傳送數(shù)據(jù)。由于串行通信只用一根數(shù)據(jù)線傳送數(shù)據(jù)的位信號,就算加上幾條通信控制線,也用不了很多電纜線。 TRDY=1:表示從機準(zhǔn)備好發(fā)送。若接收幀的 RB8=0,則存數(shù)據(jù)到緩沖區(qū),并準(zhǔn)備接收下幀信息。當(dāng) SM2=0時,不判 RB8的狀態(tài),均向 CPU發(fā)中斷請求。 2號機接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),起始地址也為 40H,每接收到一個數(shù)據(jù)字節(jié)便計算一次“校驗和”,當(dāng)收到一個數(shù)據(jù)塊后,再接收 1號機發(fā)來的“校驗和”,并將它與 2號機求出的校驗和進行比較。 刪去校驗位 MOV R1,A 。 奇校驗 MOV ,C 。 轉(zhuǎn)至中斷服務(wù)程序 ORG 0100H SBR1: JNB RI,SEND 。 8位重裝值 SETB TR1 。 雙工通信要求收、發(fā)能同時進行。 判斷預(yù)定字節(jié)數(shù)送完否 LCALL DEL2S 。 設(shè)串行口方式 0 MOV A,55H 。 等待接收一幀數(shù)據(jù) CLR RI 。編程實現(xiàn)從 16位擴展口讀入 20個字節(jié)數(shù)據(jù),并把它們轉(zhuǎn)存到內(nèi)部 RAM的 50H~63H中。 最后一次移位后,置 TI=1,請求中斷。波特率為 fosc/12。 3/2/2023 20 SMOD, 波特率倍增位。 置 REN=1,啟動串口接收過程 置 REN=0,則禁止串口接收 3/2/2023 18 TB8, 在方式 3中,是發(fā)送數(shù)據(jù)的第 9位 數(shù)據(jù)的奇偶校驗位 地址幀 /數(shù)據(jù)幀的標(biāo)志位 RB8, 在方式 3中,是接收到數(shù)據(jù)的第 9位 奇偶校驗位 地址幀 /數(shù)據(jù)幀的標(biāo)志位。 3/2/2023 14 串行口 UART ? 串行口的結(jié)構(gòu) ? 串行口的控制 3/2/2023 15 串行口的結(jié)構(gòu) 2個物理上獨立的接收、發(fā)送緩沖器 SBUF,占用同一地址 99H ; 接收器是雙緩沖結(jié)構(gòu) 。 3/2/2023 9 面向位的同步格式 : 用序列 01111110作為 開始 和 結(jié)束 標(biāo)志。 傳輸線少,可利用電話網(wǎng),但傳送控制復(fù)雜。 傳輸效率較高,但硬件設(shè)備復(fù)雜。對于接收機 SM2=0,收到 RB8( 0或 1)既可使收到的數(shù)據(jù)進入 SBUF,并激活 RI。 方式 0時,串行發(fā)送第 8位數(shù)據(jù)結(jié)束時 其它方式,串行發(fā)送停止位的開始時 硬件使 TI置 1, 發(fā)中斷申請。 SMOD PCON (87H) 電源功能寄存器 PCON ( 87H) 3/2/2023 21 串行口的工作方式 ? 工作方式 0 ? 工作方式 1 ? 工作方式 2 ? 工作方式 3 3/2/2023 22 串行口工作方式 SM0、 SM1 工作方式 功能描述 波特率 00 方式 0 8位同步移位寄存器 Fosc/12 01 方式 1 10位 UART 可變,由定時器控制 10 方式 2 11位 UART Fosc/64或 fosc/32 11 方式 3 11位 UART 可變,由定時器控制 其中 fosc為晶振頻率。 停止位數(shù) 據(jù) 位 8 位起始位L S B M S B空閑空閑D 0D 71 幀 共 1 0 位 方式 1發(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 1 P 1S E N DT X DS H I F TD0 D1 D2 D3TID4 D5 D6 D7T X C L O C K方式 1 發(fā)送時序D A T A起始位停止位3/2/2023 26 方式 1接收 置 REN為 1時,接收器檢測到 RXD引腳輸入電平發(fā)生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。 方式 0波特率 = fosc/12 方式 2波特率 =( 2SMOD/64) 設(shè)片內(nèi) RAM指針 SETB F0 。 判斷是否接收完偶數(shù)幀 , 接收完則重新并行置入 DEC R7 SJMP RCV1 。 對 74HC164清零,熄滅所有發(fā)光二極管 SETB 。 循環(huán)顯示 3/2/2023 38 用串行口進行雙機異步通信 例 3 單片機串行口按雙工方式收發(fā) ASCII字符,最高位用來作奇偶校驗位,采用奇校驗方式,要求傳送的波特率為 1200bps,編寫有關(guān)的通信程序。發(fā)送和接收都通過調(diào)用子程序來完成,設(shè)發(fā)送數(shù)據(jù)區(qū)的首地址為 20H,接收數(shù)據(jù)區(qū)的首地址為 40H, fosc為 6MHz,通過計算初裝值 x=256fosc*( SMOD+1) /( 384*波特率),可知定時器的初裝值為 F3H。 發(fā)送數(shù)據(jù)區(qū)首地址 MOV R1,40H 。 轉(zhuǎn)至統(tǒng)一的出口 SEND:ACALL SOUT 。 發(fā)送 ASCII碼 RET 。 返回 在主程序中已初始化 REN=1,則允許接收。若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。所謂主從式,即在多臺單片機中,有一臺是主機,其余的為從機,如圖 。否則開始接收數(shù)據(jù)和命令。約定一次傳遞數(shù)據(jù)為 16個字節(jié),以 01H地址的從機為例。 4. 用定時器 T1作波特率發(fā)生器,并把 T1設(shè)置成工作方式 2,系統(tǒng)時鐘頻率為12MHz,求可能產(chǎn)生的最高和最低波特率? 5. 以串行口按工作方式 1進行串行數(shù)據(jù)通信。將甲機內(nèi)部RAM30H~3FH存儲區(qū)的數(shù)據(jù)塊通過串行口傳送到乙機內(nèi)部 RAM 40H~4FH存儲區(qū)中去。 7. 以串行口按工作方式 3進行串行數(shù)據(jù)通信。同時應(yīng)用串行接口可以實現(xiàn)單片機系統(tǒng)之間點對點的單機通信、多機通信和單片機與系統(tǒng)機的單機或多機通信。 RRDY=1:表示從機準(zhǔn)備好接收。 3/2/2023 52 主機接收數(shù)據(jù)時先判斷數(shù)據(jù)接收標(biāo)志( RB8),若RB8=1,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗和,若正確則回送正確信號 00H,此信號命令該從機復(fù)位(即重新等待地址幀);若校驗和出錯,則發(fā)送0FFH,命令該從機重發(fā)數(shù)據(jù)。若接收到的 RB8=1,接收內(nèi)容進入 SBUF, RI置 1,向 CPU發(fā)中斷請求;若RB8=0, RI不置 1,即不向 CPU發(fā)中斷請求。當(dāng) 1號機收到應(yīng)答信號“ E2”后,開始發(fā)送數(shù)據(jù),每發(fā)送一個數(shù)據(jù)字節(jié)都要計算“校驗和”,假定數(shù)據(jù)塊長度為 16個字節(jié),起始地址為 40H,一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗和”。 奇校驗 ANL A,7FH 。 奇偶標(biāo)志賦予 C CPL C 。 串行口中斷入口 AJMP SBR1 。 定時器初值 MOV TH1, 0F3H 。因此,要把 P的值取反后,放入 ASCII碼的最高位,才是要求的奇校驗。 清串行口發(fā)送中斷標(biāo)志 DJNZ R0,LP1 。 3/2/2023 37 ST: MOV SCON,00H 。 設(shè)串行口方式 0并啟動接收 JNB RI,$ 。 3/2/2023 33 串行口應(yīng)用舉例 ? 用串行口擴展 I/O口 ? 用串行口進行雙機異步通信 ? 用串行口進行多機異步通信 3/2/2023 34 用串行口擴展 I/O口 例 1 用并行輸入 8位移位寄存器 74HC165擴展 16位并行輸入口。每一移位脈沖都使輸出移位寄存器的各位移動一位,并由 TXD引腳輸出。 8位數(shù)據(jù)。必須在中斷服務(wù)程序中用 軟件將其清 0。 REN, 允許串行接收位。 傳輸距離與傳輸速率的關(guān)系 傳輸距離隨傳輸速率的增加而減小。同步方法: 計算機乙計算機甲0 1 1 0 1數(shù) 據(jù)時 鐘計算機乙計算機甲0 1 1 0 1數(shù) 據(jù)時 鐘數(shù) 據(jù) + 時 鐘 外同步 自同步 3/2/2023 8 面向字符的同步格式 : 同步字符 SYN( 16H) 序始字符 SOH ( 01H),表示標(biāo)題的開始 標(biāo)題:源地址、目標(biāo)地址和路由指示等信息 文始字符 STX ( 02H) 數(shù)據(jù)塊是傳送的正文內(nèi)容,由多個字符組成 組終字符 ETB( 17H)或文終字符 ETX( 03H) 校驗碼 S Y N S Y N S O H S T X E T B / E T X塊 校 驗標(biāo) 題 數(shù) 據(jù) 塊例: IBM的二進