單片機內(nèi)部主要功能模塊工作原理及應(yīng)用.ppt
《單片機內(nèi)部主要功能模塊工作原理及應(yīng)用.ppt》由會員分享,可在線閱讀,更多相關(guān)《單片機內(nèi)部主要功能模塊工作原理及應(yīng)用.ppt(216頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第三章 單片機內(nèi)部主要功能模塊工作原理及應(yīng)用 本章主要內(nèi)容 MCS 51單片機并行端口的結(jié)構(gòu)特點 定時 計數(shù)器 串行口的工作原理 查詢 及 中斷 兩種編程方法及對定時器 串行口進(jìn)行編程 本章目錄 MCS 51單片機的8位并行輸入輸出端口MCS 51單片機的定時 計數(shù)器MCS 51單片機的串行接口MCS 51的中斷系統(tǒng) 2020 3 21 3 28位并行輸入輸出端口 CPU 輸入輸出端口 外部設(shè)備 內(nèi)總線 MCS 51 并行I O端口是實現(xiàn)單片機與外部進(jìn)行并行數(shù)據(jù)交換的通道 2020 3 21 MCS 51單片機的并行端口具備三種工作方式 通用I O方式 直接與外部設(shè)備連接 實現(xiàn)數(shù)據(jù)的并行交換 常用于 最小系統(tǒng) 模式的設(shè)計 總線方式 當(dāng)系統(tǒng)要與外部ROM RAM或ADC等器件進(jìn)行連接時 采用類似于微機系統(tǒng)的三總線結(jié)構(gòu)進(jìn)行設(shè)計 部分端口承擔(dān)總線的功能 此時系統(tǒng)稱為 擴展系統(tǒng) 第二功能方式 由于引腳的限制 內(nèi)部信號無法正常輸入輸出 因此借用I O端口引腳作為內(nèi)部信號通道也是一種不得已的方法 當(dāng)端口作為總線或第二功能時 就不能再做I O 2020 3 21 MCS 51單片機的四個并行端口P0 P1 P2和P3都是具有輸出鎖存功能的 準(zhǔn)雙向 端口 這些鎖存器的位置都在SFR中 其地址分別為 80H 90H A0H B0H 出于系統(tǒng)功能的考慮 在硬件設(shè)計上對端口功能都有不同的要求 所以它們又具有不同的結(jié)構(gòu)和特點 2020 3 21 3 1 1P0口 3 1 2P1口 3 1 3P2口 3 1 4P3口 3 1 5并行端口在使用時應(yīng)注意的幾個問題 3 1 6單片機與繼電器等大電流負(fù)載的接口 2020 3 21 3 1 1P0口 特點 具有兩種工作方式 通用數(shù)據(jù)I O雙向端口 地址 數(shù)據(jù)復(fù)用總線 2020 3 21 在作為通用數(shù)據(jù)I O端口時 具有較強的輸出驅(qū)動能力 8個TTL負(fù)載 因輸出是 開漏 結(jié)構(gòu) 所以與MOS負(fù)載連接時 需要外接一個上拉電阻 作為 地址 數(shù)據(jù)復(fù)用總線 使用時 P0口首先輸出存儲器的低八位地址信號 然后變?yōu)閿?shù)據(jù)總線進(jìn)行數(shù)據(jù)的輸入輸出 所以稱 分時復(fù)用總線 注意 此時P0口不能再作為通用I O口 2020 3 21 P0口的位結(jié)構(gòu)圖 DQ鎖存器CL Q P0 x引腳 Vcc 地址 數(shù)據(jù)1 0 控制 0時 讀鎖存器 讀引腳 內(nèi)部總線 寫鎖存器 MUX 控制 0時 Vcc 返回前一次 參見講義235頁 2020 3 21 硬件組成 1 一個輸出鎖存器 D型觸發(fā)器 2 二個三態(tài)門 控制讀引腳或讀鎖存器 3 與門和MUX等元件組成的輸出控制電路 4 一對場效應(yīng)晶體管FET構(gòu)成的輸出電路 2020 3 21 P0口的工作原理 普通I O模式下的輸出與輸入原理 擴展 總線 方式下的工作原理 2020 3 21 1 P0口的I O操作 通用I O端口 在P0口作為通用I O端口時 控制電路中的 控制 端為 0 電平 此時多路開關(guān)MUX接入下方的鎖存器的 Q端 因與門的一個輸入端為 0 所以它使上端的FET截止 這就是P0口在做I O口時輸出為 漏極開路 結(jié)構(gòu)的原因 返回結(jié)構(gòu)圖 2020 3 21 數(shù)據(jù)經(jīng)內(nèi)總線送到鎖存器的 D 端 經(jīng) Q 端送場效管應(yīng)輸出極 總線送 0 時 鎖存器的 Q 1 使下端的FET導(dǎo)通 上面的FET截止 端口呈現(xiàn) 0 電平 總線送 1 時 鎖存器 Q 0 使下端的FET截止 輸出極的兩個FET全部截止 在這種情況下 必須通過上拉電阻的作用使端口為高電平 返回結(jié)構(gòu)圖 一 輸出操作 MOVP0 A 2020 3 21 輸入操作實際上有兩種 參見結(jié)構(gòu)圖 讀引腳 用于真正的外部數(shù)據(jù)輸入的通道 讀鎖存器 在端口作輸出時常使用的操作 a 讀引腳 當(dāng)外部信號通過端口引腳輸入時 讀引腳上的電平實現(xiàn)信號的輸入 如指令 MOVA P0 A P0此時 單片機控制 讀引腳 的三態(tài)門 使引腳處的外部電平經(jīng)三態(tài)門送入內(nèi)部總線 返回結(jié)構(gòu)圖 二 輸入操作MOVA P0 2020 3 21 在端口電路中 可以發(fā)現(xiàn)一個問題 端口在輸入 讀引腳 時 原來鎖存器的狀態(tài)可能要影響引腳電平的輸入 如 原來鎖存器的狀態(tài)為 0 態(tài) 電路將不能正確讀入 要解決的方法就是讓下端的FET截止 即事先向端口寫一個 1 返回結(jié)構(gòu)圖 讀引腳操作前要事先向該端口寫 1 2020 3 21 請注意下面的一段程序 MOVP0 0FFH 0FFH送P0 寫1 MOVA P0 從P0口引腳輸入數(shù)據(jù)到A你能正確的分析出指令的操作嗎 上述指令執(zhí)行后P0 返回結(jié)構(gòu)圖 2020 3 21 b 讀鎖存器 端口作輸出時的一種操作在這種情況下 讀入的數(shù)據(jù)不是來自引腳 而是端口內(nèi)部的鎖存器的內(nèi)容 P0 X 單片機的引腳設(shè)計為輸出時 返回結(jié)構(gòu)圖 2020 3 21 當(dāng)端口輸出時 MOVP0 A 往往要再將前面輸入的狀態(tài)取回來 進(jìn)行再處理然后重新輸出 如 ORLP0 A將P0口前次輸出的數(shù)據(jù)與累加器A的內(nèi)容相 或 后在送回P0口 輸出 此時P0口的數(shù)據(jù)是從鎖存器中讀回的 而不是從引腳輸入 上述的過程也稱之謂 讀 修改 寫 操作 為什么端口作輸出時還要讀入操作 2020 3 21 凡是這種 讀 修改 寫 操作 讀到的數(shù)據(jù)都是鎖存器的數(shù)據(jù)而不是讀引腳數(shù)據(jù) 這種 讀 修改 寫 的操作有 ORL XRL JBC CPL INC DEC DJNZ MOVPx y CLRPx y和SETPx y 而真正讀引腳的指令只有MOVA P0 2020 3 21 為什么要讀鎖存器而不去讀引腳 為什么 讀 修改 寫 操作不是從引腳回取信號 因為 引腳信號與外部設(shè)備連接 易受外界干擾 引腳上的電平往往不能正確反映前次的輸出結(jié)果 負(fù)載 Vcc 2020 3 21 舉例 在當(dāng)前狀態(tài)下 將P0 2的電平變 1 其余位不變 MOVA 00000100BORLP0 A這里 ORL指令就是先將P0口的鎖存器數(shù)據(jù)取出 與A相或 結(jié)果送回P0口 思考 直接使用 MOVA 00000100BMOVP0 A是否可以 P0 0P0 1P0 2P0 3P0 4P0 5P0 6P0 7 2020 3 21 2 P0口的總線方式 控制電路的 控制 1 此時與門打開 MUX接向 地址 數(shù)據(jù) 信號 在這種情況下 輸出極的兩個FET都處于正常的工作狀態(tài) 地址 數(shù)據(jù)信息通過 地址 數(shù)據(jù) 線經(jīng)反相器送至FET的輸入 并輸出 由于上部FET管不再被 控制 信號關(guān)閉 所以此時口線可以輸出高電平 即不用外加上拉電阻 返回結(jié)構(gòu)圖 2020 3 21 只要CPU執(zhí)行MOVX MOVC 外ROM 指令 P0 P2口就自動變?yōu)閿?shù)據(jù) 地址總線 在進(jìn)行硬件系統(tǒng)的設(shè)計中 如果使用了外部存儲器時 P0口成為整個系統(tǒng)的地址 數(shù)據(jù)復(fù)用總線 換句話 P0口不能再作為通用的I O端口 2020 3 21 做通用數(shù)據(jù)I O端口并與MOS器件連接時 必須外接 上拉電阻 否則不能正確的輸出高電平 在輸入操作前 必須先向端口 寫1 讀引腳 與 讀鎖存器 是不同的兩個數(shù)據(jù)通道 在總線方式時 P0口不能再做通用的I O端口 它分時輸出地址 數(shù)據(jù)總線的信息 此時引腳不用外接上拉電阻 返回 返回結(jié)構(gòu)圖 P0口特點小結(jié) 2020 3 21 特點 單純的通用I O端口 負(fù)載能力為3個TTL輸入 與P0口的區(qū)別在于內(nèi)部具有上拉電阻 所以輸出時不用外接上拉電阻 3 1 2P1口的位結(jié)構(gòu)圖 DQ鎖存器CL Q P1 x引腳 Vcc 讀鎖存器 讀引腳 內(nèi)部總線 寫鎖存器 內(nèi)部上拉電阻 返回 返回前一次 2020 3 21 3 1 3P2口特點 通用數(shù)據(jù)I O端口 和 高八位地址總線 端口 DQ鎖存器CL Q P2 x引腳 Vcc 地址 數(shù)據(jù)1 0 控制 讀鎖存器 讀引腳 內(nèi)部總線 寫鎖存器 MUX 地址 數(shù)據(jù) 0 內(nèi)部上拉電阻 返回上一次 2020 3 21 注意 使用外數(shù)據(jù)存儲器時 P2口分兩種情況 1 使用256B的外部RAM時 此時用8位的寄存器R0或R1作間址寄存器 這時P2口無用 所以在這種情況下 P2口仍然可以做通用I O端口 如 movxa r0或movxa r12 如果訪問外部ROM或使用大于256BRAM時 P2口必須作為外存儲器的高八位地址總線 如 movxa dptr 訪問外部數(shù)據(jù)存儲器movca a dptr 訪問外部程序存儲器這里使用了16位的寄存器DPTR 上一頁 返回 2020 3 21 3 1 4P3口特點 通用I O端口 多用途端口 DQ鎖存器CL Q P3 x引腳 第二輸出功能 讀鎖存器 讀引腳 內(nèi)部總線 寫鎖存器 Vcc 返回 第二輸入功能 2020 3 21 在多用途情況下 P3口分別作為串行口 外中斷輸入 外部計數(shù)輸入和系統(tǒng)擴展時使用的WR和RD信號的端口 在這種情況下 鎖存器Q端為 1 電平以保證與門是打開的 在通用I O模式下 替代輸出功能 端為 1 電平 以保證與門打開 原則上在進(jìn)行系統(tǒng)設(shè)計時 P3口不做通用I O口 以充分利用單片機的內(nèi)部模塊資源 2020 3 21 P3口各位的第二功能 2020 3 21 3 1 5并行端口使用中應(yīng)注意的問題 如何使用并行端口來直接驅(qū)動電流比較大的負(fù)載 如 LED 是采用 拉電流 還是 灌電流 Px y Vdd Px y Vdd Vdd 灌電流方式輸出 0 點亮LED 拉電流方式輸出高電平點亮LED 返回 2020 3 21 使用灌電流的方式與電流較大的負(fù)載直接連接時 MCS 51的端口可以吸收約20mA的電流而保證端口電平不高于0 45V 見右上圖 但驅(qū)動邏輯并不符合人們的日常習(xí)慣 采用拉電流方式連接負(fù)載時 MCS 51所能提供 拉電流 僅僅為80 A 否則輸出的高電平會急劇下降 如果我們采用右下圖的方式 向端口輸出一個高電平去點亮LED 會發(fā)現(xiàn)端口輸出的電平不是 1 而是 0 注意 現(xiàn)在已出現(xiàn)如PIC等單片機可以提供較大的 拉電流 具體問題靈活掌握 2020 3 21 3 1 6單片機與大電流負(fù)載的接口 為了提高系統(tǒng)的可靠性和安全性 在一般設(shè)計中并行端口不是直接與負(fù)載連接 往往使用驅(qū)動電路 如74LS244等 做緩沖 驅(qū)動 可以采用通向驅(qū)動也可以采用反向驅(qū)動 Px y Vcc Px y Vcc 同相驅(qū)動 反相驅(qū)動 2020 3 21 為了保證單片機系統(tǒng)的安全 減少外部電路對系統(tǒng)的干擾 采用管電隔離是一種有效的方法 J Vcc Vdd Px y A B 更安全的驅(qū)動方式 光電隔離 注意 Vcc與Vdd是兩套獨立的電源系統(tǒng) 2020 3 21 作業(yè) 二 單片機時序中的時鐘周期由什么因素確定 指令執(zhí)行的快 慢與什么有關(guān) 單字節(jié)的指令一定就比雙字節(jié)指令快嗎 舉例在執(zhí)行MOVX MOVC 片外 指令時 外部存儲器如何獲得地址 數(shù)據(jù)信息 MOVXA R0與MOVXA DPTR在端口使用上有何區(qū)別 2020 3 21 端口如果做輸入口時 要注意什么 P0口做輸出時 要注意什么 MCS 51的端口可以采用 拉電流 的方式輸出較大的電流嗎 寫出P0 P1 P2和P3口在SFR中的地址 返回本節(jié) 返回本章目錄 2020 3 21 3 2MCS 51單片機的定時 計數(shù)器 本節(jié)內(nèi)容 了解定時 計數(shù)器的作用 定時和計數(shù)兩種方式的區(qū)別 定時 計數(shù)器的結(jié)構(gòu)與工作原理 利用相關(guān)寄存器對定時計數(shù)器初始化及編程 2020 3 21 定時 計數(shù)是計算機經(jīng)常要處理的操作 如 利用單片機產(chǎn)生某一頻率的方波 定時 利用單片機作工業(yè)生產(chǎn)線上的產(chǎn)品數(shù)量統(tǒng)計 電機轉(zhuǎn)速的測量 計數(shù) 等 2020 3 21 以定時為例 通常有兩種方法實現(xiàn) 軟件延時法 利用指令 延時子程序 運行所消耗的時間實現(xiàn)所需的定時時間 特點 由CPU控制 占用CPU的資源 硬件法 利用一個硬件電路實現(xiàn)所需的時間定時 一旦時間到邊產(chǎn)生一個標(biāo)志信號通知CPU 特點 由CPU控制定時的啟動 但定時過程由專用模塊實現(xiàn) CPU不參與其過程 所以提高了CPU的工作效率 2020 3 21 定時 計數(shù)器就是專用于產(chǎn)生延時和計數(shù)的外圍模塊 是單片機內(nèi)部重要的鑄成部分 定時計數(shù)器還可以構(gòu)成 輸入捕捉 輸出比較 和 脈寬調(diào)制 簡稱CCP模塊 這是新一代單片機內(nèi)部結(jié)構(gòu)的一個標(biāo)志 使單片機的應(yīng)用更加靈活和方便 不難看出 作為一個嵌入式控制器 其內(nèi)部所包含的定時 計數(shù)器的數(shù)量已經(jīng)成為衡量其功能的重要指標(biāo) 2020 3 21 本章目錄 3 2 0定時 計數(shù)器工作方式與原理 3 2 1定時 計數(shù)器的四種工作模式3 2 2MCS 51定時 計數(shù)器的控制和狀態(tài)寄存器3 2 3定時計數(shù)器的初值TC計算3 2 4 定時 計數(shù)器應(yīng)用 繼續(xù) 2020 3 21 定時 計數(shù)器工作方式與原理 產(chǎn)生延時的硬件邏輯電路 它可以完成兩種不同的方式工作 定時 計數(shù) 使用硬件電路延時 可以提高CPU的工作效率 2020 3 21 定時 產(chǎn)生一個標(biāo)準(zhǔn)的時間間隔 如20mS 100mS或1000mS等 單片機使用這種方式可以產(chǎn)生一個符合某一要求的脈沖方波 如下圖 20mS 40mS MCS 51Px y 輸出波形 2020 3 21 計數(shù) 對外部的事件 脈沖 進(jìn)行統(tǒng)計 外部事件的發(fā)生是隨機的 單片機不可能預(yù)知外部事件何時發(fā)生 但可以進(jìn)行統(tǒng)計 計數(shù) 當(dāng)達(dá)到所要求的計數(shù)值時 單片機進(jìn)行相應(yīng)的操作 MCS 51T0 T1 端口 外部脈沖 外部設(shè)備 2020 3 21 單片機檢測產(chǎn)品數(shù)量示意圖 P0口MCS 51T0 紅外線掃描發(fā)射器 紅外線接收電路 產(chǎn)品包裝控制器 產(chǎn)品生產(chǎn)線 產(chǎn)品 傳送帶 2020 3 21 定時 計數(shù)器的基本模型 CY 計數(shù)脈沖CP 溢出標(biāo)志 8位的加一計數(shù)器 定時 計數(shù)器的核心部件是一個計數(shù)器 兩種工作方式的區(qū)別在于計數(shù)脈沖來源 2020 3 21 3 MCS 51單片機定時 計數(shù)器的工作原理 N位增量計數(shù)器 TF N位初值寄存器 系統(tǒng)內(nèi)部時鐘fosc 啟動控制TR 外部脈沖T0或T1引腳 定時 計數(shù)控制C T 計數(shù)器溢出中斷信號 計數(shù)脈沖CP C T 0 C T 1 定時 計數(shù)時間到標(biāo)志 1 何時控制啟動計數(shù)器 問題 2 如何控制是定時還是計數(shù) 3 如何控制定時 計數(shù)的長短 2020 3 21 TR 定時計數(shù)器的啟動控制開關(guān) TR 1 計數(shù)器開始計數(shù) TR 0 計數(shù)器停止計數(shù) C T 計數(shù)器輸入脈沖選擇開關(guān) 決定著計數(shù)器的 定時 或 計數(shù) 的兩種工作方式 C T 0 計數(shù)器接收內(nèi)部時鐘信號fosc 定時方式 C T 1 計數(shù)器接收引腳上的外部信號 計數(shù)方式 TF 計數(shù)器溢出標(biāo)志 TF 1 定時或計數(shù)時間到 可以采用查詢或中斷方式處理 初值寄存器 預(yù)裝用來決定計數(shù)器產(chǎn)生溢出周期的參數(shù) 此參數(shù)決定著定時或計數(shù)的周期 通常要預(yù)算并送入初值寄存器中 2020 3 21 3 2 1定時 計數(shù)器的四種工作模式 在MCS 51單片機內(nèi)部 具有兩個完全相同的定時計數(shù)器T0 T1 它們都具有兩種工作方式 定時和計數(shù) 無論是定時或計數(shù)方式 又都有具備四種工作模式 以根據(jù)實際要求達(dá)到最佳的工作狀態(tài) 定時計數(shù)器的工作方式 工作模式是由SFR中的TMOD內(nèi)容來決定的 因此對其方式 模式的設(shè)定是靠對TMOD的初始化編程實現(xiàn)的 2020 3 21 1 模式0 13位計數(shù)器模式 TH1 TL1 震蕩器 1 12 8位 低5位 TF1 中斷 啟動控制 T1引腳 TR1 GATE INT1 高三位棄用 C T 0 C T 1 13位加1計數(shù)器 在某一個初值的基礎(chǔ)上加1計數(shù) 當(dāng)計數(shù)器計滿為全 1 再來一個計數(shù)脈沖時 就產(chǎn)生一個 溢出中斷信號 TF1 1 由于低8位計數(shù)器中的高三位沒有參與工作 故填裝初值時應(yīng) 避開 此三位 2020 3 21 類同于模式0 由于兩個計數(shù)器為完整的8位 故將計算好的16位初值可直接填裝到TH TL中 TL1 TH1 震蕩器 1 12 8位 8位 TF1 中斷 啟動控制 T1引腳 TR1 GATE INT1 C T 0 C T 1 2 模式1 既16位計數(shù)器模式 16位加1計數(shù)器 返回上一次 2020 3 21 模式0 1的特點 13位和16位的計數(shù)器模式 啟動后 從某一個初值的基礎(chǔ)上進(jìn)行 加一 計數(shù) 當(dāng)計到 全 時再來一個計數(shù)脈沖 計數(shù)器就會產(chǎn)生一個 溢出 即TF 1 此時計數(shù)器本身為 全零 如果需要重復(fù)性的完成某一值的定時或計數(shù) 需要在每一次計數(shù)前不斷的重新預(yù)裝初值 稱之為 軟件重裝初值 2020 3 21 TL做計數(shù)器 TH做初值寄存器 工作前TL1 TH1分別預(yù)置相同的初值 TL1計數(shù)時 產(chǎn)生溢出的同時 將TH1中的初值自動重裝TL1 TL1繼續(xù)計數(shù) TL1 8位 TH1 8位 震蕩器 1 12 TF1 中斷 控制 T1引腳 TR1 GATE INT1 C T 1 C T 0 3 模式2 8位自動重裝初值模式 8位加1計數(shù)器 8位初值寄存器 2020 3 21 模式2的特點及應(yīng)用 8位計數(shù)器的模式 定時或計數(shù)的范圍遠(yuǎn)遠(yuǎn)小于模式0和模式1 具備初值 硬件自動重裝 功能 非常適合進(jìn)行重復(fù)性定時的場合 如產(chǎn)生連續(xù)方波信號等 編成中省去了軟件重裝初值的麻煩 在MCS 51單片機中 T1設(shè)定成此模式用于做串行口波特率發(fā)生器 2020 3 21 將T0和T1重新進(jìn)行 拆分 組合 將T0變?yōu)橛蒚H0 TL0組成的兩個獨立的8位定時 計數(shù)器 TL0 震蕩器 1 12 TF0 中斷 控制 T0引腳 TR0 GATE INT0 C T 0 C T 1 TH0 TF1 中斷 控制 TR1 Fosc 12 4 模式3組合擴展模式 僅適用于T0 2020 3 21 注意 TH0 TL0及T1的各自特點 1 TH0計數(shù)脈沖來自內(nèi)部fosc 所以它只能處于 定時 方式 2 TH0分別借用了定時器T1的TR1和TF1為自己服務(wù) 使TH0能象TL0那樣用TR1啟動定時 并用TF1來作為TH0的溢出中斷的標(biāo)志 3 此時 由于T1缺少了啟動控制信號TR1和溢出標(biāo)志TR1 那么在模式3時 T1是如何啟動和工作 4 模式3就是將單片機原有的T0 T1兩個計數(shù)器變成三個獨立的計數(shù)器 其中T1要事先設(shè)定為模式2 串行口的波特率發(fā)生器 并啟動起來 返回結(jié)構(gòu)圖 2020 3 21 在模式3時T0 T1的電路結(jié)構(gòu)圖 TL0八位定時 計數(shù)器 TH0八位定時器 TL1 TF0 TF1 將T0分解為兩個計數(shù)器TL0 8位定時 計數(shù)器 TH0 8位定時器 借用TR1和TF1 T1 模式2 做波特率發(fā)生器 此種方式不用反復(fù)啟動和查詢標(biāo)志 返回結(jié)構(gòu)圖 TH1 2020 3 21 GATE信號的作用 GATE 0時 當(dāng)TR1 1時 啟動定時 計數(shù)工作 一種定時計數(shù)器通常的工作方式 GATE 1且TR 1時 INT1 1時 開始工作 INT 0時 計數(shù)器停止計數(shù) 此方式用于測量INT1腳上輸入的正脈沖的脈寬 TR0 1 GATE 1 INT0 0 1 1 0 0 啟動計數(shù)器 2020 3 21 定時 計數(shù)器4種模式比較 計數(shù)方式 2020 3 21 定時 計數(shù)器4種模式比較 定時方式 T M TC t其中 T 定時時間 M 計數(shù)器的模 TC 計數(shù)初值 t 計數(shù)器計數(shù)脈沖的周期 t fosc 12 2020 3 21 3 2 2定時 計數(shù)器的控制和狀態(tài)寄存器 GATE選通門 GATE 0時 只要TR 1 計數(shù)器就開始工作 GATE 1時 只有INT TR 1 時 計數(shù)器工作 用來測量INT腳高電平脈沖的寬度 C T計數(shù) 定時方式選擇位 C T 1時 計數(shù)方式 C T 0時 定時方式 M1 M0模式選擇 確定四種工作模式 定時 計數(shù)器1 定時 計數(shù)器0 1 模式控制寄存器TMOD SFR的地址 89H 結(jié)構(gòu)圖 2020 3 21 TF0定時器T0的溢出標(biāo)志 計數(shù)器溢出時硬件自動置位 即TR 1 進(jìn)入中斷后再由硬件自動清除 TF0 0 TR0計數(shù)器T0的控制位 由軟件設(shè)定 TR0 1計數(shù)器開始工作 TR0 0計數(shù)器停止計數(shù) TF1 TR1同上 2 控制寄存器TCON SFR地址 88H 返回前一次 2020 3 21 IE1 IE0外部中斷INT1 INT0的請求標(biāo)志 當(dāng)單片機檢測到INT引腳上有下降沿時 IE 1申請中斷 進(jìn)入中斷服務(wù)程序時 硬件自動清除IE標(biāo)志 IT1 IT0外中斷觸發(fā)類型控制 IT 1時 外中斷信號的下降沿觸發(fā)IE標(biāo)志 IT 0時 外中斷信號的低電平觸發(fā)IE標(biāo)志 控制寄存器TCON SFR地址 88H 返回前一次 2020 3 21 3 2 3定時計數(shù)器初值TC的計算 計數(shù)器TH TL中的初值TC決定著計數(shù)器溢出的時間 根據(jù)具體的實際應(yīng)用的需要 計算出對應(yīng)的TC值是對定時 計數(shù)器初始化的重要步驟 初值TC的大小與系統(tǒng)的工作頻率fosc和定時計數(shù)器的工作模式有關(guān) 2020 3 21 一 計數(shù)器工作方式下的TC計算 TC M C其中 M 計數(shù)器的模模式0 M 213 8192模式1 M 216 65536模式3 M 28 256C 要求的計數(shù)值 2020 3 21 二 定時工作方式下的TC計算 TC M T T計數(shù)其中 M 計數(shù)器的模模式0 M 213 8192模式1 M 216 65536模式3 M 28 256T計數(shù) 計數(shù)器計數(shù)脈沖周期 1 fosc 12T 要求的定時時間值 2020 3 21 TC計算舉例 一 計數(shù)方式 要求每計100個脈沖定時器產(chǎn)生一次溢出 解1 選擇模式2 TC 256 100 156 9CHMOVTH0 9CHMOVTL0 9CH 解2 選擇模式1 TC 65536 100 65436 FF9CHMOVTH0 0FFHMOVTL0 9CH 思考題 若選用模式0 TC 如何編寫指令 2020 3 21 TC計算舉例 二 定時方式 要求T0產(chǎn)生50mS的定式 解1 選擇模式1 TC M T T計數(shù)TC 65536 50mS 1000 1 S 65536 50000 15536 3CB0HMOVTH0 3CHMOVTL0 0B0H 思考題 為什么選擇模式1 2020 3 21 3 2 4 定時 計數(shù)器應(yīng)用 學(xué)習(xí)定時 計數(shù)器的編程方法 首先 根據(jù)實際應(yīng)用 確定 工作方式的選擇 定時或計數(shù) 工作模式的確定 取決于定時或計數(shù)的范圍 計算初值并裝載TH TL寄存器中 啟動定時器開始工作 上述操作主要體現(xiàn)在對TMOD TCON的初始化 2020 3 21 一 定時器方式1應(yīng)用舉例 利用單片機的P1 0產(chǎn)生一個頻率為50HZ的對稱方波 解 使用T0 確定工作方式 工作模式和定時初值 1 選擇定時方式 C T 0 2 選擇模式1 M2 M1 01 3 計算初值TC TC 65536 5ms 1us 60536 EC78H即TH 0ECH TL 78H 4 試編程 10ms 5ms 5ms 2020 3 21 用單片機設(shè)計一個方波發(fā)生器示意圖 MCS 51P1 0 TMOD00000001 TCON 2020 3 21 ORG1000HSTRAT MOVTMOD 01H 設(shè)定時器為定時 模式1SETBTR0 啟動定時器T0LOOP MOVTH0 0ECH 設(shè)定時初值MOVTL0 78HJNBTF0 定時時間到 CLRTF0 清T0標(biāo)志CPLP1 0 P1 0取反SJMPLOOP 循環(huán)繼續(xù)END 程序清單 查詢法 返回本節(jié)目錄 2020 3 21 程序流程圖 查尋法 設(shè)定T0的模式 啟動T0 設(shè)定定時初值 TF0 1 清標(biāo)志 CPLP1 0 N Y 2020 3 21 思考題 若采用模式0如何編程 模式0時 13位模式 TC 8192 5ms 1us 3193 0C78H 0000110001111000B 0110001111000B 高8位TH0低5位TL0 MOVTH0 60HMOVTL0 18H 注意 低8位中的高三位用0來填充 即00011000 2020 3 21 二 定時器方式1應(yīng)用舉例 利用P1 0口線輸出周期為2S的方波 解 如何產(chǎn)生1S 1000ms 的定時 1000ms的定時由50ms累計20次 1 選擇T0且設(shè)定為定時方式 模式1 2 TC 65535 50ms 1us 3CB0H3 TMOD控制字為 00000001B 01H4 T0采用中斷方式 既每50ms產(chǎn)生一次中斷 中斷20次便是1S 軟件重裝初值 R0 0 N Y CPLP1 0 2S 1S 1S P1 0 20 R0 R0 1 R0 RETI BRT0 中斷服務(wù)程序 2020 3 21 ORG0000HLJMPSTARTORG1000HSTART MOVTMOD 01H 設(shè)T0為定時方式 模式1MOVTH0 3CH 50mS定時初值MOVTL0 0B0HSETBTR0 啟動定時器T0MOVR0 14H 計數(shù)器R0賦初值20LOOP JNBTF0 等待50mS定時BRT0 DJNZR0 NEXT 定時到計數(shù)器R0減一 R0 0Z轉(zhuǎn)NEXTCPLP1 0 P1 0輸出取反MOVR0 14H 計數(shù)器R0重賦初值20NEXT MOVTH0 3CH 軟件重裝初值MOVTL0 0B0HSJMPLOOP 返回LOOP繼續(xù)END TMOD寄存器 查詢方式編程 2020 3 21 三 定時器門控位GATE的應(yīng)用 如果GATE 1 TR 1時電路是否計數(shù)取決于 INT0 INTE0 1時開始計數(shù) INTE0 0 電路停止計數(shù) 利用這一特點 可以實現(xiàn)測量外部脈沖的寬度 計數(shù)器 震蕩器 1 12 TF0 中斷 計數(shù)控制 T0引腳 TR0 GATE INT0 C T 0 C T 1 MCS 51INT0 2020 3 21 解題步驟 將外部脈沖接到P3 2 INT0 上 使用T0且C T 0 且令GATE 1 計數(shù)器TH0 TL0原始初值為00H 且設(shè)為模式1 16位 在 INT0 0時啟動T0計數(shù)器 TR0 1 當(dāng) INT0 1時 定時器T0自動開始計數(shù) 當(dāng) INT0 0時計數(shù)自動停止計數(shù) 此時TH0 TL0中的計數(shù)值就是與脈沖寬度相對應(yīng)得數(shù)據(jù) MCS 51INT0 SETBTR0T0開始計數(shù)計數(shù)停止 TR0 1 INT0 1 INT0 0 準(zhǔn)備階段計數(shù)階段完成計數(shù) 外部脈沖 2020 3 21 MOVTMOD 09H 設(shè)定T0為模式1且GATE0 1MOVTH0 00HMOVTL0 00H 計數(shù)器原始清零MOVR0 20H 設(shè)置數(shù)據(jù)區(qū)指針并原始賦初值JBINT0 等待P3 2引腳上的脈沖變低 尋找準(zhǔn)備階段SETBTR0 INT0變低后 TR0置一 但不計數(shù) JNBINT0 若INT0低電平則等待 準(zhǔn)備計數(shù)階段JBINT0 若INT0高電平則等待 硬件開始計數(shù) CLRTR0 INT0變低后 關(guān)閉T0 停止計數(shù) MOV R0 TH0INCR0MOV R0 TL0 保存計數(shù)器T0的計數(shù)值 MCS 51INT0 SETBTR0T0開始計數(shù)計數(shù)停止 TR0 1 INT0 1 INT0 0 準(zhǔn)備階段計數(shù)階段完成計數(shù) 外部脈沖 2020 3 21 程序流程圖 設(shè)定T1模式模式1 GATE 1 TH1 TL1原始清零 數(shù)據(jù)指針R0賦初值 INT1 0 SETBTR1 INT1 0 INT1 1 CLRTR1 取TH TL值 N N N 等待低電平 Y 準(zhǔn)備計數(shù) 等待高電平 高電平是自動計數(shù)并等待低 Y Y 低電平時完成計數(shù) 返回本節(jié)目錄 設(shè)fosc 12MH 則脈寬T THL TL0 1 2020 3 21 3 3MCS 51單片機的串行接口 本節(jié)內(nèi)容 串行通訊的基本概念 MCS 51單片機串行接口的工作模式 串行接口應(yīng)用及編程 2020 3 21 本節(jié)目錄 3 3 0單片機系統(tǒng)中的串行接口及特點 3 3 1數(shù)據(jù)緩沖寄存器SBUF 3 3 2串行口控制寄存器SCON 3 3 3串行口的模式0 3 3 4串行口模式1 3 3 5串行口模式2 3 3 3 6波特率及定時器T1的設(shè)定 返回上一頁 繼續(xù) 2020 3 21 單片機系統(tǒng)中的串行接口及特點 串行接口有兩種工作方式 異步通信方式 兩臺微處理器之間或遠(yuǎn)距離低成本數(shù)據(jù)傳輸?shù)挠行Х椒?同步方式 在嵌入式系統(tǒng)硬件設(shè)計中 采用同步串行接口實現(xiàn)系統(tǒng)內(nèi)部單片機與外圍模塊之間新的接口形式而越來越多的被采用 2020 3 21 當(dāng)前嵌入式系統(tǒng)流行的串行接口 異步串行UART 同步串行USRT總線接口 SPI Microwire 總線接口 MOTOROAL NS I2C總線接口 PHILIPS 1 Wire總線接口 Dallas CAN總線接口 Bosch USB總線接口 Compaq等 從機 從機 從機 從機 主機 2020 3 21 串行通信的基本概念 一 串行通信的兩種基本方式 二 串行通訊的工作制式 三 串行通信的傳輸速率 四 串行通信的電平標(biāo)準(zhǔn) 五 MCS 51單片機的串行接口 2020 3 21 一 串行通信的兩種基本方式 異步通信傳送方式 在物理結(jié)構(gòu)上 異步通信的雙方只有數(shù)據(jù)線而沒有時鐘傳輸線 A B雙方都以自己的時鐘源控制著發(fā)送的速率或?qū)邮者M(jìn)行采樣 由于通訊雙方系統(tǒng)時鐘往往不同 所以在異步通信中 要想保證通信的成功必須保證兩點 通信雙方必須保持相同的傳送 接收速率 波特率 雙方必須遵守相同的數(shù)據(jù)格式 字符幀 2020 3 21 將要傳送的數(shù)據(jù)由一個0點平的 起始位 引導(dǎo) 中間為8位 或9位 的數(shù)據(jù)位 后面有一個高電平的 停止位 數(shù)據(jù)幀格式 異步通信的字符幀格式由于添加了 起始位 和 停止位 占用了傳輸時間 降低了傳輸效率 因此僅適用于遠(yuǎn)距離的數(shù)據(jù)通信 起始位 停止位 0 1 MCS 51單片機的一個字符幀的格式 2020 3 21 同步傳送模式 在物理結(jié)構(gòu)上 通信雙方除了通信的數(shù)據(jù)線外還增加了一個通信用的 時鐘傳輸線clock 由主控方提供時鐘信號clock 由于有了時鐘信號來 同步 發(fā)送或接收操作 所以被傳送的數(shù)據(jù)不再使用 起始位 和 停止位 因而提高了傳送速度 因此同步通信常被用于系統(tǒng)內(nèi)部各芯片之間的接口設(shè)計 由于同步通信多了一條 時鐘線 因此不太適合遠(yuǎn)距離的通信 2020 3 21 同步發(fā)送 接收示意圖 主控方 被控方 data clock 主控方 被控方 data clock 主控方發(fā)送數(shù)據(jù)主控方接收數(shù)據(jù) 2020 3 21 二 串行通訊的工作制式 按照串行通訊中數(shù)據(jù)傳送的方向與工作模式 可將其劃分為三種工作制式 單工模式 simplex 半雙工模式 halfduplex 全雙工模式 fullduplex 2020 3 21 串行通訊的工作制式 一 單工模式 simplex 通訊的A方只能送 而B方只能接收 廣播式 例如 除了用于遠(yuǎn)程通信外 系統(tǒng)內(nèi)部單片機以串行方式接收外圍芯片 ADC 的數(shù)據(jù) 或者控制外圍芯片 DAC LCD等 工作 發(fā)送方A 接收方B TXD RXD 2020 3 21 串行通訊的工作制式 二 半雙工模式 halfduplex 在某一時刻A方只能發(fā)送 B方只能接收 而在另一時刻B方只能發(fā)送 A方只能接收 對講機模式 例如 除了用于遠(yuǎn)程通信外 系統(tǒng)內(nèi)部單片機與串行接口的RAM E2PROM之間的數(shù)據(jù)交換 發(fā)送方A 接收方B TXD RXD TXD RXD 2020 3 21 串行通訊的工作制式 三 全雙工模式 fullduplex A B雙方可以同時發(fā)送和接收數(shù)據(jù) 手機模式 例如 兩臺單片機系統(tǒng)之間的數(shù)據(jù)串行交換 發(fā)送方A 接收方B TXD RXD TXD RXD 2020 3 21 三 串行通信的傳輸速率 用于表征串行通信速率的參數(shù)稱為 波特率 波特率的單位為 位 秒 bit s 波特率取值范圍一般為 0 9600bit s 影響波特率的主要因素取決于傳輸線的分布電容 通信電平標(biāo)準(zhǔn)和傳送距離 2020 3 21 四 串行通信的電平標(biāo)準(zhǔn) 為了增加串行通信的距離 可以采用RS 232 RS 485的通信標(biāo)準(zhǔn) 其中 TTL電平 0 5V 10英尺以內(nèi) RS 232標(biāo)準(zhǔn) 12V 12V 50英尺 RS 485標(biāo)準(zhǔn) 差分輸入輸出 1000英尺以上 2020 3 21 五 MCS 51單片機的串行接口 具有一個 全雙工 的通訊能力串行接口 其中 P3 0端口作RXD 異步接收端 P3 1端口作TXD 異步發(fā)送端 包含 同步通信 和 異步通信 兩種工作方式的四種工作模式 在 異步方式 中由T1做波特率發(fā)生器 與串行口相關(guān)的SFR有 SBUF 接收SBUF和發(fā)送SBUF SCON串口控制寄存器 設(shè)定四種模式 2020 3 21 MCS 51單片機的異步串行通訊應(yīng)用示意圖 MCS 51TXD 甲 RXD RXDMCS 51TXD 乙 TXDRXD RXDTXD RS 232或485 RS 232或485 TXDRXD RS 232 PC機COM1 COM2 單片機甲 乙之間近距離的直接通訊 單片機甲乙兩地之間遠(yuǎn)距離通訊 單片機與PC機之間的數(shù)據(jù)通訊 返回前一次 2020 3 21 3 3 1數(shù)據(jù)緩沖寄存器SBUF 在MCS 51的串行口電路中 SBUF是用來存放發(fā)送和接收數(shù)據(jù)的兩個獨立的緩沖寄存器 在SFR的地址都是99H CPU執(zhí)行寫SBUF指令便開始引發(fā)串口的發(fā)送 MOVSBUF A當(dāng)串口接收緩沖器接收到一幀數(shù)據(jù)時 可以執(zhí)行下面指令進(jìn)行讀取 MOVA SBUF由于發(fā)送SBUF與接收SBUF是兩個獨立的緩沖器 所以51串行口是一個可以同時發(fā)送與接收的 全雙工 接口 2020 3 21 接收SBUF移位寄存器 發(fā)送SBUF移位寄存器 內(nèi)部總線 CPU MCS 51 RXDP3 0 TXDP3 1 SBUF實際上是一個能夠獨立完成數(shù)據(jù)接收和數(shù)據(jù)發(fā)送操作的復(fù)雜的硬件電路 CPU只要將數(shù)據(jù)送到發(fā)送SBUF MOVSBUF A 后 SBUF便一位一位的發(fā)送數(shù)據(jù) 發(fā)送完成后標(biāo)志TI 1 當(dāng)外部串行數(shù)據(jù)經(jīng)RXD送入SBUF時 電路便自動啟動接收 直至完成一幀數(shù)據(jù)后標(biāo)志RI 1 2020 3 21 3 3 2串行口控制寄存器SCON 用于設(shè)定串行接口工作模式 表征串口的工作狀態(tài)的特殊功能寄存器 在SFR中的地址為98H 這是一個可以按位尋址的SFR 在使用中可直接使用位操作指令 給編程帶來方便 2020 3 21 SCON寄存器示意圖 返回前一次 D7D6D5D4D3D2D1D0 2020 3 21 SCON寄存器各位定義 D7 D6位 SM0SM1模式選擇位 SCON寄存器 2020 3 21 D1 D0 TI RI發(fā)送 接收完成標(biāo)志TI 完成一幀數(shù)據(jù)發(fā)送標(biāo)志 原始應(yīng)軟件清零 發(fā)送完成TI 1同時申請中斷 如果中斷開放 則引發(fā)中斷 RI 完成一幀數(shù)據(jù)接收標(biāo)志 原始應(yīng)軟件清零 接收完成RI 1并申請中斷 如果中斷開放 則引發(fā)中斷 SCON寄存器 2020 3 21 D3 D2 TB8 RB8發(fā)送 接收的第9位數(shù)據(jù)TB8 在9位數(shù)據(jù)傳送的模式2 3時 將要發(fā)送的第9位數(shù)據(jù) 在執(zhí)行MOVSBUF A指令之前要事先將TB8設(shè)定好 RB8 在9位數(shù)據(jù)傳送的模式2 3時 接收到的第9位數(shù)據(jù) SCON寄存器 2020 3 21 D4 REN允許接收控制位 REN 允許接收位 REN 1時允許接收 由軟件置位或清零 SCON寄存器 D7D6D5D4D3D2D1D0 2020 3 21 D5 SM2多機通信使能位 用于接收方串口控制 模式0 1時 SM2不用 模式2 3時 有兩種設(shè)定方法 若SM2 0 無論RB8如何 RI都能被激活 但RI不能引發(fā)中斷 CPU可通過查詢RI的方式接收數(shù)據(jù) 若SM2 1 若接收到的第9位 RB8 0時 RI不會被激活 若RB8 1時 RI不僅能被激活 并可引發(fā)中斷 這種特性得出一個特殊的結(jié)果 如果接收方將其SM2 1 則能否接收到對方發(fā)送的數(shù)據(jù)不取決于自己 而是由發(fā)送方的TB8來決定的 SM2 1的設(shè)定用于多機通信的場合 SCON寄存器 2020 3 21 使用RI TI標(biāo)志完成數(shù)據(jù)的發(fā)送與接收 SBUF是獨立于CPU 不論是數(shù)據(jù)的發(fā)送還是接收都由SBUF獨立完成 SBUF的傳送速度遠(yuǎn)遠(yuǎn)低于CPU執(zhí)行指令的速度 每次發(fā)送后CPU必須等待SBUF 協(xié)調(diào)CPU與SBUF的速度只能靠標(biāo)志信號 即 發(fā)送操作后 查詢TI 1 來決定是否可以發(fā)送下一個數(shù)據(jù) 接收操作時 查詢RI 1 判斷是否接收到數(shù)據(jù) 2020 3 21 利用接收標(biāo)志RI控制數(shù)據(jù)的接收操作 RI SCON 0 接收完成標(biāo)志 當(dāng)SUBF從RXD引腳接收完一個完整的數(shù)據(jù)幀時RI 1 CPU可以使用兩種方式來處理接收的數(shù)據(jù) CPU采用查詢RI來控制數(shù)據(jù)的讀取 JNBRI 如果RI 1則等待MOVA SBUF RI 1時 取SBUF中數(shù)據(jù)送A 如果中斷是開放的 則RI 1時會自動引發(fā)中斷 用戶可以通過中斷服務(wù)程序?qū)BUF中的數(shù)據(jù)取出送累加器A MOVA SBUF 中斷方式接收數(shù)據(jù) 2020 3 21 TI SCON 1 發(fā)送完成標(biāo)志 當(dāng)CPU執(zhí)行 MOVSBUF A指令后 便引發(fā)一次串行通訊的過程 SBUF開始通過TXD向外按位發(fā)送數(shù)據(jù) 當(dāng)完成一幀數(shù)據(jù)的發(fā)送后 TI 1 使用查詢的方式對TI進(jìn)行檢測 JNBTI 如果TI 1則等待MOVSBUF A TI 1時發(fā)送下一個數(shù)據(jù)如果系統(tǒng)中斷是開放的 則TI 1會自動引發(fā)中斷 用戶可以通過中斷服務(wù)程序向SBUF輸送下一個數(shù)據(jù) MOVSBUF A 在中斷程序中發(fā)送下一個數(shù)據(jù) 2020 3 21 使用查詢RI TI標(biāo)志的方式進(jìn)行發(fā)送與接收N個數(shù)據(jù) CLRSCON TI 數(shù)據(jù)送累加器A movsbuf a TI 1 N個數(shù)據(jù)發(fā)送完 YES NO YES NO 發(fā)送數(shù)據(jù)的程序框圖 SETBSCON REN mova sbuf RI 1 N個數(shù)據(jù)接收完 YES NO YES NO CLRSCON RI A送數(shù)據(jù)區(qū) 返回本節(jié)目錄一 接收數(shù)據(jù)程序框圖 2020 3 21 3 3 3串行口的模式0 特點 同步移位寄存器模式 B fosc 12 在這種模式下RXD P3 0 做數(shù)據(jù)口 TXD P3 1 做移位脈沖輸出端 在移位過程中 先移數(shù)據(jù)的低位D0 注意 移位脈沖的頻率就是模式0的波特率 主要功能 使用串行口擴展并行口 可以擴展N 8位的并行口 MCS 51RXDTXD Data外部移位寄存器cp 移位脈沖 串行數(shù)據(jù) 并行的數(shù)據(jù) 8位 2020 3 21 利用串行模式0構(gòu)成的2位LED數(shù)碼管驅(qū)動電路 MCS 51P3 0P3 1P1 0 QAQHA B74LS164 CLRCLK QAQHA B74LS164 CLRCLK RXD TXD 共陽極LED數(shù)碼管 gfedcba 共陽極LED數(shù)碼管 gfedcba 5V 2020 3 21 模式0電路框圖 51內(nèi)部總線 SBUF 零檢測器 移位時鐘 STARTSHIFT發(fā)送控制器TXCLOCKTISEND DSQCP STARTRIRECEIVERX接收控制器SHIFTCLOCK11111110 輸入移位寄存器 SBUF 51內(nèi)部總線 讀SBUF 寫SBUF S6 串行口中斷 P3 0RXD P3 1TXD 裝載SBUF REN RI 返回前一次 P3 0RXD MOVSBUF A 1 S6P2 2020 3 21 串行口模式0的時序信號 發(fā)送 寫SBUF SEND D1 D0 D2 D3 D4 D5 D6 D7 RXD端數(shù)據(jù) SHIFT TXD端同步脈沖 TI中斷標(biāo)志 movsbuf a指令送發(fā)送到結(jié)束的10個機器周期 返回電路圖 2020 3 21 模式0的工作原理 發(fā)送 單片機執(zhí)行movsbuf a指令的S6P2時 出現(xiàn) 寫sbuf 信號 1 打開總線三態(tài)門使累加器中的數(shù)據(jù)送到SBUF中 2 使D型觸發(fā)器置一 觸發(fā)器的輸出構(gòu)成了SBUF的第9位 3 啟動 發(fā)送控制器 開始發(fā)送 在 寫SBUF信號 有效相隔一個機器周期后 發(fā)送控制器 的SEND 1使RXD TXD端的與門打開 使數(shù)據(jù)和移位脈沖輸出 在TXD端 每一個機器周期中發(fā)出一個同步脈沖 同時在SEND 1期間 每一個S6P2時控制器發(fā)出一個SHIFT移位信號將SBUF中的數(shù)據(jù)右移一次 同時D型觸發(fā)器清零 這樣 每當(dāng)SBUF中的數(shù)據(jù)右移 發(fā)送 一位時 SBUF的左端便移入1個 0 返回電路圖 2020 3 21 當(dāng)SBIUF中的數(shù)據(jù)右移7次后 檢零器的7個輸入端全為 0 向控制器發(fā)出一個信號 通知控制器作最后一次移位 然后控制器的SEND 0停止發(fā)送數(shù)據(jù)和同步信號 TI被置位 返回電路圖 2020 3 21 模式0的工作原理 接收 在滿足REN 1且RI 0的條件下 實際上是一條寫SCON指令 就會引發(fā)一次接收過程 在下一個機器周期的S6P2時刻 接收控制器將11111110寫入移位寄存器 在下一個周期的S1P1使RECEIVE 1從而使TXD端的與門打開 同發(fā)送的過程類似 在后面的每一個機器周期從TXD端發(fā)出同步移位脈沖 在每一個S5P2時刻對RXD線進(jìn)行采樣 在S6P2時刻 控制器對寄存器進(jìn)行移位 每左移一次右端就補進(jìn)一位由RXD端輸入的數(shù)據(jù) 當(dāng)從RXD端輸入7位數(shù)據(jù)時 開始最右端的 0 被移到寄存器的最左端 寄存器向控制器發(fā)信號 通知控制器做最后一次接收 并將完整的8位數(shù)據(jù)裝入SBUF中 最后清RECEIVE SCON中的RI置位 向CPU發(fā)中斷申請 返回電路圖 2020 3 21 模式0的時序信號 接收 寫SCON RI 0 RECEIVE SHIFT RI 對RXD采樣 TXD同步脈沖 RI中斷標(biāo)志 返回電路圖 2020 3 21 3 3 4串行口模式1 特點 10位異步傳輸 1個起始位 8個數(shù)據(jù)位 1個停止位 波特率B可變 由定時器T1的溢出率來確定 發(fā)送操作 在TI 0 執(zhí)行movsbuf a指令后從TXD端開始發(fā)送數(shù)據(jù) 當(dāng)發(fā)送完8位數(shù)據(jù)后自動的添加一個高電平的停止位 并將TI置位 起始位 停止位 0 1 從TXD P3 1 端發(fā)出的一個字符幀的格式 TI TXD 2020 3 21 接收操作 在REN 1且RI 0的條件下進(jìn)行 串行口的接收控制器對RXD線進(jìn)行采樣 其采樣頻率是接收時鐘的16倍 當(dāng)連續(xù)8次采集到RXD線上為低電平時 檢測電路便認(rèn)定RXD線上有了 起始位 在此后 便開始在每次第7 8 9三個脈沖時進(jìn)行RXD采樣 采取 三中取二 的原則來確定接收的數(shù)據(jù) 如圖所示 當(dāng)接收到停止位時 必須滿足 RI 0且SM2 0 才能把接收的數(shù)據(jù)送到SBUF中 停止位送SCON的RB8中 并使RI 1 否則數(shù)據(jù)丟失 上面的條件意味著 要向得到接收的數(shù)據(jù) 在接收前必須事先清零RI 2020 3 21 串行口模式1時數(shù)據(jù)幀格式及接收采樣示意圖 起始位 8位數(shù)據(jù) 停止位 對RXD線的數(shù)據(jù)以16倍速度采樣 當(dāng)連續(xù)8次采集到低電平時 便確認(rèn)起始位到來 在每個第7 8 9個脈沖對RXD采樣并采用 以三取二 來確定采集的數(shù)據(jù) 返回本節(jié)目錄二 7 8 9 RI RXD 2020 3 21 3 3 5串行口模式2 3 特點 模式2 3都是11位傳輸格式1個起始位 9個數(shù)據(jù)位 1個停止位 波特率 模式2 固定為fosc 64或fosc 32 具體由PCON中的SMOD位來確定 模式3 可變 由定時器T1的溢出波特率來確定 起始位 8 1位數(shù)據(jù) 停止位 第9位 0 1 2020 3 21 模式2 3的發(fā)送過程類似于模式1 唯一的區(qū)別在于數(shù)據(jù)幀中數(shù)據(jù)是9位 這樣 在發(fā)送一幀數(shù)據(jù)時 CPU除了要把8位數(shù)據(jù)送SBUF外 movsbuf a 還要事先將第9位數(shù)據(jù)送到SCON TB8中SETBSCON TB8或 CLRSCON TB8例如 SETBSCON TB8或 CLRSCON TB8MOVSBUF AMOVSBUF A 2020 3 21 RI 0是保證下一個數(shù)據(jù)的正常接收的重要條件 每次當(dāng)SBUF收到數(shù)據(jù)時 RI自動置一 當(dāng)取走數(shù)據(jù)時必須通過軟件復(fù)位RI 指令CLRRI 否則外部發(fā)來的數(shù)據(jù)將丟失 模式2 3的接收過程類似于模式1 不同的是 模式1時 SCON中的RB8是接收到的停止位 1 而模式2 3時 RB8是接收到的第9位 2020 3 21 關(guān)于SM2的設(shè)定 對于接收操作 模式1 SM2無用 令其 0即可 此時接收數(shù)據(jù)條件是 RI 0且REN 1 單片機可以利用查詢或中斷方式為串口服務(wù) 模式2 3的接收條件是 除了RI 0 REN 1外 當(dāng)SM2 0時 RI可以被激活 但不能引發(fā)中斷 當(dāng)SM2 1時 只有接收到RB8 1時 RI不僅能激活 還能引發(fā)中斷 可見 當(dāng)SM2 1時 單片機是否能接收到數(shù)據(jù)取決于外部數(shù)據(jù)的第9位RB8 這樣外部可以通過第九位數(shù)據(jù)是 0 還是 1 來控制 決定單片機的接收狀況 2020 3 21 在模式2 3中 如何利用和設(shè)置SM2和RB8來控制接收 當(dāng)數(shù)據(jù)是帶奇偶效驗位的9位數(shù)據(jù)時 效驗位是RB8 必須令SM2 0 這樣才能保證所有數(shù)據(jù)的正確接收 無論RB8如何 在 多機通訊 時 所有的從機都將其SM2 1 這樣作為主機在向從機發(fā)送數(shù)據(jù) 命令時 可以通過所發(fā)數(shù)據(jù)的第9位TB8 對于從機來說是RB8 來決定從機是否可以接收到此數(shù)據(jù) 命令 取決于RB8 即RB8 1時接收有效 RB8 0時接收無效 所以 SM2也稱 多機通訊位 用于多機通訊 奇偶效驗 一種防止串行通訊出錯的方法 返回本節(jié)目錄二 返回上一頁 2020 3 21 串行口模式2 3時數(shù)據(jù)幀格式 發(fā)送時 將SCON中的TB8作為第9位數(shù)據(jù)發(fā)送 接收時 將接收來的第9位送到SCON中的RB8中 起始位 9位數(shù)據(jù) 停止位 返回上一次 2020 3 21 模式2 3的應(yīng)用之一帶奇偶校驗位的數(shù)據(jù)傳送 奇偶校驗 收到的第9位RB8是發(fā)送方送來的奇偶校驗位 在這種情況下必須令SM2 0 否則接收的校驗位RB8 0時 將影響數(shù)據(jù)的接收 因為RB8有時為 1 而有時為 0 當(dāng)接收數(shù)據(jù)后 對PSW P位進(jìn)行判斷 將此結(jié)果與RB8進(jìn)行 異或 結(jié)果是否與約定的相符合 2020 3 21 例 收發(fā)雙方約定為奇校驗 9位數(shù)據(jù)中1的個數(shù)為奇 則發(fā)送方的第9位要根據(jù)前8位數(shù)據(jù)來確定 若發(fā)送的8位數(shù)據(jù)是 00011010 則TB8為0 這樣當(dāng)接收方將SBUF的數(shù)據(jù)送A時 MOVA SBUF A中數(shù)據(jù)是 00011010 這時PSW P 1 且RB8 0 這樣進(jìn)行時P RB8運算 當(dāng) 1時表明通訊正確 反之若SBUF送A 00011011 此時RB8 0 這樣PSW P 0 RB8 0 P RB8 0表明不符合約定條件 接收出錯 注意 使用模式2 3發(fā)送帶 奇偶校驗 位的數(shù)據(jù)時 1 一定要使SM2 0 為什么 2 又因為SM2 0 所以盡管RI能夠激活 但不會引發(fā)中斷 所以只能采用 查詢 的方式接收數(shù)據(jù) 2020 3 21 利用模式2 3進(jìn)行帶奇校驗的串行通訊程序流程圖 數(shù)據(jù)送累加器A PSW P 1 SETSCON TB8 CLRSCON TB8 MOVSBUF A TI 1 CLRSCON TI YES NO NO YES 發(fā)送端程序 原始TI 0 使用 查詢法 編制的發(fā)送 接收程序 返回本節(jié)目錄二 RI 1 MOVA SBUF PSW P RB8 1 出錯處理 CLRSCON RI YES NO 接收端程序 原始RI 0 N Y 數(shù)據(jù)送內(nèi)存 2020 3 21 模式2 3的應(yīng)用之二 多機通訊 如果系統(tǒng)采用多CPU結(jié)構(gòu) 并且有一個做主機 其它為從機時 它們之間可以通過多機通訊的方式進(jìn)行數(shù)據(jù)交換 如 多路數(shù)據(jù)采集系統(tǒng) 我們選一臺單片機作為主機 專門負(fù)責(zé)接收從機傳回的數(shù)據(jù) 并進(jìn)行數(shù)據(jù)的后期處理 保存 打印和顯示等 而從機則完成對傳感器的信號檢測 A D轉(zhuǎn)換 最后將數(shù)據(jù)采用串行通訊的形式上傳給主機 2020 3 21 傳統(tǒng)方式的多路數(shù)據(jù)采集系統(tǒng) 單片機系統(tǒng)或微型計算機系統(tǒng) 傳感器1 傳感器2 傳感器3 傳感器4 傳感器N 接口電路 引線 模擬信號 機房或儀表室 檢測現(xiàn)場 返回前一次 2020 3 21 采用 智能傳感器 組成的多路數(shù)據(jù)采集系統(tǒng) 主機 從機N 從機4 從機3 從機2 從機1 返回前一次 串行數(shù)據(jù)線 2條 RXD TXD TXD RXD 從機做智能傳感器 2020 3 21 主從式多機通訊原理 主機發(fā)送的數(shù)據(jù)可以傳送到各個從機 從機發(fā)送的數(shù)據(jù)只能為主機接收 從機之間不能直接通訊 主機和從機的設(shè)置為模式2或3 其中主機的SM2 0 從機的SM2 1 從機的SM2 1時 接收到的第九位數(shù)據(jù)RB8 1時 RI可以激活 如果RB8 0 則RI不能激活 返回多機圖- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機 內(nèi)部 主要 功能模塊 工作 原理 應(yīng)用
鏈接地址:http://www.hcyjhs8.com/p-7474877.html