Keil 軟件實例教程 1. 單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51 單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil 軟件是目前最流行開發(fā)MCS-51 系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全面支持Keil 即可看出。Keil 提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運行Keil 軟件需要Pentium 或以上的CPU,16MB或更多RAM、20M 以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對于使用51 系列單片機(jī)的愛好者來說是十分必要的,如果你使用C 語言編程,那么Keil 幾乎就是你的不二之選(目前在國內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件),即使不使用C 語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會令你事半功倍。我們將通過一些實例來學(xué)習(xí)Keil 軟件的使用,在這一部份我們將學(xué)習(xí)如何輸入源程序,建立工程、對工程進(jìn)行詳細(xì)的設(shè)置,以及如何將源程序變?yōu)槟繕?biāo)代碼。圖1 所示電路圖使用89C51 單片機(jī)作為主芯片,這種單片機(jī)性屬于MCS-51 系列,其內(nèi)部有4K 的FLASH ROM,可以反復(fù)擦寫,非常適于做實驗。89C51 的P1 引腳上接8 個發(fā)光二極管,P3.2~P3.4 引腳上接4 個按鈕開關(guān),我們的第一個任務(wù)是讓接在P1 引腳上的發(fā)光二極管依次循環(huán)點亮。 一、Keil 工程的建立首先啟動Keil 軟件的集成開發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊uVision 的圖標(biāo)以啟動該軟件。UVison啟動后,程序窗口的左邊有一個工程管理窗口,該窗口有3 個標(biāo)簽,分別是Files、Regs、和Books,這三個標(biāo)簽頁分別顯示當(dāng)前項目的文件結(jié)構(gòu)、CPU 的寄存器及部份特殊功能寄存器的值(調(diào)試時才出現(xiàn))和所選CPU 的附加說明文件,如果是第一次啟動Keil,那么這三個標(biāo)簽頁全是空的。
上傳時間: 2013-11-25
上傳用戶:hanbeidang
KEIL C51 Vision2 中文入門教程 本手冊講述對8051 的目標(biāo)環(huán)境如何使用Cx51 優(yōu)化C 編譯器編譯C 程序Cx51 編譯器包可以用在所有的8051 系列處理器上可以在WINDOWS 32 位命令行中執(zhí)行本手冊假定你熟悉WINDOWS 操作系統(tǒng)知道如何編程8051 處理器并會用C 語言編程注意本手冊用條件窗口來指明32 位WINDOWS 版本是WINDOWS95 WINDOWS98 WINDOWSME WINDOWS NT WINDOWS 2000 或WINDWOS XP如果你對C 編程有問題或者你想知道C 語言編程的更多信息可參考16 頁的關(guān)于C語言的書手冊中討論的許多例子和描述是從WINDOWS 命令提示符下調(diào)用的這對在一個集成環(huán)境如μVision2 中運行Cx51 的情況是不適用的本手冊中的例子是通用的可以應(yīng)用到所有編程環(huán)境
標(biāo)簽: Vision2 KEIL C51 入門教程
上傳時間: 2013-11-01
上傳用戶:asddsd
單片機(jī)原理及應(yīng)用教程:1.1 微型計算機(jī)的組成及工作原理1.1.1 微型計算機(jī)中的基本概念1. 微處理器2. 微型計算機(jī) (1)單片微處理機(jī) (2)通用微型計算機(jī)3. 微型計算機(jī)系統(tǒng)2.1 MCS—51系列單片機(jī)的結(jié)構(gòu)原理2.1.1 MCS-51單片機(jī)邏輯結(jié)構(gòu) MCS-51單片機(jī)的系統(tǒng)結(jié)構(gòu)框圖如圖2.1所示。 3.1 MCS-51單片機(jī)指令格式 一條匯編語言指令中最多包含4個區(qū)段,如下所示: 標(biāo)號:操作碼 目的操作數(shù),源操作數(shù) ;注釋 標(biāo)號與操作碼之間“:”隔開; 操作碼與操作數(shù)之間用“空格”隔開; 目的操作數(shù)和源源操作數(shù)之間有“,”分隔; 操作數(shù)與注釋之間用“;”隔開。 所謂程序設(shè)計,就是按照給定的任務(wù)要求,編寫出完整的計算機(jī)程序。要完成同樣的任務(wù),使用的方法或程序并不是唯一的。因此,程序設(shè)計的質(zhì)量將直接影響到計算機(jī)系統(tǒng)的工作效率、運行可靠性。 前面我們學(xué)過了匯編語言形式的指令系統(tǒng),本章重點介紹匯編語言程序結(jié)構(gòu)以及如何利用匯編語言指令進(jìn)行程序設(shè)計的方法。
標(biāo)簽: 單片機(jī)原理 應(yīng)用教程
上傳時間: 2013-10-09
上傳用戶:huannan88
327 單片機(jī)原理及應(yīng)用328 MCS-51單片機(jī)原理及實用技術(shù)329 位微型計算機(jī)原理·接口技術(shù)及其應(yīng)用330 單片機(jī)開發(fā)與典型應(yīng)用設(shè)計331 單片機(jī)實用系統(tǒng)設(shè)計技術(shù)332 IBM PC微型計算機(jī)原理及接口技術(shù)333 MCS-51單片機(jī)原理及接口技術(shù) 修訂版334 北京職業(yè)教育計算機(jī)應(yīng)用培訓(xùn)教材 單片機(jī)——原理·操作·實驗·應(yīng)用335 單片機(jī)實用技術(shù)_整機(jī)設(shè)計、多機(jī)通信、實用技術(shù)336 EM78系列單片機(jī)簡介337 單片機(jī)器件應(yīng)用手冊338 MCS 96 MC68單片機(jī)原理與應(yīng)用339 數(shù)字PID及其算法699 MCS-51單片機(jī)開發(fā)系統(tǒng)與監(jiān)控分析700 MCS-51單片機(jī)原理及接口技術(shù)701 MCS-51系列單片機(jī)實用接口技術(shù)702 PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù)703 PIC系列單片機(jī)應(yīng)用設(shè)計與實例704 單片機(jī)外圍器件實用手冊 電源器件分冊705 單片機(jī)基礎(chǔ)706 單片機(jī)模糊控制系統(tǒng)設(shè)計與應(yīng)用實例707 單片機(jī)器件應(yīng)用手冊708 單片機(jī)實用開發(fā)指南709 單片機(jī)應(yīng)用技術(shù)大全710 單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù)711 單片機(jī)應(yīng)用技術(shù)選編712 單片機(jī)原理及系統(tǒng)設(shè)計713 單片機(jī)原理與應(yīng)用教程714 數(shù)字信號處理C語言程序集715 單片機(jī)接口技術(shù)實驗指導(dǎo)716 信號處理單片機(jī)及應(yīng)用(上)717 信號處理單片機(jī)及應(yīng)用(下)718 智能儀器(單片機(jī)應(yīng)用系統(tǒng)設(shè)計)719 自裝單片微電腦快速入門720 8051單片機(jī)實踐與應(yīng)用741 邊學(xué)邊用C語言
上傳時間: 2014-04-05
上傳用戶:q986086481
用單片機(jī)AT89C51改造普通雙桶洗衣機(jī):AT89C2051作為AT89C51的簡化版雖然去掉了P0、P2等端口,使I/O口減少了,但是卻增加了一個電壓比較器,因此其功能在某些方面反而有所增強(qiáng),如能用來處理模擬量、進(jìn)行簡單的模數(shù)轉(zhuǎn)換等。本文利用這一功能設(shè)計了一個數(shù)字電容表,可測量容量小于2微法的電容器的容量,采用3位半數(shù)字顯示,最大顯示值為1999,讀數(shù)單位統(tǒng)一采用毫微法(nf),量程分四檔,讀數(shù)分別乘以相應(yīng)的倍率。電路工作原理 本數(shù)字電容表以電容器的充電規(guī)律作為測量依據(jù),測試原理見圖1。電源電路圖。 壓E+經(jīng)電阻R給被測電容CX充電,CX兩端原電壓隨充電時間的增加而上升。當(dāng)充電時間t等于RC時間常數(shù)τ時,CX兩端電壓約為電源電壓的63.2%,即0.632E+。數(shù)字電容表就是以該電壓作為測試基準(zhǔn)電壓,測量電容器充電達(dá)到該電壓的時間,便能知道電容器的容量。例如,設(shè)電阻R的阻值為1千歐,CX兩端電壓上升到0.632E+所需的時間為1毫秒,那么由公式τ=RC可知CX的容量為1微法。 測量電路如圖2所示。A為AT89C2051內(nèi)部構(gòu)造的電壓比較器,AT89C2051 圖2 的P1.0和P1.1口除了作I/O口外,還有一個功能是作為電壓比較器的輸入端,P1.0為同相輸入端,P1.1為反相輸入端,電壓比較器的比較結(jié)果存入P3.6口對應(yīng)的寄存器,P3.6口在AT89C2051外部無引腳。電壓比較器的基準(zhǔn)電壓設(shè)定為0.632E+,在CX兩端電壓從0升到0.632E+的過程中,P3.6口輸出為0,當(dāng)電池電壓CX兩端電壓一旦超過0.632E+時,P3.6口輸出變?yōu)?。以P3.6口的輸出電平為依據(jù),用AT89C2051內(nèi)部的定時器T0對充電時間進(jìn)行計數(shù),再將計數(shù)結(jié)果顯示出來即得出測量結(jié)果。整機(jī)電路見圖3。電路由單片機(jī)電路、電容充電測量電路和數(shù)碼顯示電路等 圖3 部分組成。AT89C2051內(nèi)部的電壓比較器和電阻R2-R7等組成測量電路,其中R2-R5為量程電阻,由波段開關(guān)S1選擇使用,電壓比較器的基準(zhǔn)電壓由5V電源電壓經(jīng)R6、RP1、R7分壓后得到,調(diào)節(jié)RP1可調(diào)整基準(zhǔn)電壓。當(dāng)P1.2口在程序的控制下輸出高電平時,電容CX即開始充電。量程電阻R2-R5每檔以10倍遞減,故每檔顯示讀數(shù)以10倍遞增。由于單片機(jī)內(nèi)部P1.2口的上拉電阻經(jīng)實測約為200K,其輸出電平不能作為充電電壓用,故用R5兼作其上拉電阻,由于其它三個充電電阻和R5是串聯(lián)關(guān)系,因此R2、R3、R4應(yīng)由標(biāo)準(zhǔn)值減去1K,分別為999K、99K、9K。由于999K和1M相對誤差較小,所以R2還是取1M。數(shù)碼管DS1-DS4、電阻R8-R14等組成數(shù)碼顯示電路。本機(jī)采用動態(tài)掃描顯示的方式,用軟件對字形碼譯碼。P3.0-P3.5、P3.7口作數(shù)碼顯示七段筆劃字形碼的輸出,P1.3-P1.6口作四個數(shù)碼管的動態(tài)掃描位驅(qū)動碼輸出。這里采用了共陰數(shù)碼管,由于AT89C2051的P1.3-P1.6口有25mA的下拉電流能力,所以不用三極管就能驅(qū)動數(shù)碼管。R8-R14為P3.0-P3.5、P3.7口的上拉電阻,用以驅(qū)動數(shù)碼管的各字段,當(dāng)P3的某一端口輸出低電平時其對應(yīng)的字段筆劃不點亮,而當(dāng)其輸出高電平時,則對應(yīng)的上拉電阻即能點亮相應(yīng)的字段筆劃。
上傳時間: 2013-12-31
上傳用戶:ming529
8051單片機(jī)教程:一臺能夠工作的計算機(jī)要有這樣幾個部份構(gòu)成:CPU(進(jìn)行運算、控制)、RAM(數(shù)據(jù)存儲)、ROM(程序存儲)、輸入/輸出設(shè)備(例如:串行口、并行輸出口等)。在個人計算機(jī)上這些部份被分成若干塊芯片,安裝一個稱之為主板的印刷線路板上。而在單片機(jī)中,這些部份,全部被做到一塊集成電路芯片中了,所以就稱為單片(單芯片)機(jī),而且有一些單片機(jī)中除了上述部份外,還集成了其它部份如A/D,D/A等。 PC中的CPU一塊就要賣幾千塊錢,這么多東西做在一起,還不得買個天價!再說這塊芯片也得非常大了。 不,價格并不高,從幾元人民幣到幾十元人民幣,體積也不大,一般用40腳封裝,當(dāng)然功能多一些單片機(jī)也有引腳比較多的,如68引腳,功能少的只有10多個或20多個引腳,有的甚至只8只引腳。為什么會這樣呢? 功能有強(qiáng)弱,打個比方,市場上面有的組合音響一套才賣幾百塊錢,可是有的一臺功放機(jī)就要賣好幾千。另外這種芯片的生產(chǎn)量很大,技術(shù)也很成熟,51系列的單片機(jī)已經(jīng)做了十幾年,所以價格就低了。 既然如此,單片機(jī)的功能肯定不強(qiáng),干嗎要學(xué)它呢? 話不能這樣說,實際工作中并不是任何需要計算機(jī)的場合都要求計算機(jī)有很高的性能,一個控制電冰箱溫度的計算機(jī)難道要用PIII?應(yīng)用的關(guān)鍵是看是否夠用,是否有很好的性能價格比。所以8051出來十多年,依然沒有被淘汰,還在不斷的發(fā)展中。 2、MCS51單片機(jī)和8051、8031、89C51等的關(guān)系我們平常老是講8051,又有什么8031,現(xiàn)在又有89C51,它們之間究竟是什么關(guān)系? MCS51是指由美國INTEL公司(對了,就是大名鼎鼎的INTEL)生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機(jī),而8031是前些年在我國最流行的單片機(jī),所以很多場合會看到8031的名稱。INTEL公司將MCS51的核心技術(shù)授權(quán)給了很多其它公司,所以有很多公司在做以8051為核心的單片機(jī),當(dāng)然,功能或多或少有些改變,以滿足不同的需求,其中89C51就是這幾年在我國非常流行的單片機(jī),它是由美國ATMEL公司開發(fā)生產(chǎn)的。以后我們將用89C51來完成一系列的實驗。
上傳時間: 2013-11-17
上傳用戶:crazyer
單片機(jī)原理與應(yīng)用教程采用教、學(xué)、做相結(jié)合的模,以理論為基礎(chǔ)、著眼應(yīng)用,系統(tǒng)詳盡地介紹了單片機(jī)應(yīng)用技術(shù)所需的基本知識和技能。全書共分9章,包括MCS-51系列單片機(jī)的硬件結(jié)構(gòu)、工作原理、指令系統(tǒng)、接口技術(shù)、串行通信、中斷系統(tǒng)、語言程序設(shè)計及各功能部件的組成和應(yīng)用等。通過學(xué)習(xí)這些內(nèi)容,可對MCS-51系列單片機(jī)有一個總體的概念和認(rèn)識,并在掌握基本硬件的基礎(chǔ)上用軟件實現(xiàn)其功能。 第1章 MCS-51單片機(jī)系統(tǒng)結(jié)構(gòu)1.1 單片機(jī)概述1.2 MCS-51單片機(jī)結(jié)構(gòu)簡介1.3 并行I/O接口1.4 單片機(jī)的復(fù)位電路與時鐘電路1.5 單片機(jī)的工作方式1.6 構(gòu)建MCS-51型單片機(jī)的最小系統(tǒng)本章小結(jié)習(xí)題第2章 MCS-51指令系統(tǒng)與程序設(shè)計2.1 概述2.2 尋址方式2.3 指令系統(tǒng)2.4 匯編程序設(shè)計本章小結(jié) 習(xí)題第3章 單片機(jī)的定時與中斷系統(tǒng)3.1 定時器/計數(shù)器3.2 中斷系統(tǒng)3.3 單片機(jī)中斷與定時器/計數(shù)器的應(yīng)用訓(xùn)練本章小結(jié)習(xí)題第4章 串行通信技術(shù)4.1 串行通信概念4.2 MCS-51串行通信接口4.3 串行口的擴(kuò)展應(yīng)用4.4 串行通信的應(yīng)用本章小結(jié)習(xí)題第5章 單片機(jī)的系統(tǒng)擴(kuò)展技術(shù)5.1 程序存儲器的擴(kuò)展5.2 數(shù)據(jù)存儲器的擴(kuò)展5.3 TTL芯片擴(kuò)展I/O并行接口的應(yīng)用訓(xùn)練5.4 Intel系列可編程序接口芯片5.5 8155/8156可編程I/O接口應(yīng)用訓(xùn)練5.6 8253/8254可編程定時器/計數(shù)器的應(yīng)用訓(xùn)練……第6章 單片機(jī)接口實用技術(shù)及應(yīng)用第7章 單片機(jī)開發(fā)系統(tǒng)第8章 單片機(jī)應(yīng)和系統(tǒng)的設(shè)計方法第9章 單片機(jī)高級語言C51的應(yīng)用
標(biāo)簽: 單片機(jī)原理 應(yīng)用教程
上傳時間: 2013-10-28
上傳用戶:tzrdcaabb
pic單片機(jī)實用教程(提高篇)以介紹PIC16F87X型號單片機(jī)為主,并適當(dāng)兼顧PIC全系列,共分9章,內(nèi)容包括:存儲器;I/O端口的復(fù)位功能;定時器/計數(shù)器TMR1;定時器TMR2;輸入捕捉/輸出比較/脈寬調(diào)制CCP;模/數(shù)轉(zhuǎn)換器ADC;通用同步/異步收發(fā)器USART;主控同步串行端口MSSP:SPI模式和I2C模式。突出特點:通俗易懂、可讀性強(qiáng)、系統(tǒng)全面、學(xué)練結(jié)合、學(xué)用并重、實例豐富、習(xí)題齊全。<br>本書作為Microchip公司大學(xué)計劃選擇用書,可廣泛適用于初步具備電子技術(shù)基礎(chǔ)和計算機(jī)知識基礎(chǔ)的學(xué)生、教師、單片機(jī)愛好者、電子制作愛好者、電器維修人員、電子產(chǎn)品開發(fā)設(shè)計者、工程技術(shù)人員閱讀。本教程全書共分2篇,即基礎(chǔ)篇和提高篇,分2冊出版,以適應(yīng)不同課時和不同專業(yè)的需要,也為教師和讀者增加了一種可選方案。 第1章 EEPROM數(shù)據(jù)存儲器和FIASH程序存儲器1.1 背景知識1.1.1 通用型半導(dǎo)體存儲器的種類和特點1.1.2 PIC單片機(jī)內(nèi)部的程序存儲器1.1.3 PIC單片機(jī)內(nèi)部的EEPROM數(shù)據(jù)存儲器1.1.4 PIC16F87X內(nèi)部EEPROM和FIASH操作方法1.2 與EEPROM相關(guān)的寄存器1.3 片內(nèi)EEPROM數(shù)據(jù)存儲器結(jié)構(gòu)和操作原理1.3.1 從EEPROM中讀取數(shù)據(jù)1.3.2 向EEPROM中燒寫數(shù)據(jù)1.4 與FLASH相關(guān)的寄存器1.5 片內(nèi)FLASH程序存儲器結(jié)構(gòu)和操作原理1.5.1 讀取FLASH程序存儲器1.5.2 燒寫FLASH程序存儲器1.6 寫操作的安全保障措施1.6.1 寫入校驗方法1.6.2 預(yù)防意外寫操作的保障措施1.7 EEPROM和FLASH應(yīng)用舉例1.7.1 EEPROM的應(yīng)用1.7.2 FIASH的應(yīng)用思考題與練習(xí)題第2章 輸入/輸出端口的復(fù)合功能2.1 RA端口2.1.1 與RA端口相關(guān)的寄存器2.1.2 電路結(jié)構(gòu)和工作原理2.1.3 編程方法2.2 RB端口2.2.1 與RB端口相關(guān)的寄存器2.2.2 電路結(jié)構(gòu)和工作原理2.2.3 編程方法2.3 RC端口2.3.1 與RC端口相關(guān)的寄存器2.3.2 電路結(jié)構(gòu)和工作原理2.3.3 編程方法2.4 RD端口2.4.1 與RD端口相關(guān)的寄存器2.4.2 電路結(jié)構(gòu)和工作原理2.4.3 編程方法2.5 RE端口2.5.1 與RE端口相關(guān)的寄存器2.5.2 電路結(jié)構(gòu)和工作原理2.5.3 編程方法2.6 PSP并行從動端口2.6.1 與PSP端口相關(guān)的寄存器2.6.2 電路結(jié)構(gòu)和工作原理2.7 應(yīng)用舉例思考題與練習(xí)題第3章 定時器/計數(shù)器TMR13.1 定時器/計數(shù)器TMR1模塊的特性3.2 定時器/計數(shù)器TMR1模塊相關(guān)的寄存器3.3 定時器/計數(shù)器TMR1模塊的電路結(jié)構(gòu)3.4 定時器/計數(shù)器TMR1模塊的工作原理3.4.1 禁止TMR1工作3.4.2 定時器工作方式3.4.3 計數(shù)器工作方式3.4.4 TMR1寄存器的賦值與復(fù)位3.5 定時器/計數(shù)器TMR1模塊的應(yīng)用舉例思考題與練習(xí)題第4章 定時器TMR24.1 定時器TMR2模塊的特性4.2 定時器TMR2模塊相關(guān)的寄存器4.3 定時器TMR2模塊的電路結(jié)構(gòu)4.4 定時器TMR2模塊的工作原理4.4.1 禁止TMR2工作4.4.2 定時器工作方式4.4.3 寄存器TMR2和PR2以及分頻器的復(fù)位4.4.4 TMR2模塊的初始化編程4.5 定時器TMR2模塊的應(yīng)用舉例思考題與練習(xí)題第5章 輸入捕捉/輸出比較/脈寬調(diào)制CCP5.1 輸入捕捉工作模式5.1.1 輸入捕捉摸式相關(guān)的寄存器5.1.2 輸入捕捉模式的電路結(jié)構(gòu)5.1.3 輸入捕捉摸式的工作原理5.1.4 輸入捕捉摸式的應(yīng)用舉例5.2 輸出比較工作模式5.2.1 輸出比較模式相關(guān)的寄存器5.2.2 輸出比較模式的電路結(jié)構(gòu)5.2.3 輸出比較模式的工作原理5.2.4 輸出比較模式的應(yīng)用舉例5.3 脈寬調(diào)制輸出工作模式5.3.1 脈寬調(diào)制模式相關(guān)的寄存器5.3.2 脈寬調(diào)制模式的電路結(jié)構(gòu)5.3.3 脈寬調(diào)制模式的工作原理5.3.4 脈定調(diào)制模式的應(yīng)用舉例5.4 兩個CCP模塊之間相互關(guān)系思考題與練習(xí)題第6章 模/數(shù)轉(zhuǎn)換器ADC6.1 背景知識6.1.1 ADC種類與特點6.1.2 ADC器件的工作原理6.2 PIC16F87X片內(nèi)ADC模塊6.2.1 ADC模塊相關(guān)的寄存器6.2.2 ADC模塊結(jié)構(gòu)和操作原理6.2.3 ADC模塊操作時間要求6.2.4 特殊情況下的A/D轉(zhuǎn)換6.2.5 ADC模塊的轉(zhuǎn)換精度和分辨率6.2.6 ADC模塊的內(nèi)部動作流程和傳遞函數(shù)6.2.7 ADC模塊的操作編程6.3 PIC16F87X片內(nèi)ADC模塊的應(yīng)用舉例思考題與練習(xí)題第7章 通用同步/異步收發(fā)器USART7.1 串行通信的基本概念7.1.1 串行通信的兩種基本方式7.1.2 串行通信中數(shù)據(jù)傳送方向7.1.3 串行通信中的控制方式7.1.4 串行通信中的碼型、編碼方式和幀結(jié)構(gòu)7.1.5 串行通信中的檢錯和糾錯方式7.1.6 串行通信組網(wǎng)方式7.1.7 串行通信接口電路和參數(shù)7.1.8 串行通信的傳輸速率7.2 PIC16F87X片內(nèi)通用同步/異步收發(fā)器USART模塊7.2.1 與USART模塊相關(guān)的寄存器7.2.2 USART波特率發(fā)生器BRG7.2.3 USART模塊的異步工作方式7.2.4 USART模塊的同步主控工作方式7.2.5 USART模塊的同步從動工作方式7.3 通用同步/異步收發(fā)器USART的應(yīng)用舉例思考題與練習(xí)題第8章 主控同步串行端口MSSP——SPI模式8.1 SPI接口的背景知識8.1.1 SPI接口信號描述8.1.2 基于SPI的系統(tǒng)構(gòu)成方式8.1.3 SPI接口工作原理8.1.4 兼容的MicroWire接口8.2 PIC16F87X的SPI接口8.2.1 SPI接口相關(guān)的寄存器8.2.2 SPI接口的結(jié)構(gòu)和操作原理8.2.3 SPI接口的主控方式8.2.4 SPI接口的從動方式8.3 SPI接口的應(yīng)用舉例思考題與練習(xí)題第9章 主控同步串行端口MSSP——I(平方)C模式9.1 I(平方)C總線的背景知識9.1.1 名詞術(shù)語9.1.2 I(平方)C總線的技術(shù)特點9.1.3 I(平方)C總線的基本工作原理9.1.4 I(平方)C總線信號時序分析9.1.5 信號傳送格式9.1.6 尋址約定9.1.7 技術(shù)參數(shù)9.1.8 I(平方)C器件與I(平方)C總線的接線方式9.1.9 相兼容的SMBus總線9.2 與I(平方)C總線相關(guān)的寄存器9.3 典型信號時序的產(chǎn)生方法9.3.1 波特率發(fā)生器9.3.2 啟動信號9.3.3 重啟動信號9.3.4 應(yīng)答信號9.3.5 停止信號9.4 被控器通信方式9.4.1 硬件結(jié)構(gòu)9.4.2 被主控器尋址9.4.3 被控器接收——被控接收器9.4.4 被控器發(fā)送——被控發(fā)送器9.4.5 廣播式尋址9.5 主控器通信方式9.5.1 硬件結(jié)構(gòu)9.5.2 主控器發(fā)送——主控發(fā)送器9.5.3 主控器接收——主控接收器9.6 多主通信方式下的總線沖突和總線仲裁9.6.1 發(fā)送和應(yīng)答過程中的總線沖突9.6.2 啟動過程中的總線沖突9.6.3 重啟動過程中的總線沖突9.6.4 停止過程中的總線沖突9.7 I(平方)C總線的應(yīng)用舉例思考題與練習(xí)題附錄A 包含文件P16F877.INC附錄B 新版宏匯編器MPASM偽指令總表參考文獻(xiàn)
上傳時間: 2013-12-14
上傳用戶:xiaoyuer
pic單片機(jī)實用教程以介紹PIC16F877型號單片機(jī)為主,并適當(dāng)兼顧PIC全系列,共分10章,內(nèi)容包括:基本概念;PIC16F87X硬件概況;指令系統(tǒng);匯編程序設(shè)計;集成開發(fā)環(huán)境;在線調(diào)試工具;I/O端口;定時器;中斷;安全措施和降耗設(shè)計。突出特點:通俗易懂、可讀性強(qiáng)、系統(tǒng)全面、學(xué)練結(jié)合、學(xué)用并重、實例豐富、習(xí)題齊全。本教程全書共分2篇,即基礎(chǔ)篇和提高篇,分2冊出版,以適應(yīng)不同課時和不同專業(yè)的需要,也為教師和讀者增加了一種可選方案。pic單片機(jī)實用教程目錄第1章 單片機(jī)的基本概念第2章 PIC16F87X硬件系統(tǒng)概況第3章 指令系統(tǒng)第4章 PIC匯編語言程序設(shè)計基礎(chǔ)第5章 MPLAB集成開發(fā)環(huán)境軟件包第6章 MPLAB-ICD在線調(diào)試工具套件及其應(yīng)用第7章 輸入/輸出端口的基本功能第8章 定時器/計數(shù)器TMR0第9章 中斷系統(tǒng)第10章 安全生產(chǎn)、可靠運行措施和降耗設(shè)計附錄
上傳時間: 2013-10-12
上傳用戶:lyson
九.輸入/輸出保護(hù)為了支持多任務(wù),80386不僅要有效地實現(xiàn)任務(wù)隔離,而且還要有效地控制各任務(wù)的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護(hù)。 這里下載本文源代碼。 <一>輸入/輸出保護(hù)80386采用I/O特權(quán)級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現(xiàn)輸入/輸出保護(hù)。 1.I/O敏感指令輸入輸出特權(quán)級(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問I/O空間中所有地址的最外層特權(quán)級。IOPL的值在如下圖所示的標(biāo)志寄存器中。 標(biāo) 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權(quán)級執(zhí)行的程序所訪問。I/O許可位圖在任務(wù)狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護(hù)方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設(shè)置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿足所列條件時才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見,當(dāng)前特權(quán)級不在I/O特權(quán)級外層時,可以正常執(zhí)行所列的全部I/O敏感指令;當(dāng)特權(quán)級在I/O特權(quán)級外層時,執(zhí)行CLI和STI指令將引起通用保護(hù)異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執(zhí)行,那么將引起出錯碼為0的通用保護(hù)異常。 由于每個任務(wù)使用各自的EFLAGS值和擁有自己的TSS,所以每個任務(wù)可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權(quán)級3執(zhí)行的應(yīng)用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務(wù)甲的應(yīng)用程序訪問部分I/O地址,只允許任務(wù)乙的應(yīng)用程序訪問另一部分I/O地址,以避免任務(wù)甲和任務(wù)乙在訪問I/O地址時發(fā)生沖突,從而避免任務(wù)甲和任務(wù)乙使用使用獨享設(shè)備時發(fā)生沖突。 因此,在IOPL的基礎(chǔ)上又采用了I/O許可位圖。I/O許可位圖由二進(jìn)制位串組成。位串中的每一位依次對應(yīng)一個I/O地址,位串的第0位對應(yīng)I/O地址0,位串的第n位對應(yīng)I/O地址n。如果位串中的第位為0,那么對應(yīng)的I/O地址m可以由在任何特權(quán)級執(zhí)行的程序訪問;否則對應(yīng)的I/O地址m只能由在IOPL特權(quán)級或更內(nèi)層特權(quán)級執(zhí)行的程序訪問。如果在I/O外層特權(quán)級執(zhí)行的程序訪問位串中位值為1的位所對應(yīng)的I/O地址,那么將引起通用保護(hù)異常。 I/O地址空間按字節(jié)進(jìn)行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據(jù)I/O位圖決定是否可訪問I/O地址的情況下,當(dāng)一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應(yīng)的I/O許可位圖中的位都為0時,該I/O指令才能被正常執(zhí)行,如果對應(yīng)位中任一位為1,就會引起通用保護(hù)異常。 80386支持的I/O地址空間大小是64K,所以構(gòu)成I/O許可位圖的二進(jìn)制位串最大長度是64K個位,即位圖的有效部分最大為8K字節(jié)。一個任務(wù)實際需要使用的I/O許可位圖大小通常要遠(yuǎn)小于這個數(shù)目。 當(dāng)前任務(wù)使用的I/O許可位圖存儲在當(dāng)前任務(wù)TSS中低端的64K字節(jié)內(nèi)。I/O許可位圖總以字節(jié)為單位存儲,所以位串所含的位數(shù)總被認(rèn)為是8的倍數(shù)。從前文中所述的TSS格式可見,TSS內(nèi)偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達(dá)8K字節(jié),所以開始偏移應(yīng)小于56K,但必須大于等于104,因為TSS中前104字節(jié)為TSS的固定格式,用于保存任務(wù)的狀態(tài)。 1.I/O訪問許可檢查細(xì)節(jié)保護(hù)模式下處理器在執(zhí)行I/O指令時進(jìn)行許可檢查的細(xì)節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應(yīng)位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應(yīng)位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯碼為0的通用保護(hù)故障;(6)若不越界,則從位圖中讀對應(yīng)字節(jié)及下一個字節(jié);(7)把讀出的兩個字節(jié)與屏蔽碼進(jìn)行與運算,若結(jié)果不為0表示檢查未通過,則產(chǎn)生出錯碼為0的通用保護(hù)故障;(8)進(jìn)行I/O訪問。設(shè)某一任務(wù)的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對應(yīng)I/O端口00H—3FH DB 10000000B ;對應(yīng)I/O端口40H—47H DB 01100000B ;對用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對應(yīng)I/O端口50H—0FFFFH DB 0FFH ;位圖結(jié)束字節(jié)TSSLen = $TSSSEG ENDS 再假設(shè)IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會引起通用保護(hù)異常: in al,21h ;(1)正常執(zhí)行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執(zhí)行 out 20h,eax ;(6)正常執(zhí)行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細(xì)節(jié)可見,不論是否必要,當(dāng)進(jìn)行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節(jié)。例如,上面的第(8)條指令要對I/O位圖中的兩個位進(jìn)行檢查,其低位是某個字節(jié)的最高位,高位是下一個字節(jié)的最低位。可見即使只要檢查兩個位,也可能需要讀取兩個字節(jié)。另一方面,最多檢查四個連續(xù)的位,即最多也只需讀取兩個字節(jié)。所以每次要讀取兩個字節(jié)。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時產(chǎn)生越界,必須在I/O許可位圖的最后填加一個全1的字節(jié),即0FFH。此全1的字節(jié)應(yīng)填加在最后一個位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內(nèi)。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當(dāng)TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進(jìn)行。當(dāng)TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節(jié),于是對較小I/O地址訪問的許可檢查根據(jù)位圖進(jìn)行,而對較大I/O地址訪問的許可檢查總被認(rèn)為不可訪問而引起通用保護(hù)故障。因為這時會發(fā)生字節(jié)越界而引起通用保護(hù)異常,所以在這種情況下,可認(rèn)為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節(jié)約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標(biāo)志保護(hù)輸入輸出的保護(hù)與存儲在標(biāo)志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實現(xiàn)輸入輸出保護(hù)。類似地,對EFLAGS中的IF位也必須加以保護(hù),否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權(quán)級執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權(quán)級下對這三個字段的處理情況。 不同特權(quán)級對標(biāo)志寄存器特殊字段的處理 特權(quán)級 VM標(biāo)志字段 IOPL標(biāo)志字段 IF標(biāo)志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權(quán)級0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內(nèi)層特權(quán)級執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權(quán)級不滿足上述條件的情況下,當(dāng)執(zhí)行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標(biāo)志中的VM位總為0。 <三>演示輸入輸出保護(hù)的實例(實例九)下面給出一個用于演示輸入輸出保護(hù)的實例。演示內(nèi)容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權(quán)指令引起的異常;使用段間調(diào)用指令CALL通過任務(wù)門調(diào)用任務(wù),實現(xiàn)任務(wù)嵌套。 1.演示步驟實例演示的內(nèi)容比較豐富,具體演示步驟如下:(1)在實模式下做必要準(zhǔn)備后,切換到保護(hù)模式;(2)進(jìn)入保護(hù)模式的臨時代碼段后,把演示任務(wù)的TSS段描述符裝入TR,并設(shè)置演示任務(wù)的堆棧;(3)進(jìn)入演示代碼段,演示代碼段的特權(quán)級是0;(4)通過任務(wù)門調(diào)用測試任務(wù)1。測試任務(wù)1能夠順利進(jìn)行;(5)通過任務(wù)門調(diào)用測試任務(wù)2。測試任務(wù)2演示由于違反I/O許可位圖規(guī)定而導(dǎo)致通用保護(hù)異常;(6)通過任務(wù)門調(diào)用測試任務(wù)3。測試任務(wù)3演示I/O敏感指令如何引起通用保護(hù)異常;(7)通過任務(wù)門調(diào)用測試任務(wù)4。測試任務(wù)4演示特權(quán)指令如何引起通用保護(hù)異常;(8)從演示代碼轉(zhuǎn)臨時代碼,準(zhǔn)備返回實模式;(9)返回實模式,并作結(jié)束處理。
上傳時間: 2013-12-11
上傳用戶:nunnzhy
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1