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

下載本文檔

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

文檔簡介

第6章AT89C51單片機的定時器 計數(shù)器 1 1 內(nèi)容概要工業(yè)檢測與控制 許多場合都要用到計數(shù)或定時功能 例如 對外部脈沖進行計數(shù) 產(chǎn)生精確的定時時間等 AT89C51片內(nèi)有兩個可編程的定時器 計數(shù)器T1 T0 可滿足需要 本章介紹定時器 計數(shù)器的結(jié)構(gòu)與功能 2種工作模式和4種工作方式 以及相關(guān)的2個特殊功能寄存器TMOD和TCON各位的定義及其編程 最后介紹定時器 計數(shù)器的編程及應(yīng)用實例 2 定時 實現(xiàn)方式 1 軟件定時 2 不可編程硬件定時 3 可編程定時 3 定時 計數(shù)器的定時和計數(shù)功能 在TMOD中 各有一個控制位 C T 分別用于控制定時 計數(shù)器T0和T1是工作在定時器方式還是計數(shù)器方式 1 定時功能 計數(shù)輸入信號是內(nèi)部時鐘脈沖 每個機器周期使寄存器的值加1 所以 計數(shù)頻率是振蕩頻率的1 12 2 計數(shù)功能 計數(shù)脈沖來自相應(yīng)的外部輸入引腳 T0為P3 4 T1為P3 5 定時 計數(shù)器的核心部件是二進制加1計數(shù)器 TH0 TL0或TH1 TL1 4 2個16位定時器 計數(shù)器 52系列有3個16位Timer 定時器 對片內(nèi)機器時鐘 周期方波 進行計數(shù)計數(shù)器 對Tx引腳輸入的負脈沖進行計數(shù) 與Timer工作有關(guān)的特殊功能寄存器 TCON和TMOD 5 6 1定時器 計數(shù)器的結(jié)構(gòu)定時器 計數(shù)器結(jié)構(gòu)如圖6 1所示 定時器 計數(shù)器T0由特殊功能寄存器TH0 TL0構(gòu)成 定時器 計數(shù)器T1由特殊功能寄存器TH1 TL1構(gòu)成 6 圖6 1AT89C51單片機的定時器 計數(shù)器結(jié)構(gòu)框圖 6 具有定時器和計數(shù)器2種工作模式 4種工作方式 方式0 方式1 方式2和方式3 屬于增計數(shù)器 TMOD用于選擇定時器 計數(shù)器T0 T1的工作模式和工作方式 TCON用于控制T0 T1的啟動和停止計數(shù) 同時包含了T0 T1的狀態(tài) T0 T1不論是工作在定時器模式還是計數(shù)器模式 都是對脈沖信號進行計數(shù) 只是計數(shù)信號的來源不同 計數(shù)器模式是對加在T0 P3 4 和T1 P3 5 兩個引腳上的外部脈沖進行計數(shù) 見圖6 1 定時器工作模式是對單片機的時鐘振蕩器信號經(jīng)片內(nèi) 7 7 12分頻后的內(nèi)部脈沖信號計數(shù) 由于時鐘頻率是定值 所以可根據(jù)計數(shù)值可計算出定時時間 計數(shù)器的起始計數(shù)都是從計數(shù)器初值開始的 單片機復(fù)位時計數(shù)器的初值為0 也可用指令給計數(shù)器裝入一個新的初值 AT89C51的定時器 計數(shù)器屬于增1計數(shù)器 8 Timer的2個特殊功能寄存器 TCON TMOD TF1TR1TF0TR0IE1IT1IE0IT0 定時器控制寄存器TCON 88H TFx Timer0 1計數(shù)溢出標志位 1計數(shù)溢出 0計數(shù)未滿TFx標志位可用于申請中斷或供CPU查詢 在進入中斷服務(wù)程序時會自動清零 但在查詢方式時必須軟件清零 TRx Timer0 1運行控制位 1啟動計數(shù) 0停止計數(shù) 9 TR0 TR1 Timer0 1運行控制位 TR0 TR1 0時 Timer0 1停止計數(shù)TR0 TR1 1時 Timer0 1啟動計數(shù) 定時器T0 T1中斷申請過程 在已經(jīng)開放T0 T1中斷允許且已被啟動的前提下 T0 T1加滿溢出時TF0 TF1標志位自動置 1 檢測到TCON中TF0 TF1變 1 后 將產(chǎn)生指令 LCALL000BH LCALL001BH執(zhí)行中斷服務(wù)程序 TF0 TF1標志位會自動清 0 以備下次中斷申請 定時 計數(shù)器可按片內(nèi)機器周期定時 也可對由T0 T1引腳輸入一個負脈沖進行加法計數(shù) TF1TR1TF0TR0IE1IT1IE0IT0 TCON 88H 10 GATEC TM1M0GATEC TM1M0 定時器方式寄存器TMOD 89H T1 T0 M1 M0 工作方式定義位 定義4種方式 C T 計數(shù)器 定時器選擇位 1外部事件計數(shù)器 對Tx引腳的負脈沖計數(shù) 0片內(nèi)時鐘定時器 對機器周期脈沖計數(shù)定時 00 13位Timer 用它無益 不要記它 01 16位Timer 經(jīng)常用到10 可自動重裝的8位Timer 經(jīng)常用到11 T0分為2個8位Timer T1此時不工作 因為沒有帶來甚麼好處 幾乎無用 11 GATEC TM1M0GATEC TM1M0 T1 T0 GATE門控位 Timer可由軟件與硬件兩者控制 GATE 0 普通用法Timer的啟 停由軟件對TRx位寫 1 0 控制 定時器方式寄存器TMOD 續(xù) 89H GATE 1 門控用法Timer的啟 停由軟件對TRx位寫 1 0 和在INTx引腳上出現(xiàn)的信號的高 低共同控制 12 計數(shù)脈沖輸入 定時器 計數(shù)器的工作方式 定時器 計數(shù)器共有四種工作方式 1 方式0 13位方式 13位計數(shù)器 定時器 計數(shù)器 13 2 方式1 16位方式 14 3 方式2 8位自動裝入時間常數(shù)方式 15 4 方式3 2個8位方式 僅T0可以工作在方式3 此時T0分成2個獨立的計數(shù)器 TL0和TH0 前者用原來T0的控制信號 TR0 TF0 后者用原來T1的控制信號 TR1 TF1 16 6 3對外部輸入的計數(shù)信號的要求當定時器 計數(shù)器工作在計數(shù)器模式時 計數(shù)脈沖來自外部輸入引腳T0或T1 當輸入信號產(chǎn)生負跳變時 計數(shù)器的值增1 每個機器周期的S5P2期間 都對外部輸入引腳T0或T1進行采樣 如在第一個機器周期中采得的值為1 而在下一個機器周期中采得的值為0 則在緊跟著的再下一個機器周期S3P1 17 期間 計數(shù)器加1 由于確認一次負跳變要花2個機器周期 因此外部輸入的計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1 24 例如 選用6MHz頻率的晶體 允許輸入的脈沖頻率最高為250kHz 如果選用12MHz頻率的晶體 則可輸入最高頻率為500kHz的外部脈沖 對于外部輸入信號的占空比并沒有什么限制 但為了確保某一給定電平在變化之前能被采樣一次 則這一電平至少要保持一個機器周期 18 故對外部輸入信號的要求如圖6 12所示 圖中 Tcy為機器周期 19 圖6 12對外部計數(shù)輸入信號的要求 19 THx TLx賦初值 THx賦高8位 TLx賦低8位 工作方式1的編程要點 TMOD選方式 寫 M1 M0 01b選方式1 若不用門控位 直接用軟件寫TRx控制啟 停 若使用門控位 先置位TRx 然后由INTx端的高 低電平來控制其啟 停 若要允許中斷 還須先置位ETx EA等中斷允許控制位 并編寫中斷服務(wù)程序 若不用中斷 可查詢 計數(shù)溢出標志TFx 的方式工作 但溢出標志TFx須軟件清0 20 THx TLx賦相同初值在TLx計數(shù)達到0FFH再加 1 時 TL0將溢出 進位位直接進入 TFx 去申請中斷 同時打開三態(tài)門 使THx中的值自動重裝 Copy 進TLx 工作方式2的編程 TMOD寄存器選方式 寫 M1 M0 10b選中方式2 其他用法與各種方式1完全相同 21 定時器小結(jié) 2個16位加法計數(shù)器 運行 停止由TRx位控制 當GATE 1時 由TRx位和Tx引腳上的信號共同控制 工作方式由TMOD決定 計數(shù) 定時由C T位決定工作方式0 13位 永遠不用工作方式3 T0拆為雙8位 幾乎無用工作方式1 16位 經(jīng)常用到工作方式2 8位自動重裝 經(jīng)常用到 從初值按機器周期或外部脈沖遞加 溢出位TFx申請中斷 中斷允許由ETx位和EA位控制 22 定時器初始化程序應(yīng)完成如下工作 對TMOD賦值 以確定T0和T1的工作方式 計算初值 并將其寫入TH0 TL0或TH1 TL1 中斷方式時 則對IE賦值 開放中斷 使TR0或TR1置位 啟動定時 計數(shù)器定時或計數(shù) 23 6 4定時器 計數(shù)器的編程和應(yīng)用4種方式 方式0與方式1基本相同 只是計數(shù)位數(shù)不同 方式0初值計算復(fù)雜 一般不用方式0 而用方式1 6 4 1方式1的應(yīng)用 例6 1 假設(shè)系統(tǒng)時鐘頻率采用6MHz 在P1 0引腳上輸出一個周期為2ms的方波 如圖6 13所示 24 圖6 13P1 0引腳上輸出周期為2ms的方波 24 基本思想 方波周期T0確定 T0每隔1ms計數(shù)溢出1次 即T0每隔1ms產(chǎn)生一次中斷 CPU響應(yīng)中斷后 在中斷服務(wù)子程序中對P1 0取反 如圖6 13所示 為此要做如下幾步工作 1 計算計數(shù)初值X機器周期 2 s 2 10 6s設(shè)需要裝入T0的初值為X 則有 216 X 2 10 6 1 10 3 216 X 500 X 65036 X化為十六進制數(shù) 即 65036 FE0CH T0的初值為TH0 FEH TL0 0CH 25 25 2 初始化程序設(shè)計采用定時器中斷方式工作 包括定時器初始化和中斷系統(tǒng)初始化 主要是對寄存器IP IE TCON TMOD的相應(yīng)位進行正確的設(shè)置 并將計數(shù)初值送入定時器中 3 程序設(shè)計中斷服務(wù)子程序除了完成所要求的產(chǎn)生方波的工作之外 還要注意將計數(shù)初值重新裝入定時器 為下一次產(chǎn)生中斷做準備 本例 主程序用一條轉(zhuǎn)至自身的短跳轉(zhuǎn)指令來代替 26 26 參考程序如下 ORG0000H 程序入口RESET AJMPMAIN 轉(zhuǎn)主程序ORG000BH T0中斷入口AJMPIT0P 轉(zhuǎn)T0中斷處理程序IT0PORG0100H 主程序入口MAIN MOVSP 60H 設(shè)堆棧指針MOVTMOD 01H 設(shè)置T0為方式1定時ACALLPT0M0 調(diào)用初始化子程序PT0M0HERE AJMPHERE 原地循環(huán) 等待中斷 27 27 PT0M0 MOVTL0 0CH T0初始化 裝初值的低8位MOVTH0 0FEH 裝初值的高8位SETBET0 允許T0中斷SETBEA 總中斷允許SETBTR0 啟動T0RETIT0P MOVTL0 0CH 中斷子程序 T0重裝初值MOVTH0 0FEHCPLP1 0 P1 0的狀態(tài)取反RETI程序說明 當單片機復(fù)位時 從程序入口0000H跳向主程序MAIN處執(zhí)行 其中調(diào)用了T0初始化子程序PT0M0 28 28 子程序返回后 程序執(zhí)行 AJMPHERE 指令 則循環(huán)等待 當響應(yīng)T0定時中斷時 則跳向T0中斷入口 再從T0中斷入口跳向IT0P標號處執(zhí)行T0中斷服務(wù)子程序 當執(zhí)行完中斷返回的指令 RETI 后 又返回斷點處繼續(xù)執(zhí)行循環(huán)指令 AJMPHERE 在實際的程序中 AJMPHERE 實際上是一段主程序 當下一次定時器T0的1ms定時中斷發(fā)生時 再跳向T0中斷入口 從而重復(fù)執(zhí)行上述過程 如CPU不做其他工作 也可用查詢方式進行控制 程序要簡單得多 29 29 查詢方式參考程序 MOVTMOD 01H 設(shè)置T0為方式1LOOP MOVTH0 0FEH T0置初值MOVTL0 0CHSETBTR0 接通T0LOOP1 JNBTF0 LOOP1 查TF0 TF0 0 T0未溢出 TF0 1 T0溢出 CLRTR0 T0溢出 關(guān)斷T0CPLP1 0 P1 0的狀態(tài)求反SJMPLOOP查詢程序雖簡單 但CPU必須要不斷查詢TF0標志 工作效率低 30 30 例6 2 系統(tǒng)時鐘為6MHz 編寫定時器T0產(chǎn)生1s定時的程序 基本思想 采用定時器模式 因定時時間較長 首先確定采用哪一種工作方式 時鐘為6MHz的條件下 定時器各種工作方式最長可定時時間 方式0最長可定時16 384ms 方式1最長可定時131 072ms 方式2最長可定時512 s 由上可見 可選方式1 每隔100ms中斷一次 中斷10次為1s 31 31 1 計算計數(shù)初值X因為 216 X 2 10 6 10 1 所以X 15536 3CB0H 因此TH0 3CH TL0 B0H 2 10次計數(shù)的實現(xiàn)對于中斷10次的計數(shù) 采用B寄存器作為中斷次數(shù)計數(shù)器 3 程序設(shè)計參考程序如下 ORG0000H 程序運行入口RESET LJMPMAIN 跳向主程序入口MAINORG000BH T0的中斷入口LJMPIT0P 轉(zhuǎn)T0中斷處理子程序IT0PORG1000H 主程序入口 32 32 MAIN MOVSP 60H 設(shè)堆棧指針MOVB 0AH 設(shè)循環(huán)次數(shù)10次MOVTMOD 01H 設(shè)置T0工作在方式1定時MOVTL0 0B0H 給T0設(shè)初值MOVTH0 3CHSETBET0 允許T0中斷SETBEA 總中斷允許SETBTR0 啟動T0HERE SJMPHERE 原地循環(huán) 等待中斷 33 33 IT0P MOVTL0 0B0H T0中斷子程序 T0重裝初值MOVTH0 3CHDJNZB RTURN B中斷次數(shù)計數(shù) 減1非0則 中斷返回CLRTR0 1s定時時間到 停止T0工作SETBF0 1s定時時間到標志F0置1RTURN RETI程序說明 不論1s定時時間是否已到 都返回到 SJMPHERE 指令處 SJMPHERE 指令實際是一段主程序 在這段主程序中再通過對F0標志的判定 可知1s定時是否到 再進行具體處理 34 34 例利用定時 計數(shù)器T0的方式1 產(chǎn)生10ms的定時 并使P1 0引腳上輸出周期為20ms的方波 采用中斷方式 設(shè)系統(tǒng)時鐘頻率為12MHz 解 1 計算計數(shù)初值X 由于晶振為12MHz 所以機器周期Tcy為1 s 所以 N t Tcy 10 10 3 1 10 6 10000X 65536 10000 55536 D8F0H即應(yīng)將D8H送入TH0中 F0H送入TL0中2 求T0的方式控制字TMOD M1M0 01 GATE 0 C T 0 可取方式控制字為01H 35 采用查詢方式 ORG0000HLJMPMAIN 跳轉(zhuǎn)到主程序ORG0100HMAIN MOVTMOD 01H 置T0工作于方式1LOOP MOVTH0 0D8H 裝入計數(shù)初值MOVTL0 0F0HSETBTR0 啟動T0JNBTF0 查詢TF0 0 等待 T0在工作 未計滿CLRTF0 清TF0 此時 TF0 1 10ms定時到CPLP1 0 P1 0取反 產(chǎn)生方波的半個周期SJMPLOOP 循環(huán)產(chǎn)生方波END 36 ORG0000HLJMPMAIN 跳轉(zhuǎn)到主程序ORG000BH T0的中斷入口地址LJMPDVT0 轉(zhuǎn)向中斷服務(wù)程序ORG0100HMAIN MOVTMOD 01H 置T0工作于方式1MOVTH0 0D8H 裝入計數(shù)初值MOVTL0 0F0HSETBET0 T0開中斷SETBEA CPU開中斷SETBTR0 啟動T0SJMP 等待中斷DVT0 CPLP1 0 P1 0取反輸出MOVTH0 0D8H 重新裝入計數(shù)值MOVTL0 0F0HRETI 中斷返回END 采用中斷方式 37 6 4 2方式2的應(yīng)用方式2是一個可以自動重新裝載初值的8位計數(shù)器 定時器 可省去重裝初值指令 當某個定時器 計數(shù)器不使用時 可擴展一個負跳沿觸發(fā)的外中斷源 例6 3 擴展一個負跳沿觸發(fā)的外部中斷源 把定時器 計數(shù)器T0腳作為外部中斷請求輸入端 溢出標志TF0作為外中斷請求標志 基本思想 設(shè)為方式2 自動裝入常數(shù)方式 計數(shù)模式 TH0 TL0初值均為0FFH 當T0腳發(fā)生負跳變時 T0計數(shù)溢出 TF0置 1 單片機發(fā)出中斷請求 38 38 初始化程序 ORG0000HAJMPIINI 跳到初始化程序ORG000BHAJMPIT0P 跳到外中斷處理程序IINI MOVTMOD 06H 設(shè)置T0為方式2MOVTL0 0FFH 設(shè)T0初值MOVTH0 0FFHSETBET0 允許T0中斷SETBEA 總中斷允許SETBTR0 啟動T0 IT0P 外中斷處理程序段 39 39 程序說明 當連接在P3 4 T0腳 的外部中斷請求輸入腳電平發(fā)生負跳變時 TL0加1 產(chǎn)生溢出 TF0置 1 向單片機發(fā)出中斷請求 同時TH0的內(nèi)容0FFH送TL0 即TL0恢復(fù)初值0FFH P3 4腳相當于一個負跳沿觸發(fā)的外中斷請求源輸入 對P3 5也可做類似的處理 例6 4 當T0 P3 4 引腳上發(fā)生負跳變時 作為P1 0引腳產(chǎn)生方波的啟動信號 開始從P1 0腳上輸出一個周期為1ms的方波 如圖6 14所示 系統(tǒng)時鐘6MHz 40 40 基本思想 T0設(shè)為方式1計數(shù) 初值為FFFFH 當外部計數(shù)輸入端T0 P3 4 發(fā)生一次負跳變時 T0加1且溢出 溢出標志TF0置 1 向CPU發(fā)出中斷請求 此時T0相當于一個負跳沿觸發(fā)的外部中斷源 進入T0中斷程序后 F0標志置 1 說明T0引腳上已接收過負跳變信號 T1定義為方式2定時 在T0引腳產(chǎn)生一次負跳變后 啟動T1每500 s產(chǎn)生一次中斷 在中斷服務(wù)子程序中對P1 0求反 使P1 0產(chǎn)生周期1ms的方波 由于省去重新裝初值指令 所以可產(chǎn)生精確的定時時間 41 41 42 圖6 14負跳變觸發(fā)輸出一個周期為1ms的方波 42 2 計算T1的初值設(shè)T1的初值為x 則 28 x 2 10 6 5 10 4x 28 250 6 06H 3 程序設(shè)計參考程序 ORG0000H 程序入口RESET LJMPMAIN 跳向主程序MAINORG000BH T0的中斷入口LJMPIT0P 轉(zhuǎn)T0中斷服務(wù)程序ORG001BH T1的中斷入口 43 43 LJMPIT1P 轉(zhuǎn)T1中斷服務(wù)程序ORG0100H 主程序入口MAIN MOVSP 60H 設(shè)堆棧指針ACALLPT0M2 調(diào)用對T0 T1初始化子程序LOOP MOVC F0 T0是否產(chǎn)生過中斷 若產(chǎn)生 過 F0置1JNCLOOP T0未產(chǎn)生中斷 C 0 則跳 到LOOP 等待T0中斷SETBET1 允許T1產(chǎn)生定時中斷SETBTR1 啟動T1HERE AJMPHERE 44 44 PT0M2 MOVTMOD 26H 對T0 T1初始化 T0方式1 計數(shù) T1方式2定時MOVTL0 0FFH T0置初值MOVTH0 0FFHSETBET0 允許T0中斷MOVTL1 06H T1置初值MOVTH1 06HCLRF0 把T0已發(fā)生中斷標志F0清0SETBEA 總中斷允許SETBTR0 啟動T0RET 45 45 IT0P CLRTR0 T0中斷服務(wù)程序 停止T0計數(shù)SETBF0 把T0引腳接收過負脈沖標志F0置1 即接收過負跳變RETIIT1P CPLP1 0 T1中斷服務(wù)程序 P1 0位取反RETI程序說明 當單片機復(fù)位時 從0000H跳向主程序MAIN處執(zhí)行程序 其中調(diào)用了對T0 T1初始化子程序PT0M2 子程序返回后執(zhí)行標號LOOP處指令 循環(huán)等待T0引腳上負脈沖的到來 由于負脈沖到來的標志位F0的復(fù)位初始值為0 所以程序就在標號LOOP處循環(huán)等待 46 46 當T0 P3 4 腳發(fā)生負跳變時 由于T0計數(shù)溢出 則跳向T0中斷服務(wù)子程序 此時停止T0計數(shù) 并把T0引腳接收過負脈沖的標志F0置1 當中斷返回時 由于F0已被置1 則程序跳出LOOP處的循環(huán)等待 此時執(zhí)行指令來允許T1中斷 并啟動T1定時 然后執(zhí)行 AJMPHERE 指令 循環(huán)等待 等待T1的500 s定時中斷到來 當T1的500 s定時中斷產(chǎn)生時 則進入T1的中斷服務(wù)子程序IT1P 把P1 0腳電平取反 由于是自動裝初值 省去對T1重裝初值指令 中斷返回后 到 AJMPHERE 處等待T1的500 s定時中斷 如此重復(fù) 即得到圖6 14波形 47 47 例6 5 利用定時器T1的方式2計數(shù) 每計滿100個數(shù) 將P1 0取反 本例是方式2計數(shù)模式的應(yīng)用舉例 1 選擇工作方式外部信號由T1 P3 5 引腳輸入 每發(fā)生一次負跳變計數(shù)器便加1 每輸入100個脈沖 計數(shù)器將產(chǎn)生溢出中斷 在中斷服務(wù)程序中將P1 0取反一次 T1工作在方式2的控制字TMOD 60H 不使用T0時 TMOD低4位任取 但不能使T0為方式3 這里取全0 2 計算T1的初值X 28 100 156 9CHTL1的初值為9CH 重裝初值寄存器TH1 9CH 48 48 3 參考程序 ORG0000H 程序運行入口LJMPMAIN 跳向主程序MAINORG001BH T1中斷服務(wù)程序入口CPLP1 0 P1 0位取反RETIORG0100H 主程序入口MAIN MOVTMOD 60H 設(shè)置T1為方式2計數(shù)MOVTL0 9CH T0置初值MOVTH0 9CHSETBTR1 啟動T1HERE AJMPHEREEND 49 49 6 4 4門控制位GATEx的應(yīng)用 測量脈沖寬度介紹門控制位GATE的具體應(yīng)用 測量 P3 3 引腳上正脈沖的寬度 例6 7 門控位GATE1可使T1的啟動計數(shù)受的控制 當GATE1 1 TR1 1時 只有INT1 引腳輸入高電平時 T1才被允許計數(shù) 可測量引腳 P3 3 上正脈沖的寬度 其方法如圖6 16所示 50 圖6 16利用GATE位測量正脈沖的寬度 50 參考程序 ORG0000HRESET AJMPMAIN 復(fù)位入口轉(zhuǎn)主程序ORG0100H 主程序入口MAIN MOVSP 60HMOVTMOD 90H 向TMOD寫控制字 T1為方 式1定時 GATE1 1MOVTL1 00HMOVTH1 00HLOOP0 JBP3 3 LOOP0 等待低SETBTR1 如為低 啟動T1 51 51 LOOP1 JNBP3 3 LOOP1 等待升高LOOP2 JBP3 3 LOOP2 為高 此時計數(shù)器計數(shù) 等待降低CLRTR1 停止T1計數(shù)MOVA TL1 T1計數(shù)值送A 將T1計數(shù)值送顯示器 END執(zhí)行以上程序 使引腳上出現(xiàn)的正脈沖寬度以機器周期數(shù)的形式顯示在顯示器上 52 將A中的T1計數(shù)值送到顯示器顯示 52 6 4 5實時時鐘的設(shè)計介紹使用定時器 計數(shù)器實現(xiàn)時鐘 1 實現(xiàn)實時時鐘的基本思想最小計時單位是秒 如何獲得1s的定時時間呢 從前面介紹知 定時器方式1 最大定時時間也只能131ms 可將定時器的定時時間定為100ms 中斷方式進行溢出次數(shù)的累計 計滿10次 即得秒計時 而計數(shù)10次可用循環(huán)程序的方法實現(xiàn) 初值的計算如例6 2 片內(nèi)RAM規(guī)定3個單元為秒 分 時單元 42H 秒 單元 41H 分 單元 40H 時 單元 53 53 從秒到分 從分到時是通過

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論