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

正文內(nèi)容

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

2025-03-02 19:25 本頁面
 

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