第七章 單片機的定時器計數(shù)器.ppt.ppt_第1頁
第七章 單片機的定時器計數(shù)器.ppt.ppt_第2頁
第七章 單片機的定時器計數(shù)器.ppt.ppt_第3頁
第七章 單片機的定時器計數(shù)器.ppt.ppt_第4頁
第七章 單片機的定時器計數(shù)器.ppt.ppt_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第七章單片機的定時器 計數(shù)器 7 1定時器 計數(shù)器1 基本概念 1 計數(shù) 計數(shù)是指對外部事件的個數(shù)進行計量 其實質(zhì)就是對外部輸入脈沖的個數(shù)進行計量 實現(xiàn)計數(shù)功能的器件稱為計數(shù)器 2 定時 8051單片機中的定時器和計數(shù)器是一個部件 只不過計數(shù)器記錄的是外界發(fā)生的事件 而定時器則是由單片機內(nèi)部提供一個非常穩(wěn)定的計數(shù)源進行定時的 這個計數(shù)源是由單片機的晶振經(jīng)過12分頻后獲得的一個脈沖源 所以定時器計數(shù)脈沖的時間間隔與晶振有關(guān) 3 定時的種類軟件定時 利用執(zhí)行一個循環(huán)程序進行時間延遲 其特點是定時時間精確 不需外加硬件電路 但占用cpu時間 因此軟件定時的時間不宜過長 硬件定時 利用硬件電路實現(xiàn)定時 其特點是不占用cpu時間 通過改變電路元器件參數(shù)來調(diào)節(jié)定時 但使用不夠靈活方便 對于時間較長的定時 常用硬件電路來實現(xiàn) 可編程定時器 通過專用的定時器 計數(shù)器芯片實現(xiàn) 其特點是通過對系統(tǒng)時鐘脈沖進行計數(shù)實現(xiàn)定時 定時時間可通過程序設(shè)定的方法改變 使用靈活方便 也可實現(xiàn)對外部脈沖的計數(shù)功能 mcs 51單片機內(nèi)部有兩個16位可編程的定時器 計數(shù)器 簡稱為t0和t1 均可作定時器用也可計數(shù)器 它們均是二進制加法計數(shù)器 當計數(shù)器計滿回零時能自動產(chǎn)生溢出中斷請求 表示定時時間已到或計數(shù)已終止 適用于定時控制 延時 外部計數(shù)和檢測等 計數(shù)器 對引腳t0 p3 4 和t1 p3 5 輸入的外部脈沖信號計數(shù) 當輸入脈沖信號從1到0的負跳變時 計數(shù)器就自動加1 計數(shù)的最高頻率一般為振蕩頻率的1 24 定時器 對系統(tǒng)晶振振蕩脈沖的12分頻輸出進行計數(shù) 1 定時器 計數(shù)器的結(jié)構(gòu)組成 16位加法計數(shù)器 工作方式寄存器tmod和控制寄存器tcon t0 tl0 低8位 和th0 高8位 t1 tl1 低8位 和th1 高8位 2 mcs 51內(nèi)部定時器 計數(shù)器 8051單片機內(nèi)部的定時器 計數(shù)器的結(jié)構(gòu)如下圖所示 2 控制寄存器tcon 88h tf1tr1tf0tr0ie1it1ie0it0 tf0 tf1 t0 1計數(shù)溢出標志位 可用于申請中斷或供cpu查詢 在進入中斷服務(wù)程序時會自動清零 但在查詢方式時必須軟件清零 1 計數(shù)溢出 0 計數(shù)未滿 tr0 tr1 t0 1啟停控制位 1 啟動計數(shù) 0 停止計數(shù) ie0 ie1和it0 it1 用于管理外部中斷 前面已介紹過 m1 m0 工作方式選擇位 00 13位定時器 計數(shù)器 01 16位定時器 計數(shù)器 常用 10 可自動重裝的8位定時器 計數(shù)器 常用 11 t0分為2個8位定時器 計數(shù)器 僅適用于t0 c 定時方式 計數(shù)方式選擇位 1 選擇計數(shù)器工作方式 對t0 t1引腳輸入的外部事件的負脈沖計數(shù) 0 選擇定時器工作方式 對機器周期脈沖計數(shù)定時 如下頁圖所示 2 工作方式寄存器tmod t1 t2 gate 門控位 定時器 計數(shù)器的啟 ??捎绍浖c硬件兩者控制 0 軟件控制 只由tcon中的啟 停控制位tr0 tr1控制定時器 計數(shù)器的啟 停 1 硬件控制 由外部中斷請求信號 和tcon中的啟 ??刂莆籺r0 tr1組合狀態(tài)控制定時器 計數(shù)器的啟 停 其控制邏輯如下圖所示 7 2定時器 計數(shù)器的工作方式 8051單片機的定時器 計數(shù)器共有四種工作模式 現(xiàn)以t0為例加以介紹 t1與t0的工作原理相同 但方式3下t1停止計數(shù) 1 工作方式0 m1m0 00 13位定時器 計數(shù)器 由th0的全部8位和tl0的低5位 tl0的高3位未用 構(gòu)成13位加1計數(shù)器 當tl0低5位計數(shù)滿時直接向th0進位 并當全部13位計數(shù)滿溢出時 溢出標志位tf0置 1 2 工作方式1 m1m0 01 16位定時器 計數(shù)器 由th0和tl0構(gòu)成16位加1計數(shù)器 其他特性與工作方式0相同 3 工作方式2 m1m0 10 自動重裝計數(shù)初值的8位定時器 計數(shù)器 16位定時器 計數(shù)器被拆成兩個8位寄存器th0和tl0 cpu在對它們初始化時必須裝入相同的定時器 計數(shù)器初值 以tl0作計數(shù)器 而th0作為預(yù)置寄存器 當計數(shù)滿溢出時 tf0置 1 同時th0將計數(shù)初值以硬件方法自動裝入tl0 這種工作方式很適合于那些重復(fù)計數(shù)的應(yīng)用場合 如串行數(shù)據(jù)通信的波特率發(fā)生器 4 工作方式3 m1m0 11 2個8位定時器 計數(shù)器 僅適用于t0 tl0 8位定時器 計數(shù)器 使用t0原有控制資源tr0和tf0 其功能和操作與方式0或方式1完全相同 th0 只能作為8位定時器 借用t1的控制位tr1和tf1 只能對片內(nèi)機器周期脈沖計數(shù) 在方式3模式下 定時器 計數(shù)器0可以構(gòu)成兩個定時器或者一個定時器和一個計數(shù)器 t0方式3下的t1方式2 因定時初值能自動恢復(fù) 用作波特率發(fā)生器更為合適 7 2 1定時 計數(shù)器的工作方式一 方式0方式0為13位計數(shù) 由tl0的低5位 高3位未用 和th0的8位組成 tl0的低5位溢出時向th0進位 th0溢出時 置位tcon中的tf0標志 向cpu發(fā)出中斷請求 定時器模式時有 n t tcy計數(shù)初值計算的公式為 定時器的初值還可以采用計數(shù)個數(shù)直接取補法獲得 計數(shù)模式時 計數(shù)脈沖是t0引腳上的外部脈沖 門控位gate具有特殊的作用 當gate 0時 經(jīng)反相后使或門輸出為1 此時僅由tr0控制與門的開啟 與門輸出1時 控制開關(guān)接通 計數(shù)開始 當gate 1時 由外中斷引腳信號控制或門的輸出 此時控制與門的開啟由外中斷引腳信號和tr0共同控制 當tr0 1時 外中斷引腳信號引腳的高電平啟動計數(shù) 外中斷引腳信號引腳的低電平停止計數(shù) 這種方式常用來測量外中斷引腳上正脈沖的寬度 二 方式1方式1的計數(shù)位數(shù)是16位 由tl0作為低8位 th0作為高8位 組成了16位加1計數(shù)器 計數(shù)個數(shù)與計數(shù)初值的關(guān)系為 三 方式2方式2為自動重裝初值的8位計數(shù)方式 工作方式2特別適合于用作較精確的脈沖信號發(fā)生器 計數(shù)個數(shù)與計數(shù)初值的關(guān)系為 四 方式3方式3只適用于定時 計數(shù)器t0 定時器t1處于方式3時相當于tr1 0 停止計數(shù) 工作方式3將t0分成為兩個獨立的8位計數(shù)器tl0和th0 定時器 計數(shù)器可按片內(nèi)機器周期定時 也可對由t0 t1引腳輸入一個負脈沖進行加法計數(shù) 在應(yīng)用時 其工作方式和工作過程均可通過程序設(shè)定和控制 因此 定時器 計數(shù)器在工作前必須先對其進行初始化 計算和設(shè)置初值 1 定時器t0 t1中斷申請過程 1 在已經(jīng)開放t0 t1中斷允許且已被啟動的前提下 t0 t1加1計滿溢出時tf0 tf1標志位自動置 1 2 cpu檢測到tcon中tf0 tf1變 1 后 將產(chǎn)生指令 執(zhí)行中斷服務(wù)程序 3 tf0 tf1標志位由硬件自動清 0 以備下次中斷申請 7 2 2定時器 計數(shù)器的應(yīng)用 2 定時器 計數(shù)器初始化的步驟 1 寫tmod 設(shè)置定時器 計數(shù)器的工作方式 2 計算定時器 計數(shù)器的初值 寫入th0 th1 tl0 tl1 3 設(shè)置ie ip 以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級 3 定時器 計數(shù)器的定時器 計數(shù)器范圍 1 工作方式0 13位定時器 計數(shù)器方式最大計數(shù)值 213 8192 2 工作方式1 16位定時器 計數(shù)器方式最大計數(shù)值 216 65536 3 工作方式2和工作方式3 8位的定時器 計數(shù)器方式因此 最大計數(shù)值 28 256 3 計數(shù)器初值的計算 方法 用最大計數(shù)量減去需要的計數(shù)次數(shù) 即 tc m c其中 tc 計數(shù)器需要預(yù)置的初值 m 計數(shù)器的模值 最大計數(shù)值 方式0時 m 213 方式1時 m 216 方式2 3時 m 28 c 計數(shù)器計滿回0所需的計數(shù)值 即設(shè)計任務(wù)要求的計數(shù)值 例如 流水線上一個包裝是12盒 要求每到12盒就產(chǎn)生一個動作 用單片機的工作方式0來控制 則應(yīng)當預(yù)置的初值為 tc m c 213 12 8180 4 定時器初值的計算 定時時間的計算公式為 t m tc t0 或tc m t t0 其中 t 定時器的定時時間 即設(shè)計任務(wù)要求的定時時間 t0 計數(shù)器計數(shù)脈沖的周期 即單片機系統(tǒng)主頻周期的12倍 m 計數(shù)器的模值 tc 定時器需要預(yù)置的初值 若設(shè)初值tc 0 則定時器定時時間為最大 若設(shè)單片機系統(tǒng)主頻為12mhz 則各種工作方式定時器的最大定時時間為 工作方式0 tmax 213 1 s 8 192ms工作方式1 tmax 216 1 s 65 536ms工作方式2和3 tmax 28 1 s 0 256ms 5 定時器 計數(shù)器應(yīng)用舉例 例題 設(shè)一只發(fā)光二極管led和8051的p1 0腳相連 當p1 0腳是高電平時 led發(fā)亮 當p1 0腳是低電平時 led不亮 編制程序用定時器來實現(xiàn)發(fā)光二極管led的閃爍功能 已知單片機系統(tǒng)主頻為12mhz 這意味著每個時鐘周期 12 1 12 1000000 12 1 s 要是主頻為11 0592mhz的話 就是12 11 0592 s includesbitled p1 2 voidinit timer1 void tmod 0 x10 th1 0 x00 initvalue tl1 0 x00 ea 1 interuptenable et1 1 enabletimer1interrupt tr1 1 main init timer1 while 1 voidtimer1 isr void interrupt3using1 th1 0 x00 initvalue tl1 0 x00 led led 7 3mcs 51單片機的串行通信 7 3 1概述1 通信通信 單片機與外界進行信息交換統(tǒng)稱為通信 8051單片機的通信方式有兩種 并行通信 數(shù)據(jù)的各位同時發(fā)送或接收 特點是傳送速度快 效率高 但成本高 適用于短距離傳送數(shù)據(jù) 計算機內(nèi)部的數(shù)據(jù)傳送一般均采用并行方式 串行通信 數(shù)據(jù)一位一位順序發(fā)送或接收 特點是傳送速度慢 但成本低 適用于較長距離傳送數(shù)據(jù) 計算機與外界的數(shù)據(jù)傳送一般均采用串行方式 2 數(shù)據(jù)通信的制式單工方式 數(shù)據(jù)僅按一個固定方向傳送 半雙工方式 數(shù)據(jù)可實現(xiàn)雙向傳送 但不能同時進行 全雙工方式 允許雙方同時進行數(shù)據(jù)雙向傳送 多工方式 在同一線路上實現(xiàn)資源共享 3 串行通信的分類串行數(shù)據(jù)通信按數(shù)據(jù)傳送方式可分為異步通信和同步通信兩種形式 同步方式 以數(shù)據(jù)塊為單位進行數(shù)據(jù)傳送 包括同步字符 數(shù)據(jù)塊和校驗字符crc 優(yōu)點是數(shù)據(jù)傳輸速率較高 缺點是要求發(fā)送時鐘和接收時鐘保持嚴格同步 數(shù)據(jù)格式如下圖所示 異步方式 以字符為單位進行數(shù)據(jù)傳送 每一個字符均按固定的字符格式傳送 又被稱為幀 優(yōu)點是不需要傳送同步脈沖 可靠性高 所需設(shè)備簡單 缺點是字符幀中因包含有起始位和停止位而降低了有效數(shù)據(jù)的傳輸速率 數(shù)據(jù)格式如下圖所示 4 串行數(shù)據(jù)通信的波特率 波特率是指每秒鐘傳送信號的數(shù)量 單位為波特 baud 而每秒鐘傳送二進制數(shù)的信號數(shù) 即二進制數(shù)的位數(shù) 定義為比特率 單位是bps bitpersecond 或?qū)懗蒪 s 位 秒 在單片機串行通信中 傳送的信號是二進制信號 波特率與比特率數(shù)值上相等 單位采用bps 例如 異步串行通信的數(shù)據(jù)傳送的速率是120字符 秒 而每個字符規(guī)定包含10位數(shù)字 則傳輸波特率為 120字符 秒 10位 字符 1200位 秒 1200bps 7 3 2mcs 51的串行口 mcs 51單片機內(nèi)部有一個全雙工的串行通信口 p3 0 p3 1 既可作uart 通用異步接收 發(fā)送器 用 也可作同步移位寄存器使用 還可用于網(wǎng)絡(luò)通信 其幀格式可有8位 10位和11位 并能設(shè)置各種波特率 1 串行口寄存器結(jié)構(gòu) 1 兩個物理上獨立的同名的接收 發(fā)送緩沖寄存器sbuf指令movsbuf a啟動一次數(shù)據(jù)發(fā)送 指令mova sbuf完成一次數(shù)據(jù)接收 即向發(fā)送緩沖器sbuf寫入數(shù)據(jù)即可發(fā)送數(shù)據(jù) 從接收緩沖器sbuf讀出數(shù)據(jù)即可接收數(shù)據(jù) 2 輸入和輸出移位寄存器和控制器等組成 3 2個sfr寄存器scon和pcon 用于串行口的初始化編程 4 接收 發(fā)送數(shù)據(jù) 無論是否采用中斷方式工作 每接收 發(fā)送一個數(shù)據(jù)都必須用指令對ri ti清0 以備下一次收 發(fā) mcs 51串行口的結(jié)構(gòu)如下圖所示 2 串行通信控制寄存器scon 98h sm0 sm1 串行口4種工作方式控制位 00 方式0 8位同步移位寄存器 其波特率為fosc 12 01 方式1 10位uart 其波特率為可變 由定時器控制 10 方式2 11位uart 其波特率為fosc 64或fosc 32 11 方式3 11位uart 其波特率為可變 由定時器控制 其中 fosc為系統(tǒng)晶振頻率 ri ti 串行口收 發(fā)數(shù)據(jù)申請中斷標志位 1申請中斷 0不申請中斷 rb8 在方式2 3中 用于存放收到的第9位數(shù)據(jù) 在雙機通信中 作為奇偶校驗 在多機通信中 用作區(qū)別地址幀 數(shù)據(jù)幀的標志 tb8 方式2 3中 是要發(fā)送的第9位數(shù)據(jù) 在雙機通信中 用于對接收到的數(shù)據(jù)進行奇偶校驗 在多機通信中 用作判斷地址幀 數(shù)據(jù)幀 tb8 0表示發(fā)送的是數(shù)據(jù) tb8 1表示發(fā)送的是地址 ren 串行口接收允許控制位 1 表示允許接收 0 禁止接收 sm2 串行口多機通信控制位 作為方式2 方式3的附加控制位 3 中斷允許寄存器ie 0a8h 中斷允許寄存器ie在3 2 2節(jié)中已介紹 其中對串行口有影響的位es es為串行中斷允許控制位 es 1 允許串行中斷 es 0 禁止串行中斷 4 電源管理寄存器pcon 87h 不可位尋址 pcon主要用于實現(xiàn)電源控制而設(shè)置的專用寄存器 其格式如下圖所示 smod 串行口波特率倍增位 1 串行口波特率加倍 0 串行口波特率不變 系統(tǒng)復(fù)位時默認為smod 0 7 3 3串行口的工作方式 1 工作方式0 8位移位寄存器i o方式 發(fā)送 接收過程 sbuf中的串行數(shù)據(jù)由rxd逐位移出 移入 低位在先 高位在后 txd輸出移位時鐘 頻率 fosc1 12 每送出 接收8位數(shù)據(jù)ti ri自動置1 需要用軟件清零ti ri 注意 串行口在方式0下的工作并非是一種同步通信方式 經(jīng)常配合 串入并出 并入串出 移位寄存器一起使用 以達到擴展一個并行口的目的 擴展電路如下圖所示 2 方式1 波特率可變的10位異步通信方式 發(fā)送 接收數(shù)據(jù)的格式 一幀信息包括1個起始位0 8個數(shù)據(jù)位和1個停止位1 發(fā)送 接收過程 sbuf中的串行數(shù)據(jù)由rxd逐位移出 移入 txd輸出移位時鐘 頻率 2smod 32 t1的溢出率 波特率可變 每送出 接收8位數(shù)據(jù)ti ri自動置1 需要用軟件清零ti ri 工作時 發(fā)送端自動添加一個起始位和一個停止位 接收端自動去掉一個起始位和一個停止位 發(fā)送 接收條件 同方式0 3 方式2 固定波特率的11位異步接收 發(fā)送方式 發(fā)送 接收過程 方式2的接收 發(fā)送過程類似于方式1 所不同的是它比方式1增加了一位 第9位 數(shù)據(jù) tb8 rb8 用于 奇偶校驗 方式2常用于單片機間通信 波特率 fosc 2smod 64 發(fā)送 接收條件 同方式0 3 方式3 可變波特率的11位異步接收 發(fā)送方式 方式3和方式2唯一的區(qū)別是波特率機制不同 方式3的波特率 2smod 32 t1的溢出率 奇偶校驗 奇偶校驗是檢驗串行通信雙方傳輸?shù)臄?shù)據(jù)正確與否的一個措施 并不能保證通信數(shù)據(jù)的傳輸一定正確 即如果奇偶校驗發(fā)生錯誤 表明數(shù)據(jù)傳輸一定出錯了 如果奇偶校驗沒有出錯 絕不等于數(shù)據(jù)傳輸完全正確 奇校驗規(guī)定 8位有效數(shù)據(jù)連同1位附加位中 二進制 1 的個數(shù)為奇數(shù) 偶校驗規(guī)定 8位有效數(shù)據(jù)連同1位附加位中 二進制 1 的個數(shù)為偶數(shù) 約定發(fā)送采用奇校驗 若發(fā)送的8位有效數(shù)據(jù)中 1 的個數(shù)為偶數(shù) 則要人為在附加位中添加一個 1 一起發(fā)送 若發(fā)送的8位有效數(shù)據(jù)中 1 的個數(shù)為奇數(shù) 則要人為在附加位中添加一個 0 一起發(fā)送 約定接收采用奇校驗 若接收到的9位數(shù)據(jù)中 1 的個數(shù)為奇數(shù) 則表明接收正確 取出8位有效數(shù)據(jù)即可 若接收到的9位數(shù)據(jù)中 1 的個數(shù)為偶數(shù) 則表明接收出錯 應(yīng)當進行出錯處理 采用偶校驗時 處理方法與奇校驗類似 7 3 4串行口的通信波特率 串行口的通信波特率恰到好處地反映了串行傳輸數(shù)據(jù)的速率 在mcs 51串行口的四種工作方式中 方式0和2的波特率是固定的 而方式1和3的波特率是可變的 由定時器t1的溢出率 t1溢出信號的頻率 控制 各種方式的通信波特率如下 方式0 波特率固定為fosc 12 其中 fosc 系統(tǒng)主機晶振頻率方式2 波特率由pcon中的選擇位smod來決定 可由下式表示 波特率 2smod 64 fosc方式1和方式3 波特率是可變的 由定時器t1的溢出率控制 波特率為 波特率 2smod 32 定時器t1溢出率t1溢出率 t1計數(shù)率 產(chǎn)生溢出所需的周期 fosc 12 2k tc 其中 k 定時器t1的位數(shù) 定時器t1用作波特率發(fā)生器時 通常工作在方式2 所以t1的溢出所需的周期數(shù) 28 tc tc 定時器t1的預(yù)置初值 下表列出了定時器t1工作于方式2的常用波特率及初值 定時器的工作方式2是自動重裝入初值的8位定時器 計數(shù)器模式 所以用它來做波特率發(fā)生器最恰當 為什么51系列單片機常用11 0592mhz的晶振設(shè)計 因為它能夠準確地劃分成時鐘頻率 與uart 通用異步接收器 發(fā)送器 常見的波特率相關(guān) 特別是較高的波特率 19600 19200 不管多么古怪的值 這些晶振都是準確 常被使用的 用11 0592mhz可以得到準確的數(shù)值 而用12mhz就不能得到整數(shù)數(shù)值 通信是一定要準確發(fā)送和接受的 否則積累誤差就會產(chǎn)生 常用波特率通常按規(guī)范取1200 2400 4800 9600 若采用晶振12mhz和6mhz 則計算得出的t1定時初值將不是一個整數(shù) 產(chǎn)生波特率誤差而影響串行通信的同步性能 解決的方法只有調(diào)整單片機的時鐘頻率fosc 通常采用11 0592mhz晶振 方式1波特率可變 由定時 計數(shù)器t1的計數(shù)溢出率來決定 波特率 2smod t1溢出率 32其中smod為pcon寄存器中最高位的值 smod 1表示波特率倍增 在實際應(yīng)用時 通常是先確定波特率 后根據(jù)波特率求t1定時初值 因此上式又可寫為 t1初值 256 2smod 32 fosc 12 波特率 例題 設(shè)晶振fosc為11 0592mhz 選定定時器工作方式2 求4800bps 9600bps時的初值 解 定時器方式2的初始值x的公式經(jīng)過推導(dǎo)可得到 x 256 fosc smod 1 384 波特率 故 x1 256 11 0592 106 1 384 4800 fahx2 256 11 0592 106 1 384 9600 fdh看得出來 采用11 0592mhz全是整數(shù)值結(jié)果 而采用12mhz則不是整數(shù)結(jié)果 7 3 5串行口的應(yīng)用 1 串口編程 例題6 p42 2 雙機通信雙機通信的硬件連接圖如下圖所示 通信協(xié)議如下 設(shè)1號機是發(fā)送方 2號機是接收方 采用串行口方式1進行通信 一幀信息為10位 其中有1個起始位 8個數(shù)據(jù)位和1個停止位 波特率為2400bps t1工作在定時器方式2 單片機時鐘振蕩頻率選用11 0592mhz 查表3 4 3可得th1 tl1 0f4h pcon寄存器的smod位為0 當1號機發(fā)送時 先發(fā)送一個 e1 聯(lián)絡(luò)信號 2號機收到后回答一個 e2 應(yīng)答信號 表示同意接收 當1號機收到應(yīng)答信號 e2 后 開始發(fā)送數(shù)據(jù) 每發(fā)送一個字節(jié)數(shù)據(jù)都要計算 校驗和 假定數(shù)據(jù)塊長度為16個字節(jié) 起始地址為40h 一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送 校驗和 2號機接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū) 起始地址也為40h 每接收到一個字節(jié)數(shù)據(jù)便計算一次 校驗和 當收到一個數(shù)據(jù)塊后 再接收1號機發(fā)來的 校驗和 并將它與2號機求出的校驗和進行比較 若兩者相等 說明接收正確 2號機回答00h 若兩者不相等 說明接收不正確 2號機回答0ffh 請求重發(fā) 1號機接到00h后結(jié)束發(fā)送 若收到的答復(fù)非零 則重新發(fā)送數(shù)據(jù)一次 程序框圖如下頁圖所示 3 多機通信 1 硬件連接單片機構(gòu)成的多機系統(tǒng)常使串行口工作在方式2和方式3 采用總線型主從式結(jié)構(gòu) 一個是主機 其余的是從機 從機要服從主機的調(diào)度 支配 有時還要對信號進行光電隔離 電平轉(zhuǎn)換等 在實際的多機應(yīng)用系統(tǒng)中 常采用rs 485串行標準總線進行數(shù)據(jù)傳輸 簡單的硬件連接如下圖所示 圖中沒有畫出rs 485接口 2 通信協(xié)議主機置sm2位0 所有從機的sm2位置1 處于接收地址幀狀態(tài) 主機發(fā)送一地址幀 其中 8位是地址 第9位為1表示該幀為地址幀 所有從機收到地址幀后 都將接收的地址與本機的地址比較 對于地址相符的從機 使自己的sm2位置0 以接收主機隨后發(fā)來的數(shù)據(jù)幀 并把本站地址發(fā)回主機作為應(yīng)答 對于地址不符的從機 仍保持sm2 1 對主機隨后發(fā)來的數(shù)據(jù)幀不予理睬 從機發(fā)送數(shù)據(jù)結(jié)束后 要發(fā)送一幀校驗和 并置第9位 tb8 為1 作為從機數(shù)據(jù)傳送結(jié)束的標志 主機接收數(shù)據(jù)時先判斷數(shù)據(jù)接收標志 rb8 若接收幀的rb8 0 則存儲數(shù)據(jù)到緩沖區(qū) 并準備接收下幀信息 若rb8 1 表示數(shù)據(jù)傳送結(jié)束 并比較此幀校驗和 若正確則回送正確信號00h 此信號命令該從機復(fù)位 即重新等待地址幀 若校驗和出錯 則發(fā)送0ffh 命令該從機重發(fā)數(shù)據(jù) 發(fā)送數(shù)據(jù) 主機收到從機應(yīng)答地址后 確認地址是否相符 如果地址不符 發(fā)復(fù)位信號 數(shù)據(jù)幀中tb8 1 如果地址相符 則清tb8 開始發(fā)送數(shù)據(jù) 從機收到復(fù)位命令后回到監(jiān)聽地址狀態(tài) sm2 1 否則開始接收數(shù)據(jù)和命令 4 單片機與pc的通信 1臺pc既可以與1個8051單片機應(yīng)用系統(tǒng)通信 也可以與多個8051單片機應(yīng)用系統(tǒng)通信 可以近距離也可以遠距離 單片機與pc機通信時 其硬件接口技術(shù)主要是電平轉(zhuǎn)換 控制接口設(shè)計和通信距離不同的接口等處理技術(shù) 其硬件連接電路如下圖所示 在windows的環(huán)境下 可使用vb通信控件 mscomm 卻可以很容易實現(xiàn)pc機與單片機之間的通信 單片機程序如下 org3000hmain movtmod 20h 在11 0592mhz下 串行口波特率movth1 0fdh 9600bps 方式3movtl1 0fdhmovpcon 00hsetbtr1movscon 0d8hloop jbcri receive 接收到數(shù)據(jù)后立即發(fā)出去sjmploopreceive mova sbufmovsbuf asend jbcti sendendsjmpsendsendend sjmploopend pc程序如下 vb語言 subform load mscomm1 commport 2mscomm1 portopen turemscomm1 settings 9600 n 8 1 endsubsubcommand1 click instringasstringmscomm1 inbuffercount 0mscomm1 output a dodummy doevents loopuntil mscomm1 inbuffercount 2 instring mscomm1 inputendsubsubcommand2 click mscomm1 portopen falseunloadmeendsub 3 4 5串行芯片max232的應(yīng)用 3 4 5 1eiars 232c總線標準與接口電路eiars 232c是異步串行通信中應(yīng)用最廣泛的標準總線 是美國eia elect

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論