freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

l第7章89c51串行口及串行通信技術(編輯修改稿)

2025-03-02 19:25 本頁面
 

【文章內容簡介】 UF,即可啟動發(fā)送過程。串行口能自動把 TB8取出,并裝入到第 9位數據位的位置,再逐一發(fā)送出去。發(fā)送完畢,使 TI=1。? 接收時,使 SCON中的 REN=1,允許接收。當檢測到 RXD()端有1→0 的跳變(起始位)時,開始接收 9位數據,送入移位寄存器( 9位)。當滿足 RI=0且 SM2=0,或接收到的第 9位數據為 1時,前 8位數據送入 SBUF,附加的第 9位數據送入 SCON中的 RB8,置 RI為 1;否則,這次接收無效,也不置位 RI。返回3/2/2023 69波特率設計? 在串行通信中,收發(fā)雙方對發(fā)送或接收的數據速率有一定的約定,通過軟件對 89C51串行口編程可約定四種工作方式。其中,方式 0和方式 2的波特率是固定的;而方式 1和方式 3的波特率是可變的,由定時器 T1的溢出率來決定。? 串行口的四種工作方式對應著三種波特率。由于輸入的移位時鐘來源不同,因此,各種方式的波特率計算公式也不同。返回3/2/2023 70波特率設計( 1)方式 0的波特率? 由 圖 714可見,方式 0時,發(fā)送或接收一位數據的移位時鐘脈沖由 S6(即第 6個狀態(tài)周期,第 12個節(jié)拍)給出,即每個機器周期產生一個移位時鐘,發(fā)送或接收一位數據。因此,波特率固定為振蕩頻率的 1/12,并不受 PCON寄存器中 SMOD位的影響。圖 714 串行口方式 0波特率的產生返回3/2/2023 71波特率設計方式 0波特率 ≌ fosc / 12? 注意,符號 “≌”表示左面的表達式只是引擁右面表達式的數值,即右面的表達式是提供了一種計算的方法。返回3/2/2023 72波特率設計( 2)方式 2的波特率 串行口方式 2波特率的產生與方式 0不同,即輸入的時鐘源不同,其時鐘輸入部分入 圖 715所示。? 控制接收與發(fā)送的移位時鐘由振蕩頻率 fosc的第二節(jié)拍 P2時鐘(即fosc/2)給出,所以,方式 2波特率取決于 PCON中 SMOD位的值:? SMOD=0時,波特率為 fosc的 1/64;? SMOD=1時,波特率為 fosc的 1/32。? 即方式 2波特率 ≌2SMOD/64fosc圖 715 串行口方式 2波特率的產生返回3/2/2023 73波特率設計( 3)方式 1和方式 3的波特率? 方式 1和方式 3的移位時鐘脈沖由定時器 T1的溢出率決定,如 圖 716所示。因此, 89C51串行口方式 1和方式 3的波特率由定時器 T1的溢出率與 SMOD值同時決定。即 方式 方式 3波特率 ≌T1溢出率 /n圖 716 串行口方式 方式 3波特率的產生返回3/2/2023 74波特率設計? 當 SMOD=0時, n=32; SMOD=1時, n=16。所以,可用下式確定方式 1和方式 3的波特率:方式 方式 3波特率 ≌2SMOD/32(T1溢出速率 )? 其中, T1溢出速率取決于 T1的計數速率(計數速率 ≌fosc/12)和 T1預置的處置。? 若定時器 T1采用模式 1時,波特率公式如下:串行方式 方式 3波特率 ≌2SMOD/32(fosc/12)/(216初值 )返回3/2/2023 75波特率設計? 表 72列出了串行口方式 方式 3常用波特率及其初值。? 定時器 T1用作波特率發(fā)生器時,通常選用定時器模式 2(自動重裝初值定時器)比較實用。要設置定時器 T1為定時方式(使 C/T=0),讓 T1計數內部振蕩脈沖,即計數速率為 fosc/12(注意應禁止 T1中斷,以免溢出而產生不必要的中斷)。先設定 TH1和 TL1定時即輸初值為 X,那么每過 “28X”個機器周期,定時器 T1就會產生一次溢出。返回3/2/2023 76表 72常用波特率與其他參數選取關系返回3/2/2023 77波特率設計? 因此, T1溢出速率為T1溢出速率 ≌(fosc/12)/(28X)于是,可得出定時器 T1模式 2的初始值 X:返回3/2/2023 78波特率設計? 例 71: 89C51單片機時鐘振蕩頻率為 ,選用定時器 T1工作模式 2作為波特率發(fā)生器,波特率為2400b/s,求初值。? 解:設置波特率控制為 (SMOD)=0? 所以, (TH1)=(TL1)=F4H。返回3/2/2023 79波特率設計? 系統(tǒng)晶體振蕩頻率選為 數,從而產生精確的波特率。? 如果串行通信選用很低的波特率,可將定時器 T1置于模式 0或模式 1,即 13位或 16位定時方式;但在這種情況下, T1溢出時,需要中斷服務程序重裝初值。中斷響應時間和執(zhí)行指令時間會使波特率產生一定的誤差,可用改變初值的辦法加以調整。返回3/2/2023 80 89C51串行口的工作方式及應用? 如前所述, 89C51串行口的工作主要受串行口控制寄存器 SCON的控制,另外,也和電源控制寄存器 PCON有些關系。 SCON寄存器用來控制串行口的工作方式,還有一些其他的控制作用。? 89C51單片機串行口的四種工作方式傳送的數據位數敘述如下:返回3/2/2023 81 89C51串行口的工作方式及應用① 方式 0:移位寄存器輸入 /輸出方式。串行數據通過 RXD線輸入或輸出,而TXD線專用于輸出時鐘脈沖給外部移位寄存器。方式 0可用來同步輸出或接收 8位數據(最低位首先輸出),波特率固定為 fosc/12,其中, fosc為單片機的時鐘頻率。② 方式 1: 10位異步接收 /發(fā)送方式。一幀數據包括 1位起始位( 0), 8位數據位和 1位停止位( 1)。串行接口電路在發(fā)送時能自動插入起始位和停止位;在接收時,停止位進入特殊功能寄存器 SCON的 RB8位。方式 1的傳送波特率是可變的,可通過改變內部定時器的定時值來改變波特率。③ 方式 2: 11位異步接收 /發(fā)送方式。除了 1位起始位、 8位數據位、 1位停止位之外,還可以插入第 9位數據位。④ 方式 3:同方式 2,只是波特率可變。返回3/2/2023 82串行口方式 0的應用? 89C51單片機串行口基本上是異步通信接口,但在方式 0時是同步操作。外接串入 —— 并出或并入 —— 串出器件,可實現(xiàn) I/O的擴展。? 串行口方式 0的數據傳送可以采用中斷方式,也可以采用查詢方式。無論哪種方式,都要借助于 TI或 RI標志。? 在串行口發(fā)送時,或者靠 TI置位后引起中斷申請,在中斷服務程序中發(fā)送下一組數據;或者通過查詢 TI的值,只要 TI為 0就繼續(xù)查詢,直到 TI為 1后結束查詢,進入下一個字符的發(fā)送。? 在串行口接收時,由 RI引起中斷或對 RI查詢來決定何時接收下一個字符。無論采用什么方式,在開始串行通信前,都要先對 SCON寄存器初始化,進行工作方式的設置。在方式 0中, SCON寄存器的初始化只是簡單地把 00H送入 SCON就可以了。返回3/2/2023 83串行口方式 0的應用? 例 72:用 89C51串行口外接 164串入 —— 并出移位寄存器擴展 8位并行口; 8位并行口的每位都接一個發(fā)光二極管,要求發(fā)光二極管從左到右以一定延遲輪流顯示,并不斷循環(huán)。設發(fā)光二極管為共陰極接法,如 圖 717所示。? 解:設數據串行發(fā)送采用中斷方式,顯示的延遲通過調用延遲程序DELAY來實現(xiàn)。圖 717返回3/2/2023 84串行口方式 0的應用程序清單: ORG 0023H 。串行口中斷入口 AJMP SBR 。轉入串行口中斷服務程序 ORG 2023H 。主程序起始地址 MOV SCON ,00H 。串行口方式 0初始化 MOV A ,80H 。最左一位發(fā)光二極管先亮 CLR 。關閉并行輸出 MOV SBUF, A 。開始串行輸出LOOP : SJMP $ 。等待中斷SBR : SETB 。啟動并行輸出 ACALL DELAY 。顯示延遲一段時間 CLR TI 。清發(fā)送中斷標志 RR A 。準備右邊一位顯示 CLR 。關閉并行輸出 MOV SBUF , A 。再一次串行輸出 RETI 。中斷返回返回3/2/2023 85串行口方式 0的應用? 用方式 0外加移位寄存器來擴展 8位輸出口時,要求移位寄存器帶有輸出控制,否則串行移位過程也會反映到并行輸出口;另外,輸出口最好再接一個寄存器或鎖存器,以免在輸出門關閉使( STB=0)輸出又發(fā)生變化。? 用方式 0加上并入 —— 串出移位寄存器可擴展一個 8位并行輸入口。移位寄存器必須帶有預置 /移位的控制端,由單片機的一個輸出端子加以控制,以實現(xiàn)先由 8位輸入口置數到移位寄存器,然后再串行移位從單片機的串行口輸入到接收緩沖器,最后再讀入到 CPU中。返回3/2/2023 86串行口方式 0的應用? 例 73:用 89C51串行口外加移位寄存器 165或 166擴展 8位輸入口,輸入數據由 8個開關提供,另有一個開關 K提供聯(lián)絡信號。當 K=0時,表示要求輸入數據,輸入的 8位為開關量,提供邏輯模擬子程序的輸入信號。如 圖 718所示。圖 718返回3/2/2023 87串行口方式 0的應用解:串行口方式 0的接收要用 SCON寄存器中的 REN位作為開關來控制。因此,初值化時,除了設置工作方式之外,還要使 REN位為 1,其余各位仍然為 0。對 RI采用查詢方式來編寫程序,當然,先要查詢開關 K是否閉合。程序清單: START: MOV SCON ,10H 。串行口方式 0初始化 JB ,$ 。開關 K未閉合,等待 SETB 。P/S=1,并行置入數據 CLR 。PS=0,開始串行移位 JNB RI ,$ 。查詢 RI CLR RI 。查詢結束,清 RI MOV A ,SBUF 。讀數據到累加器 ACALL LOGSIM 。進行邏輯模擬 SJMP START 。準備下一次模擬返回3/2/2023 88串行口方式 1的發(fā)送和接收例 74: 89C51串行口按雙工方式收發(fā) ASCII字符,最高位用來作奇偶校驗位,采用奇校驗方式,要求傳送的波特率為1200b/s。編寫有關的通信程序。解: 7位 ASCII碼加 1位奇校驗共 8位數據,故可采用串行口方式 1。 89C51單片機的奇偶校驗位 P是當累加器 A中 1的數目為奇數時, P=1。如果直接把 P的值放入 ASCII碼的最高位,恰好成了偶校驗,與要求不符。因此,要把 P的值取反以后放入 ASCII碼最高位,才是要求的奇校驗。返回3/2/2023 89串行口方式 1的發(fā)送和接收? 雙工通信要求收、發(fā)能同時進行。實際上,收、發(fā)操作主要是在串行接口進行, CPU只是把數據從接收緩沖器讀出和把數據寫入發(fā)送緩沖器。數據傳送用中斷方式進行,響應中斷以后,通過檢測是 RI置位還是 TI置位來決定 CPU是進行發(fā)送操作還是接收操作。發(fā)送和接收都通過調用子程序來完成,設發(fā)送數據區(qū)的首地址為 20H,接收數據區(qū)的首地址為 40H, fosc為 6MHz,通過查波特率初值( 表 72)可知定時器的初裝值為 F3H。定時器 T1采用工作模式 2,可以避免計數溢出后用軟件重裝定時初值的工作。返回3/2/2023 90串行口方式 1的發(fā)送和接收程序清單:主程序 MOV TMOD ,20H 。定時器 1設為模式 2 MOV TL1 , 0F3H 。定時器初值 MOV TH1 ,0F3H 。8位重裝值 SETB TR1 。啟動定時器 1 MOV SCON ,50H 。設置為方式 1, ; REN=1 MOV R0 ,20H 。發(fā)送數據區(qū)首址 MOV R1 ,40H 。接收數據取首址 ACALL SOUT 。先輸出一個字符 SETB ES SETB EA SJMP $ 。等待中斷 中斷服 ORG 0023H
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1