關(guān)于我們
書單推薦
新書推薦
|
單片機原理與應用系統(tǒng)設計
本書較全面和詳細地介紹了單片機的基本原理、系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、內(nèi)部資源、外部接口擴展、應用系統(tǒng)設計實例以及嵌入式操作系統(tǒng)在單片機系統(tǒng)中應用等內(nèi)容, 并通過大量實例分析, 重點講解單片機應用系統(tǒng)的設計方法, 以培養(yǎng)讀者單片機應用系統(tǒng)設計能力。全書共12章。每章節(jié)的例題均由淺入深, 循序漸進、講解透徹。書中相關(guān)例程均在KeilC51 3.0環(huán)境下調(diào)試通過, 能夠?qū)嶋H演示。每章最后備有習題, 以及時鞏固所學知識。
內(nèi)容全面,概念清晰,由淺入深,循序漸進。本書全面介紹了MCS-51單片機的原理、指令系統(tǒng)、51匯編語言和C51語言編程方法、接口技術(shù)、應用系統(tǒng)設計方法,以及嵌入式操作系統(tǒng)在51單片機中的應用方法。
案例翔實,具有實戰(zhàn)演練功能。書中所有例題均在Keil μVision開發(fā)環(huán)境下調(diào)試通過,并給出Proteus仿真環(huán)境下的實現(xiàn)結(jié)果,不是紙上談兵,而是實戰(zhàn)演習。 配套資源豐富,包含有電子課件、所有例題的電路圖與源代碼以及習題解答,而且程序的關(guān)鍵部分標有注釋,是學習單片機軟硬件設計技術(shù)的理想教材和工具。
本書的目的是幫助初學者學習使用單片機。首先,作者總結(jié)多年的工程實踐經(jīng)驗和教學體會,先與讀者分享一下學習經(jīng)驗。
1. 分享經(jīng)驗 首先,是做好基礎知識的準備。基礎知識包括模擬電路、數(shù)字電路和C語言知識。在學習單片機之前,應先溫習所學過的模擬電路、數(shù)字電路以及C語言知識,為學習單片機加強基礎。 單片機的硬件電路大多數(shù)屬于數(shù)字電路,如果數(shù)字電路基礎扎實,對復雜的單片機硬件結(jié)構(gòu)和原理就能容易理解,就能輕松地邁開學習的第一步。因此,如果你覺得單片機很難,那就應該先去重溫數(shù)字電路,搞清楚觸發(fā)器、寄存器、門電路、CMOS電路、時序邏輯和時序圖、進制轉(zhuǎn)換等基礎知識。當你掌握了這些基礎知識后再去看單片機的結(jié)構(gòu)和原理,就會大徹大悟,信心倍增。模擬電路是電子技術(shù)的基礎,主要內(nèi)容是學習電阻、電容、電感、二極管、三極管、場效應管及放大器等模擬器件的工作原理和在電路中的作用。扎實的模擬電路基礎可以讓你容易看懂別人設計的電路,也能使你設計的電路更可靠。同時,單片機的學習離不開編程,在所有的程序設計中C語言運用最為廣泛。C語言知識并不難,需要掌握的知識就那么幾種數(shù)據(jù)類型和幾個控制語句?蓜e小看這幾種數(shù)據(jù)類型和幾個控制語句,用它們可以處理各種形式的數(shù)據(jù)以及非常復雜的邏輯關(guān)系。 扎實的電子技術(shù)基礎和C語言基礎,會讓你的單片機學習得心應手。當單片機乖乖地依照你的想法和設計去執(zhí)行指令,實現(xiàn)預期結(jié)果的時候,成就感會讓你信心十足地投入到單片機的世界里,未來的單片機專家就是你。 其次,要通過實踐積累經(jīng)驗。單片機的學習具有很強的實踐性,是一門很注重實際動手操作的技術(shù)學科,不動手實踐是學不會單片機的。因此,實踐才是真正學習單片機的必由之路。 實踐中要有一套完整的學習開發(fā)工具, 即必須有一臺計算機、◆單片機原理與應用系統(tǒng)設計(第2版)前言一套單片機開發(fā)板、視頻教程和單片機教材。計算機上要安裝Keil C51集成開發(fā)軟件,用來編寫和編譯程序,并將程序代碼下載到單片機上;開發(fā)板用來運行單片機程序,驗證實際效果;視頻教程就是手把手教你單片機開發(fā)環(huán)境的使用、單片機編程和調(diào)試。對于單片機初學者來說,視頻教程必須看,否則,即使把教材看了幾遍,還是不知道如何下手;單片機教材是理論學習資料,備忘備查。初學者為了節(jié)約成本和時間,可以先用Proteus軟件仿真調(diào)試,熟悉之后,再使用開發(fā)板調(diào)試程序。 軟件編程要注重理論和實踐相結(jié)合,效果會更好?吹嚼填}目先試著構(gòu)思自己的編程思路,然后再看教材或視頻教程里的代碼,研究別人的編程思路以及與自己思路的差異;接下來是親自動手編寫程序,對有疑問的地方試著按照自己的思路修改程序,比較程序運行效果,領會其中的奧妙。還可以在原有程序基礎上改進和拓展,使其功能更強大。此外,自己應該找些項目來做,以鞏固所學的知識和積累更多的經(jīng)驗。 在實踐中要多與同行虛心交流。在單片機學習過程中,每個人都會遇到無數(shù)的問題,如果你向有經(jīng)驗的過來人虛心求教,就會少走許多彎路,節(jié)省很多時間。 最后,研究硬件設計,實現(xiàn)產(chǎn)品開發(fā)。學習單片機的最終目的是做產(chǎn)品開發(fā),產(chǎn)品即是一個軟硬件相結(jié)合的控制系統(tǒng)。所以,硬件設計是學習單片機技術(shù)的必學內(nèi)容。當你的單片機編程水平有了相當提高之后,就應該去研究單片機硬件系統(tǒng)設計了。硬件設計包括電路原理設計和電路板(即PCB板)設計。 電路原理設計涉及各種芯片的應用,而芯片的典型應用在芯片數(shù)據(jù)手冊(Datasheet)中都能找到答案。電子技術(shù)領域的第一手資料就是Datasheet,而且?guī)缀醵际侨⑽牡,從Datasheet里所獲得的知識,可能是在教科書、網(wǎng)絡文檔和課外讀物等中很少見到的。雖然有些資料也都是在Datasheet的基礎上撰寫的,但內(nèi)容不全面,甚至存在翻譯上的遺漏和錯誤。所以良好的英文閱讀能力也是學習單片機技術(shù)不可缺少的。PCB板的設計相對簡單,只要懂得使用PCB板設計軟件Protel或 Altium Designer就 沒問題了。但要想設計的板子布局美觀、布線合理,還需要在實踐中不斷學習。 具備一定的Keil C51環(huán)境下的單片機編程經(jīng)驗、會使用Protel軟件或 Altium Designer軟件設計硬件電路以及良好的英文閱讀能力,你就是遇強則強的單片機高手了。 2. 本書內(nèi)容 本書第2版增加了工程實踐內(nèi)容。多年來,MCS51系列單片機一直是學習單片機技術(shù)的主要教學平臺,在嵌入式技術(shù)高速發(fā)展的大環(huán)境下,單片機技術(shù)課程已經(jīng)不再是培養(yǎng)電子工程師課程體系的最終環(huán)節(jié),單片機的教學要為后續(xù)學習嵌入式系統(tǒng)打下良好基礎。因此,本書在編寫過程中,除了論述MCS51單片機的基本原理、系統(tǒng)結(jié)構(gòu)、內(nèi)部資源、指令系統(tǒng)、常用接口及其外部擴展、應用系統(tǒng)設計等內(nèi)容外,還增加了豐富且能夠?qū)嶋H演示的單片機應用實例、嵌入式操作系統(tǒng)在51單片機系統(tǒng)中應用的方法和實例,以及自主設計的便攜式單片機學習板的軟硬件設計的內(nèi)容,并在第2版中增加了工程實踐案例的設計內(nèi)容。 3. 本書特色 (1) 強調(diào)動手實踐。 實踐是學好單片機技術(shù)的必經(jīng)之路。本書詳細介紹了Keil μVision集成開發(fā)環(huán)境下進行匯編語言程序和C51程序開發(fā)的過程;書中所有案例程序均在Keil μVision環(huán)境下調(diào)試通過,不是紙上談兵,而是實戰(zhàn)演習。 (2) 強調(diào)單片機應用系統(tǒng)的軟硬件整體設計。 書中給出了若干完整的單片機應用系統(tǒng)實例。案例的編寫具有完整性、系統(tǒng)性和工程性。 所有案例均給出可實施的系統(tǒng)級設計資料,包括完整的可實現(xiàn)電路板布線的硬件電路原理圖(并非電路示意圖)和完整的 Keil μVision環(huán)境下調(diào)試通過的軟件源程序工程代碼(并非程序段或偽代碼)。 所有案例均給出仿真實現(xiàn)過程和結(jié)果,即基于Proteus環(huán)境的系統(tǒng)仿真實現(xiàn)結(jié)果。 設計有便攜式單片機學習板,給出了該學習板的Protel電路原理圖設計和PCB版設計資料,便于讀者進行工程實踐。書中單片機應用系統(tǒng)案例均可在該學習板上硬件實現(xiàn)。 (3) 為嵌入式系統(tǒng)學習打好基礎。 嵌入式系統(tǒng)是單片機技術(shù)發(fā)展的高級階段,因此學習單片機要做好進一步學習嵌入式系統(tǒng)的知識準備。一方面是加強C語言程序設計能力,另一方面是加強嵌入式操作系統(tǒng)在51單片機系統(tǒng)上應用的內(nèi)容介紹。此外,本書介紹了嵌入式操作系統(tǒng)在51單片機系統(tǒng)中應用的方法和實例。 (4) 配套資源豐富。 本書配有多媒體資料,其中包含電子課件、所有相關(guān)例程源代碼、習題解答及編程題的程序源代碼,并且在程序的關(guān)鍵部分加以注釋,既適合作為教材供教師和學生使用,也適合自學成才。 4. 致謝 本書由沈陽理工大學馬秀麗、周越、王紅共同編寫。本書第1~5章和8.8節(jié)由馬秀麗編寫,第7~10章由周越和王紅編寫,第6和第11章由周越和馬秀麗編寫,王紅霞參加了附錄和部分章節(jié)的編寫工作。最后由馬秀麗審閱并統(tǒng)稿完成。感謝本書所列參考文獻的作者,他們的工作給了我們很大的幫助和啟發(fā)。感謝為本書出版付出辛勤勞動的清華大學出版社的工作人員。感謝讀者選用本書。 盡管全體參編人員竭心盡力,但限于自身水平,書中難免會有遺漏,懇請廣大讀者不吝指正,同時歡迎您對本書內(nèi)容提供寶貴建議,我們將非常感謝。 編者 2017年5月
第1章單片機概述1
1.1單片機的概念及特點1 1.1.1單片機的基本概念1 1.1.2單片機的主要特點2 1.2單片機的發(fā)展歷程3 1.3單片機的種類與應用5 1.3.1單片機的種類5 1.3.2單片機的等級9 1.3.3單片機的應用9 1.4單片機的選型10 習題11 第2章單片機的基本原理12 2.1MCS51系列單片機簡介12 2.1.1MCS51系列單片機的特點12 2.1.2MCS51系列單片機的常用芯片簡介13 2.2MCS51系列單片機的結(jié)構(gòu)16 2.2.1MCS51系列單片機的內(nèi)部結(jié)構(gòu)16 2.2.2MCS51系列單片機的CPU17 2.2.3MCS51系列單片機的存儲器分布20 2.2.4MCS51系列單片機的輸入輸出接口26 2.2.5MCS51系列單片機的時鐘電路29 2.2.6MCS51系列單片機的復位電路29 2.3MCS51系列單片機的引腳功能31 2.4MCS51系列單片機的時序33 2.4.1MCS51系列單片機的時序單位33 2.4.2MCS51系列單片機典型指令的時序34◆單片機原理與應用系統(tǒng)設計(第2版)目錄2.5MCS51系列單片機的最小系統(tǒng)36 2.5.1MCS51系列單片機的最小系統(tǒng)組成36 2.5.2MCS51系列單片機的節(jié)電方式37 習題38 第3章單片機匯編語言程序設計40 3.1MCS51系列單片機的匯編指令格式和尋址方式40 3.1.1MCS51系列單片機的匯編指令格式40 3.1.2MCS51系列單片機的尋址方式41 3.2MCS51系列單片機的指令系統(tǒng)44 3.2.1數(shù)據(jù)傳送類指令45 3.2.2算術(shù)運算類指令48 3.2.3邏輯運算類指令51 3.2.4控制轉(zhuǎn)移類指令52 3.2.5位運算類指令57 3.3MCS51系列單片機匯編程序常用的偽指令59 3.4MCS51系列單片機匯編語言程序設計63 3.4.1數(shù)據(jù)的尋找與排序的程序64 3.4.2數(shù)據(jù)運算的程序66 3.4.3數(shù)據(jù)的拼拆和轉(zhuǎn)換69 3.4.4多分支轉(zhuǎn)移程序71 3.4.5子程序設計74 習題76 第4章單片機C語言程序設計80 4.1C語言與MCS51系列單片機80 4.1.1C語言與MCS51系列單片機概述80 4.1.2C51程序的結(jié)構(gòu)82 4.2C51的基本數(shù)據(jù)類型83 4.3C51的運算量85 4.3.1常量85 4.3.2變量86 4.3.3變量的存儲模式89 4.3.4絕對地址的訪問90 4.4C51的運算符及表達式92 4.4.1算術(shù)運算符和算術(shù)表達式92 4.4.2賦值運算符和賦值表達式93 4.4.3增量運算符和增量表達式93 4.4.4關(guān)系運算符和關(guān)系表達式93 4.4.5邏輯運算符和邏輯表達式94 4.4.6復合賦值運算符95 4.4.7逗號運算符和逗號表達式95 4.4.8條件運算符和條件表達式95 4.4.9位運算符和位運算96 4.4.10指針與地址運算符96 4.5C51的輸入與輸出97 4.5.1格式輸出函數(shù)printf()97 4.5.2格式輸入函數(shù)scanf()98 4.6C51程序基本結(jié)構(gòu)與相關(guān)語句98 4.6.1C51程序的基本結(jié)構(gòu)98 4.6.2C51語句100 4.6.3if語句100 4.6.4switch…case語句101 4.6.5while語句102 4.6.6do…while語句102 4.6.7for語句103 4.6.8break和continue語句103 4.6.9return語句104 4.7C51的函數(shù)104 4.7.1函數(shù)的定義105 4.7.2函數(shù)的調(diào)用與聲明107 4.7.3函數(shù)的嵌套調(diào)用和遞歸調(diào)用108 4.8C51的構(gòu)造數(shù)據(jù)類型110 4.8.1數(shù)組110 4.8.2指針111 4.8.3結(jié)構(gòu)體113 4.8.4共用體115 4.8.5枚舉類型117 4.9C51程序的編輯和編譯118 習題118 第5章MCS51單片機內(nèi)部資源及編程120 5.1并行輸入輸出接口120 5.2定時/計數(shù)器接口121 5.2.1定時/計數(shù)器的主要特性121 5.2.2定時/計數(shù)器T0、T1的工作原理122 5.2.3定時/計數(shù)器的特殊功能寄存器123 5.2.4定時/計數(shù)器的工作模式124 5.2.5定時/計數(shù)器的初始化編程及應用127 5.3串行接口134 5.3.1串行口的主要特性134 5.3.2MCS51系列單片機串行口的工作原理135 5.3.3串行口的特殊功能寄存器136 5.3.4串行口的工作方式138 5.3.5串行口的初始化編程及應用142 5.4中斷系統(tǒng)154 5.4.1MCS51系列單片機中斷系統(tǒng)的特點154 5.4.2MCS51系列單片機的中斷源155 5.4.3MCS51系列單片機的中斷控制寄存器157 5.4.4中斷系統(tǒng)的應用159 習題162 第6章MCS51單片機的外部接口技術(shù)165 6.1人機接口165 6.1.1數(shù)碼管顯示接口165 6.1.2字符點陣式LCD顯示接口170 6.1.3圖形點陣式LCD顯示接口177 6.1.4鍵盤接口190 6.2存儲器擴展196 6.2.1單片機系統(tǒng)總線196 6.2.2數(shù)據(jù)存儲器擴展197 6.2.3程序存儲器擴展199 6.2.4單片機對外部存儲器的讀寫時序200 6.3輸入輸出口擴展202 6.3.1簡單I/O接口擴展202 6.3.2可編程并行I/O接口擴展203 6.4A/D轉(zhuǎn)換接口211 6.4.1A/D轉(zhuǎn)換原理211 6.4.2ADC0809芯片的應用213 6.5D/A轉(zhuǎn)換接口219 6.5.1D/A轉(zhuǎn)換原理219 6.5.2DAC0832芯片的應用221 6.6開關(guān)量輸入輸出接口226 習題227 第7章MCS51單片機的通信接口技術(shù)228 7.1RS232接口通信228 7.1.1RS232基本原理228 7.1.2單片機與PC的RS232接口通信229 7.2RS485接口通信234 7.3IIC總線接口通信234 7.3.1IIC總線主要特點234 7.3.2IIC總線工作時序235 7.3.3IIC總線操作指令格式236 7.3.4IIC總線EEPROM芯片的應用 236 7.4SPI總線接口通信245 7.4.1SPI總線工作原理245 7.4.2SPI總線芯片ADC0832的應用246 7.5CAN總線接口通信251 7.5.1CAN通信總線原理251 7.5.2常用的CAN總線芯片252 7.5.3CAN總線應用253 7.6USB總線接口通信254 7.6.1USB通信總線原理254 7.6.2常用的USB通信總線芯片255 7.6.3USB 1.1通信總線應用256 習題257 第8章單片機應用系統(tǒng)設計258 8.1系統(tǒng)設計總體規(guī)劃258 8.1.1單片機應用系統(tǒng)設計流程258 8.1.2硬件系統(tǒng)設計原則260 8.1.3軟件系統(tǒng)設計原則260 8.2電子密碼鎖設計260 8.2.1硬件電路設計261 8.2.2軟件程序設計261 8.3GPS定位終端設計263 8.3.1硬件電路設計263 8.3.2軟件程序設計264 8.4電子日歷設計268 8.4.1硬件電路設計268 8.4.2軟件程序設計271 8.5溫度檢測器設計271 8.5.1硬件電路設計271 8.5.2軟件程序設計275 8.6電梯內(nèi)部控制器設計276 8.6.1硬件電路設計277 8.6.2軟件程序設計278 8.7直流電機溫控調(diào)速器279 8.7.1硬件電路設計280 8.7.2軟件程序設計282 8.8RFID讀卡器設計282 8.8.1硬件電路設計283 8.8.2軟件程序設計284 8.9ZigBee物聯(lián)網(wǎng)結(jié)點設計285 8.9.1ZigBee物聯(lián)網(wǎng)整體結(jié)構(gòu)285 8.9.2溫濕度結(jié)點的硬件電路設計286 8.9.3軟件程序設計288 第9章嵌入式操作系統(tǒng)應用基礎290 9.1嵌入式操作系統(tǒng)介紹290 9.1.1嵌入式計算機系統(tǒng)體系結(jié)構(gòu)290 9.1.2嵌入式操作系統(tǒng)主要功能292 9.1.3典型的嵌入式操作系統(tǒng)293 9.2RTX51 Tiny操作系統(tǒng)基本功能294 9.2.1RTX51 Tiny特性294 9.2.2RTX51 Tiny的任務管理294 9.2.3RTX51 Tiny的系統(tǒng)函數(shù)297 9.2.4使用RTX51 Tiny編程時注意事項299 9.2.5RTX51 Tiny的系統(tǒng)配置300 9.2.6RTX51 Tiny的編程規(guī)則302 9.3RTX51 Tiny操作系統(tǒng)應用實例303 9.3.1多路跑馬燈303 9.3.2矩陣式鍵盤掃描識別306 9.3.3秒表308 9.3.4串口通信311 習題314 第10章便攜式單片機學習板介紹315 10.1SLG1型便攜式單片機學習板特點315 10.2原理圖設計315 10.2.1總體設計315 10.2.2各模塊單元設計317 10.3例程設計322 第11章單片機應用系統(tǒng)開發(fā)工具323 11.1Keil μVision集成開發(fā)環(huán)境的使用323 11.1.1工程文件的建立323 11.1.2在工程中添加程序文件325 11.1.3編譯和連接工程文件,形成目標文件325 11.1.4調(diào)試運行,觀察結(jié)果326 11.1.5仿真環(huán)境的設置328 11.2Proteus仿真軟件介紹332 11.3電路設計開發(fā)工具Altium Designer介紹337 附錄AMCS51單片機指令表338 A.1數(shù)據(jù)傳輸類指令338 A.2算術(shù)運算類指令339 A.3邏輯操作類指令340 A.4位操作類指令341 A.5控制轉(zhuǎn)移類指令342 附錄BC51的庫函數(shù)343 B.1專用寄存器頭文件regxx.h343 B.2字符函數(shù)庫ctype.h343 B.3一般輸入輸出函數(shù)庫stdio.h344 B.4字符串函數(shù)庫string.h345 B.5標準函數(shù)庫stdlib.h347 B.6數(shù)學函數(shù)庫math.h348 B.7預定義宏函數(shù)庫absacc.h349 B.8內(nèi)部函數(shù)庫intrins.h349 參考文獻351
第5章chapter5
MCS51單片機內(nèi)部資源及編程1.1微型計算機簡介MCS51系列單片機的內(nèi)部資源主要有并行I/O口、定時器/計數(shù)器、串行接口以及中斷系統(tǒng),MCS51系列單片機的大部分功能就是通過對這些資源的利用來實現(xiàn)的。 5.1并行輸入輸出接口 MCS51系列單片機有4個8位的并行輸入輸出接口P0、P1、P2和P3。這4個接口既可以并行輸入輸出8位數(shù)據(jù),也可以按位方式獨立地使用每一位作為輸入輸出接口。其中,P0 口是一個8位漏極開路的雙向I/O接口,在用作通用I/O接口時,P0 口必須外接上拉電阻;此外在連接外存儲器使用時,P0口被用作低8位地址及數(shù)據(jù)總線接口。P1、P2和P3是帶內(nèi)部上拉電阻的8位雙向I/O 接口,都具有直接驅(qū)動負載能力。此外P2 口在連接外存儲器使用時,被用作高8位地址總線接口;而P3口除用作通用I/O接口使用外,還用于實現(xiàn)特殊功能。這里先介紹它們用作通用I/O口的編程。 【例51】利用MCS51單片機的P0口接2個發(fā)光二極管,P1口接2個開關(guān),編程實現(xiàn),當P1.X連接的開關(guān)動作時,對應的P0.X連接的發(fā)光二極管亮或滅。 設計思路: 先把P1口的內(nèi)容讀出,然后把讀取的P1口的開關(guān)狀態(tài)通過P0口輸出,即可控制發(fā)光二極管的亮或滅。電路原理圖 如圖5.1所示。 匯編程序如下: ORG0000H LJMPSTAR ORG 0100H STAR: MOV P0,#0FFH LOOP: MOV A,P1 MOV P0,A SJMP LOOP END C51語言程序如下: #include sbit S1 = P1^0;sbit S2 = P1^1; sbit LED1 = P0^0; sbit LED2 = P0^1; void main() { while(1) {LED1 = S1;LED2 = S2; } } 圖5.1利用并行接口開關(guān)控制LED燈的應用 ◆單片機原理與應用系統(tǒng)設計(第2版)第◆5章MCS51單片機內(nèi)部資源及編程5.2定時/計數(shù)器接口〖*4/5〗5.2.1定時/計數(shù)器的主要特性MCS51系列單片機中,51子系列有兩個16位的可編程定時/計數(shù)器T0和T1,52子系列有三個16位的可編程定時/計數(shù)器T0、T1和T2。它們既可以編程為定時器使用,通過對內(nèi)部機器周期計數(shù)來實現(xiàn)定時功能;也可以編程為計數(shù)器使用,通過對外部輸入端脈沖信號周期進行計數(shù)來實現(xiàn)計數(shù)功能。用來計數(shù)的特殊功能寄存器是TH0和TL0(或TH1和TL1)。每個定時/計數(shù)器用作定時器方式還是計數(shù)器方式,要通過對特殊功能寄存器TMOD的編程來選擇。 每個定時/計數(shù)器都有多種工作模式,其中T0有四種工作模式;T1和T2有三種工作模式。其工作模式的設定是通過對特殊功能寄存器TMOD的編程來選擇的。 每一個定時/計數(shù)器有啟動、停止和溢出三種工作狀態(tài),啟動和停止狀態(tài)是通過對特殊功能寄存器TCON的編程來控制的;溢出狀態(tài)是當定時計數(shù)時間到時產(chǎn)生溢出,由硬件自動將特殊功能寄存器TCON的溢出標志位置位。溢出狀態(tài)可以通過查詢或中斷方式來處理。 定時/計數(shù)器是MCS51系列單片機的重要功能模塊之一,在工業(yè)控制、檢測、智能儀器等產(chǎn)品中使用非常廣泛。這部分內(nèi)容的學習目標是: (1) 理解定時/計數(shù)器T0和T1的工作原理。 (2) 掌握特殊功能寄存器TMOD、TCON、TH0和TL0(或TH1和TL1)的功能和使用,即會設定定時/計數(shù)器的工作方式: 定時器方式和計數(shù)器方式。 會設定定時/計數(shù)器的四種工作模式: 模式0~3。 會控制定時/計數(shù)器的啟動和停止。會通過查詢或中斷方式來處理溢出。 (3) 學會定時/計數(shù)器的編程和使用。 5.2.2定時/計數(shù)器T0、T1的工作原理 MCS51系列單片機的定時/計數(shù)器T0和T1是由加法計數(shù)器、方式控制寄存器TMOD和狀態(tài)控制寄存器TCON等組成,其基本結(jié)構(gòu)如圖5.2所示。其中,加法計數(shù)器是定時/計數(shù)器的核心,其作用是對內(nèi)部機器周期或外部輸入信號的周期進行計數(shù),它是用8位的特殊功能寄存器TH0、TL0及TH1、TL1來表示, TH0和TL0用于表示定時/計數(shù)器T0加法計數(shù)器的高8位和低8位;TH1和TL1用于表示定時/計數(shù)器T1加法計數(shù)器的高8位和低8位。方式控制寄存器TMOD用于設定定時/計數(shù)器的工作方式和工作模式;狀態(tài)控制寄存器TCON用于控制定時/計數(shù)器的啟動、停止和溢出。 圖5.2定時/計數(shù)器T0和T1的結(jié)構(gòu)框圖 定時/計數(shù)器有兩種工作方式: 定時器方式和計數(shù)器方式。 當用作定時器時,加法計數(shù)器在每個機器周期TCY內(nèi)都做加1計數(shù),即為內(nèi)部機器周期計數(shù),由于一個機器周期包含12個振蕩周期,因此其計數(shù)的速率是振蕩頻率的1/12。當計數(shù)值滿,產(chǎn)生溢出(即加法計數(shù)器最高位產(chǎn)生進位)時,便自動將TCON的溢出標志位置“1”(如果預先設置了允許定時器中斷,則同時還向CPU請求中斷)。 此時,從加法計數(shù)器計數(shù)開始到產(chǎn)生溢出所經(jīng)歷的計數(shù)時間就是定時器的定時時間。 例如,定時/計數(shù)器T0的加法計數(shù)器的初值是X,其最大計數(shù)值(即滿值)是M,當用作定時器時,加法計數(shù)器從計數(shù)開始到溢出所經(jīng)歷的計數(shù)值N為: 計數(shù)值N=最大計數(shù)值M-初值X 定時時間 =計數(shù)值N×機器周期=計數(shù)值N×振蕩周期fOSC/12 這里需要注意的是,在不同的工作模式下,加法計數(shù)器的使用位數(shù)不同,因此其最大計數(shù)值(滿值)是不一樣。 當用作計數(shù)器時,加法計數(shù)器對單片機引腳輸入端T0(P3.4)或T1(P3.5)上的外部脈沖輸入信號進行計數(shù)(即檢測到一個1→0的跳變時使加法計數(shù)器加1),由于識別一個從1至0的跳變至少要用到兩個機器周期(即一個機器周期檢測到1,下一個機器周期檢測到0),因此計數(shù)的最高速率是振蕩頻率的1/24。當計數(shù)值滿,產(chǎn)生溢出(即加法計數(shù)器最高位產(chǎn)生進位)時,便自動將TCON的溢出標志位置1(如果預先設置了允許定時器中斷,則同時還向CPU請求中斷)。此時,從加法計數(shù)器計數(shù)開始到產(chǎn)生溢出所經(jīng)歷的時間就是計數(shù)器的計數(shù)時間。 這里需要注意的是,在使用計數(shù)器方式時,為了能準確對每一個外部輸入脈沖信號進行計數(shù),外部輸入脈沖信號的頻率應小于振蕩頻率的1/24。 5.2.3定時/計數(shù)器的特殊功能寄存器 與定時/計數(shù)器使用相關(guān)的特殊功能寄存器有: 方式控制寄存器TMOD、狀態(tài)控制寄存器TCON、定時/計數(shù)器T0(或T1)的加法計數(shù)器高8位TH0(或TH1)和低8位TL0(或TL1)。 ……
你還可能感興趣
我要評論
|