PIC單片機原理及應用 - Microchip and PIC_第1頁
PIC單片機原理及應用 - Microchip and PIC_第2頁
PIC單片機原理及應用 - Microchip and PIC_第3頁
PIC單片機原理及應用 - Microchip and PIC_第4頁
PIC單片機原理及應用 - Microchip and PIC_第5頁
已閱讀5頁,還剩311頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PIC單片機原理及應用(第二版)美國微芯公司授權上海技術培訓中心2005.01PIC上海技術培訓中心1第1章微型計算機概論 微型計算機是一種既有快速運算能力,又有極強邏輯判斷能力和大容量存儲功能的電子設備,它是20世紀人類最卓越的科學創(chuàng)造之一。 本章介紹微型計算機的根底知識,主要內容有微型計算機的開展歷史及應用領域、計算機硬件、軟件系統(tǒng)的根本組成。 PIC上海技術培訓中心2 1.1 微型計算機的開展歷史及應用 我們今天所說的計算機,是指利用電子技術實現計算并具有邏輯判斷和程序存儲功能的設備。 PIC上海技術培訓中心3 1.1.1 微型計算機的開展歷史 從計算機開展的歷史看,微型計算機已屬于第四

2、代計算機,而微型計算機的開展又已經歷了四代。 PIC上海技術培訓中心4 1.1.2 微型計算機的應用 科學計算 數據處理 過程控制 計算機輔助設計/輔助制造 (CAD/CAM) 計算機網絡 PIC上海技術培訓中心51.1.3 微型計算機系統(tǒng)主要技術指標 字長 :計算機的字長取8的整數倍數, 如8位、16位、32位、64位等 速度 :計算機的速度指標可用主頻及運算 速度來評價 G、萬次/秒存儲系統(tǒng)容量 :內存和外存MGPIC上海技術培訓中心6 1.2 微型計算機系統(tǒng)的組成 計算機的硬件通常包括運算器、存儲器、控制器、輸入設備及輸出設備等五個局部 PIC上海技術培訓中心7 1.2.2 軟件系統(tǒng) 軟

3、件系統(tǒng)是一臺計算機中的系統(tǒng)軟件、應用軟件、程序設計語言和支持軟件及各種文檔的總稱。 系統(tǒng)軟件:包括操作系統(tǒng)、效勞程序、匯編程序、解釋程序和編譯程序等。 應用軟件:是用匯編語言或高級語言為解決某種實際問題而編寫的程序。 程序設計語言:通常分為面向機器的匯編語言和面向用戶的高級語言。 PIC上海技術培訓中心8 1.3 微控制器系統(tǒng) 在計算機的開展歷史上,特別是在第一臺小型控制器件形成以后,沿著兩條完全不同的用途、不同的價格、和不同的技術內涵,而被充實于我們的日常生活中。 PIC上海技術培訓中心9 1.3.1 單片機系統(tǒng) 單片機的開展過程和性能的日益完善,實際上是對傳統(tǒng)控制技術的一場革命,開創(chuàng)了微控

4、技術的新天地。 現代控制系統(tǒng)的核心內涵就是嵌入式計算機應用系統(tǒng)MCU,而單片機就是最典型、最廣泛、最普及的嵌入式計算機應用系統(tǒng)。 PIC上海技術培訓中心10單片機的降臨,主要也是源于其性能價格比。一般單片機用于控制的目的,而對于其承擔的計算功能卻要求不高,只要能按照一定的程式進行在線檢測和即時控制工作。目前,各個單片機生產廠家還是立足于8位單片機的競爭,因為從其降臨以來,一直成為應用最廣泛的器件。2002年美國MICROCHIP和MOTOROLA兩家公司,已占據著世界8位單片機產量最高的前兩個芯片制造商。PIC上海技術培訓中心11 一般的單片機的結構可以用圖1.2所示的方塊圖描述,用三大總線D

5、B、AB、CB實現模塊之間的信息傳遞。單片機內部結構PIC上海技術培訓中心12 單片機的主要應用 人有所思,單片機就可為。單片機的應用必將隨著社會的開展和技術的進步,而獲得更廣闊應用。系列化的單片機 ?電信家用電器工業(yè)控制儀器儀表汽車玩具PIC上海技術培訓中心13 單片機有哪些特點 單片機具備體積小、價格低、性能強、速度快、用途廣、可靠性高、靈活性強等優(yōu)點,它與通用的計算機相比,還具有以下一些特點:存儲器ROM和RAM的相互獨立采用面向控制的指令系統(tǒng)輸入/輸出端口的強大功能PIC上海技術培訓中心14 1.3.2 PIC系列單片機 PIC系列單片機,可以滿足用戶的各種需要。從中檔產品PIC16F

6、877作為切入點,提供非常完備、易學易用的MPLAB-ICD集成開發(fā)環(huán)境。 特別是對于單片機的新手,仿佛從茫然迷惑的大海搭上一艘便捷平穩(wěn)的小船,感到非常輕松自如。 PIC上海技術培訓中心15 第2章 PIC單片微機的組成 PICPeriphery Interface Chip單片微機是美國Microchip公司生產的PIC系列單片機。 PIC系列單片機的硬件系統(tǒng)設計簡潔,指令系統(tǒng)設計精煉。在所有的單片機品種中,PIC具有性能完善、功能強大、學習容易、開發(fā)應用方便、人機界面友好等突出優(yōu)點。 PIC上海技術培訓中心16 2.1 PIC系列單片機概述 Microchip公司是一家專門致力于單片機開發(fā)

7、、研制和生產的制造商,其產品設計起點高,技術領先,性能優(yōu)越。 它不是在一般微型計算機CPU的根底上加以改造,而是獨樹一幟,采用全新的流水線結構、單字節(jié)指令體系、嵌入閃存以及10位A/D轉換器,使之具有卓越的性能,代表著單片機開展的新方向。 PIC系列單片機,具有高、中、低三個檔次,可以滿足不同用戶開發(fā)的需要,適合在各個領域中的應用。 它具有如下特點: 2.1.1 PIC系列單片機特點PIC上海技術培訓中心17單片機總線結構 單片微型計算機通常采用兩種體系結構:一種是普林斯頓體系結構;另一種是哈佛體系結構。 在普林斯頓體系結構中,其程序存儲器和數據存儲器統(tǒng)一編址,也就是說兩種存儲器位于同一邏輯空

8、間。這種單片機的取指令和存取數據必須分時地進行,影響了執(zhí)行指令的速度。 哈佛體系結構的程序存儲器和數據存儲器獨立編址,也就是說兩種存儲器有不同的邏輯空間。 PIC上海技術培訓中心18 PIC系列單片機采用哈佛總線結構,在芯片內部數據總線和指令總線別離,容許采用不同的字節(jié)寬度。這樣,就為實現指令提取和執(zhí)行的“流水作業(yè)提供結構保證,即在執(zhí)行一條指令的同時對下一條指令進行取指操作。 兩總線的別離,也為PIC實現全部指令的單字節(jié)化和單周期化創(chuàng)造條件,從而大大提高CPU執(zhí)行指令的速度和工作效率。1. 哈佛總線結構 PIC上海技術培訓中心19單片機總線結構比較 從同一存儲器空間取指令和取操作數據。 限制了

9、數據流量。 從兩個獨立的存儲空間分別取指令和存取操作數。 數據流量增加。 針對程序區(qū)和數據區(qū)可以設計不同的數據線寬度。程序和數據存儲器馮-紐曼結構8-位CPU程序存儲器數據存儲器8-位12/14/16-位哈佛結構CPUPIC上海技術培訓中心20 PIC系列單片機的指令系統(tǒng),由于采用RISC技術,和一般單片機指令系統(tǒng)通常有上百條指令相比要少得多。 2RISC技術 PIC上海技術培訓中心21 PIC系列單片機只有4種尋址方式:存放器間接尋址、立即數尋址、直接尋址和位尋址,比較容易掌握。 PIC系列單片機的程序、數據、堆棧三者各自采用互相獨立的地址空間,前兩者的地址訪問需要用戶特別注意四個分區(qū)的范圍

10、,而堆棧過程用戶不必參與和操心。 代碼壓縮率,就是指相同程序存儲器空間所能容納有效指令的數量。3指令特色 PIC上海技術培訓中心22 由于PIC系列單片機采用CMOS結構,使其功率消耗極低,是目前世界上最低功耗的單片機品種之一。 其中有些型號,在4MHz時鐘下工作時耗電不超過2mA,而在睡眠模式下耗電可低到1A以下。 因此,PIC系列單片機,尤其適用于野外移動儀表的控制以及戶外免維護的控制系統(tǒng)。 5功耗低 PIC上海技術培訓中心23 I/0端口驅動負載的能力較強,每個輸出引腳可以驅動多達20-25mA的負載,既能夠高電平直接驅動發(fā)光二極管LED、光電藕合器、小型繼電器等,也可以低電平直接驅動,

11、這樣可大大簡化控制電路。 不過,請讀者注意,每個引腳的驅動能力并不表示端口引腳同時都具有這樣的成效。一般端口驅動能力約60-70mA,而所有輸入輸出驅動小于200mA,詳細數據可參考有關數據手冊。 6驅動能力強 PIC上海技術培訓中心24 PIC主要是采用哈佛總線結構,可以同時進行指令讀取和指令執(zhí)行的流水線作業(yè)方式。 如:MCS-51 12M,指令執(zhí)行時間為1s4s PIC 12M時鐘周期,指令執(zhí)行時間為0.30.6s 7運行速度高PIC上海技術培訓中心25 PIC系列單片機的一些型號具有同步串行口,可以滿足I2C主控/從動和SPI主控總線要求。I2C和SPISerial Peripheral

12、 Interface分別是PHILIPS公司和MOTOROLA公司研制的兩種廣泛流行的串行總線標準,是一種在芯片之間實現同步串行數據傳輸的技術。 利用單片機串行總線端口可以方便而靈活地擴展外圍器件,目前已在許多電子產品中得到廣泛應用。 8同步串行數據傳送方式 PIC上海技術培訓中心26 2.1.2 PIC16F877的結構 從其執(zhí)行功能考慮,可以將單片機分成兩大組件,即根本功能模塊和專用功能模塊。PIC上海技術培訓中心27 PIC上海技術培訓中心28 PICl6F87X系列單片機有雙列直插式28引腳和40引腳及外表貼裝式44引腳等幾種封裝形式。 多數I/O引腳都設計有第2功能,甚至第3功能。采

13、用引腳復用技術,以便使單片機增加功能而又不增大體積和引腳數量。 2.1.3 PIC16F877的引腳 PIC上海技術培訓中心29PIC上海技術培訓中心30 F877單片機內部配置了較完善的多個存儲器,可分為數據存儲器和程序存儲器兩種,為一般用戶提供很大的方便。 但它們在形式上,具有很豐富的內涵。 2.2 存儲器概述 PIC上海技術培訓中心31 F877單片機內部配置了8K l4位的閃爍FLASH程序存儲器,可以很方便進行在線擦除和燒寫,壽命可達1000次以上。 在PIC系列單片機教學實驗和科研開發(fā)中,顯示出無窮的魅力和寬廣的應用前景。 相應的地址編碼范圍為0000HlFFFH。 2.2.1 程

14、序存儲器 PIC上海技術培訓中心32程序存儲器結構 PIC上海技術培訓中心33 F877單片機內部配置兩類數據存儲器,普通RAM數據存儲器和EEPROM失電保持數據存儲器。 RAM總的地址空間為512個單元,其中包括局部無效單元,但每一個有效單位均可以象存放器一樣進行移位、置位、復位和位測試等操作。 PIC單片機的數據存儲器和其他單片機一樣,在配置結構上可分為通用存放器和特殊功能存放器兩大類,前者給用戶使用,而后者通常定義給某些功能模塊,是一種具有特殊目的的功能存放器。 2.2.2 數據存儲器 PIC上海技術培訓中心34 同時在PIC16F877片內又配置另一種可掉電保護的數據存儲器EEPRO

15、M,共有2568位寬的存儲單元,可以長期存放用戶或系統(tǒng)的重要參數:如時間、配置及數據表格等,是一種非常重要的硬件資源。PIC上海技術培訓中心35數據存儲器單元功能分配 體BANK0 體BANK1 體BANK2 體BANK3 PIC上海技術培訓中心36 存儲器是單片機中一個非常重要的部件,專門用于存放指令、數據和運算結果。 分析F877單片機存儲器構架,可以從其配置的三大模塊著手進行,它們是: 8K l4位FLASH程序存儲器 5128位數據存儲器RAM 2568位可掉電保護數據的EEPROM存儲器模塊。 第3章 PIC存儲器 PIC上海技術培訓中心37 存儲器從使用功能上來分,可分為隨機存儲器

16、RAMRandom Access Memory和只讀存儲器ROMRead Only Memory兩類。 3.1 存儲器分類 PIC上海技術培訓中心38 F877程序存儲器具有13位寬的程序計數器PC。PC指針所產生的13位地址最大可尋址的程序存儲器空間為8K,相應的地址編碼范圍為0000HlFFFH。 F877歸屬于中檔單片機,其指令字節(jié)寬度為14位,內部構架配置了8K l4位的閃爍FLASH程序存儲器。 3.2 程序存儲器構架 PIC上海技術培訓中心39 一般將整個程序存儲器以2KB為單位進行分頁PAGE,如圖3-1所示F877單片機,8KB程序存儲器共分作4頁,分別稱為“頁0、“頁l、“頁

17、2和“頁3。 程序計數器高8位PCLATH的Bit4-Bit3位構成程序存儲器分頁的選擇位,對應的地址空間如下: PCLATH Bit4:Bit3: 0 0 頁0:0000H 07FFH 0 1 頁l:0800H 0FFFH 1 0 頁2:1000H 17FFH 1 1 頁3:1800H 1FFFHPIC上海技術培訓中心40PIC上海技術培訓中心41PIC上海技術培訓中心42PIC16F877 單片機架構程序存儲器最大8K字(13 位) 程序存儲空間程序空間按頁面劃分,每頁2K字 (11 位);最多四頁。頁面選擇 PCLATH復位向量地址 0000h中斷向量地址 0004hPage 00000

18、h0004h07FFhInterruptResetPage 10800h0FFFhPage 21000h17FFhPage 31800h1FFFhPCLATH = 00PCLATH = 01PCLATH = 10PCLATH = 11PIC上海技術培訓中心43 程序存儲器中有2個單元地址比較特殊,除了具備同其他單元地址一樣的普通用途外,還具有專門用途: 0000H:用作單片機系統(tǒng)的復位矢量; 0004H:用作系統(tǒng)特殊模塊的中斷矢量。 復位矢量中斷矢量PIC上海技術培訓中心44 F877用于存儲數據的RAM單元比一般單片機RAM的功能要強大得多,它除了具備普通RAM的功能之外,每一個單元都能實現

19、移位、置位、復位和位測試等通常由存放器才能完成的功能操作。 3.3 數據存儲器構架 PIC上海技術培訓中心45 RAM數據存儲器和FLASH程序存儲器一樣在空間構架上,進行類似方式進行分區(qū)。按橫向排列,分為4個“體BANK,從左到右分別記為“體0、“體1、“體2和“體3,每個體為128個8位寬的存儲器單元。 RP1:RP0 體域 存放器地址 0 0 體0: 000H 07FH 0 1 體1: 080H 0FFH 1 0 體2: 100H l7FH 1 1 體3: 180H lFFH 數據存儲器分區(qū)PIC上海技術培訓中心46數據存儲器四個存儲體每個 128 字節(jié)特殊功能存放器存儲體選擇通過 St

20、atus中的 RP0,1 和 IRP512單元368有效GPRGPRsSFRsBank0000h01Fh020h07FhGPRsSFRsBank1080h09Fh0A0h0FFh0F0hGPRsSFRsBank2100h11Fh120h17Fh170hGPRsSFRsBank3180h19Fh1A0h1FFh1F0hRP RP RP RP = 00 = 01 = 10 = 11PIC上海技術培訓中心47PIC上海技術培訓中心48 有些存放器單元在4個體上是互相映射的,如狀態(tài)存放器STATUS、間接尋址存放器INDF、程序計數器低8位PCL、文件選擇存放器FSR、程序計數器高8位PCLATH和中

21、斷控制存放器INTCON。 所謂互為映射就是說,在4個體內的相同位置,物理上對應同一個存放器單元,所以該單元具備4個不同的地址。 互相映射PIC上海技術培訓中心49 F877單片機的通用存放器GPRGeneral Purpose Registers,可由用戶自行支配存放隨機數據。 地址區(qū)域:F0HFFH、170Hl7FH和1F0H1FFH,都可以索引或映射到體0的16個RAM單元。 這樣安排是為了便于中斷效勞程序的設計和數據處理,就可以在程序設計中能夠有效突破體的限制而定義通用的變量函數 3.3.1 通用存放器 PIC上海技術培訓中心50 特殊功能存放器SFRSpecial Function

22、Registers是用于專用目的的存放器,每個存放器單元,甚至其中的每一位,都有它自己特定的名稱和用途。 主要涉及PIC內核結構、外圍功能模塊的配置和數據通信方式的定義,是單片機賴于正常運行的工作平臺。所以,特殊功能存放器又稱為專用存放器。 可以依據它們不同的用途分為兩類:一類是與CPU內核相關的存放器;另一類是與外圍模塊相關的存放器。 3.3.2 特殊功能存放器 PIC上海技術培訓中心51 狀態(tài)存放器的內容用來記錄算術邏輯單元ALU的運算結果狀態(tài)、CPU的特殊運行狀態(tài)以及RAM數據存儲器體間選擇等信息。 1狀態(tài)存放器STATUS PIC上海技術培訓中心52Bit0C:進位/借位標志,被動參數

23、。 0:執(zhí)行加法或減法指令時,如果最高位無進位或有借位; 1:執(zhí)行加法或減法指令時,如果最高位有進位或無借位。 Bit1DC:輔助進位/借位標志,被動參數。 0:執(zhí)行加法或減法指令時,如果低4位向高4位無進位或有借位; 1:執(zhí)行加法或減法指令時,如果低4位向高4位有進位或無借位。Bit2Z:零標志,被動參數。 0:算術或邏輯運算結果不為0; 1:算術或邏輯運算結果為全0。 狀態(tài)標志位 PIC上海技術培訓中心53 Bit6-Bit5RP1-RP0:RAM數據存儲器體選位,僅用于直接尋址。 兩位復合選擇RAM數據存儲器4個體,具體關系如下: RP1、RP0 = 0 0 選中體0 RP1、RP0 =

24、 0 1 選中體1 RP1、RP0 = 1 0 選中體2 RP1、RP0 = 1 1 選中體3 Bit7IRP:RAM數據存儲器體選位,僅用于間接尋址。 0:選擇數據存儲器低位體: 即體0FSR的Bit7=0或體1FSR的Bit7=1;1: 選擇數據存儲器高位體: 即體2FSR的Bit7=0或體3FSR的Bit7=1。 數據存儲器體選位 PIC上海技術培訓中心54 在RAM數據存儲器中,有一個非常特別的存放器INDF它的專有功能是與FSR存放器配合,實現間接尋址。 當訪問地址INDF時,實際上是訪問以FSR內容為地址的數據存儲器RAM單元。 2間接尋址的存放器INDF和FSR PIC上海技術培

25、訓中心55 在直接尋址中,體選碼來自狀態(tài)存放器STATUS的RP1和RPO位,體內的單元地址直接來自指令機器碼。而在間接尋址中,體選碼由STATUS的IRP位和FSR存放器的BIT7組成 直接尋址/間接尋址方式的示意圖 PIC上海技術培訓中心56 程序計數器PC指針寬13位,它的內容指向CPU將要執(zhí)行的下一條指令所在程序存儲器單元的地址。 低8位PCL有自己的地址,可讀可寫;而高5位PCH和其它單片機不一樣,即沒有自己的地址,不能用軟件訪問,也就不能直接寫人,只能用存放器PCLATH裝載的方式進行間接寫人。 3與PC相關的存放器PCL和PCLATH PIC上海技術培訓中心57兩種情況下PC值的

26、裝入過程 PCLATH對于高5位PCH的裝載分兩種情況: 一種情況是當執(zhí)行以PCL為目標的寫操作指令時,PC的低8位來自算術邏輯單元ALU,PC的高5位來自PCLATH的低5位; 另一種情況是當執(zhí)行跳轉指令GOTO或調用子程序指令CALL時,PC的低11位來自指令碼中直接攜帶的11位地址,高2位由PCLATH3-4提供。 PIC上海技術培訓中心58程序存儲器: PC 絕對尋址OP CODEkkkk14-位 call 和goto指令kkkkkkk 通過 CALL 和 GOTO修改 PC (程序指針)kkkkkkkkkxxxkkxxxPCLATH存放器有效的 13-位程序存儲器地址11-位 來自指

27、令2-位來自PCLATHkkkkPIC上海技術培訓中心59PCH PCL 13-位程序指針PCLATH 內部數據總線 558movlwHIGH DelaymovwfPCLATHmovlwLOW DelaymovwfPCL *對于讀PC值時: 僅從PCL讀低8位值, PCH不會被載入到PCLATH程序存儲器: PC 相對尋址PIC上海技術培訓中心60 主要用于設置定時/計數器TMR0、前后分頻器、外部INT中斷以及B端口的弱上拉功能等各種控制位。 4選項存放器OPTION_REG PIC上海技術培訓中心61Bit2-Bit0PS2-PS0:分頻器倍率選擇位 PIC上海技術培訓中心62Bit3PS

28、A:前后分頻器分配位,主動參數。0: 分配給TMR0,作為TMR0的前分頻器;1: 分配給WDT,作為WDT的后分頻器。Bit4T0SE:TMR0用于計數器,計數脈沖信號邊沿選擇位,主動參數。0: RA4/T0CKI引腳上的上升沿增量;1: RA4/T0CKI引腳上的下降沿增量。Bit5T0CS:定時/計數器TMR0時鐘源選擇位,主動參數。0: 用內部指令周期時鐘CLKOUT作為TMR0的觸發(fā)脈沖;1: 用T0CKI引腳上的外部時鐘作為TMR0的觸發(fā)脈沖。Bit6INTEDG:INT中斷信號觸發(fā)邊沿選擇位,主動參數。0: BR0/INT引腳上的上升沿觸發(fā);1: BR0/INT引腳上的下降沿觸發(fā)

29、。Bit7RBPU:B端口弱上拉使能位,主動參數。0: RB0-RB7引腳弱上拉使能;1: RB0-RB7引腳弱上拉不使能。 PIC上海技術培訓中心63 主要用于中斷控制方式的設置。5中斷控制存放器INTCONPIC上海技術培訓中心64端口存放器PORTA BCDE端口I/O定義存放器TRISA BCDEDi = 0 定義為輸出狀態(tài)Di = 1 定義為輸入狀態(tài) 6端口存放器PIC上海技術培訓中心65 指令是單片機的領導核心,就是指揮CPU按要求進行一系列操作的命令。一般來說,單片機都具有自己特有的指令系統(tǒng),相互之間大都互不兼容。 PIC單片機系列按照不同用戶的要求分成三個不同的應用檔次。 第4

30、章 PIC指令系統(tǒng) PIC上海技術培訓中心66 指令的執(zhí)行時間總是分解成兩局部:取指過程和執(zhí)行過程,取指的快慢直接與指令的字節(jié)數有關,而指令的執(zhí)行快慢與時鐘的振蕩頻率有關。 在以往的單片機結構中,程序存儲器和數據存儲器的地址空間和數據傳輸通道都相互并用,必須采用分時操作順序執(zhí)行。 而PIC單片機指令的執(zhí)行過程是遵循著一種全新哈佛總線體系結構的原那么,充分利用計算機系統(tǒng)在程序存儲器和數據存儲器之間地址空間的相互獨立性,取指過程和執(zhí)行程序可以流水線操作同時進行。 4.1 指令流水線操作原那么 PIC上海技術培訓中心67Flush Fetch 4Fetch SUB_1 Tcy0 Tcy1 Tcy2

31、Tcy3 Tcy4 PIC單片機指令流水線示意Execute 1Fetch 31. MOVLW 55h Fetch 1Execute 3Fetch 2Execute 2 Fetch 42. MOVWF PORTB3. CALL SUB_14. BSF PORTA, BIT3PIC上海技術培訓中心68 在這種尋址方式中,操作數或其中之一另一個是W是立即數, 隨指令碼攜帶,而無需再到其他地方去尋找。指令中的操作數為8-位常數.使用立即數尋址方式的指令有: movlw, addlw, retlw, etc. 如: ADDLW16H指令尋址方式說明 1.存放器立即尋址14-位 立即尋址指令OP COD

32、EkkkkkkkkPIC上海技術培訓中心692.存放器直接尋址7-位 直接從指令中獲取2-位從STATUS 存放器中獲取如:IORWF26H,09-位 有效寄存器地址IRPRP1RP0OP CODETOPDZDCCSTATUS 寄存器14-位指令fffffffRP1RP0fffffff7-位來自指令字2-位來自STATUS 寄存器PIC上海技術培訓中心703.存放器間接尋址8-位 間接地址來自 FSR (選擇存放器).1-位 來自 STATUS 存放器. 例如:MOVWF INDFIRPfffffffffIRPRP1RP0TOPDZDCCfffffffSTATUS 寄存器8-位 FSR 寄存器

33、有效的 9-位寄存器地址8-位來自 FSR1-位來自STATUS 寄存器 這是一種比較特別的尋址方式,是通過兩個存放器INDF和FSR的組合而實現功能的。操作數是FSR存放器內容位指針,所指向存放器單元的內容。 PIC上海技術培訓中心71間接尋址實例運行機制: a 清從0 x20 to 0 x7F所有的RAM區(qū)域 b間接地址載入FSR c 每一次對INDF運行,由FSR指向的存放器被使用 例子:movlw0 x20movwfFSRLOOPclrfINDFincfFSR,FbtfssFSR,7gotoLOOP0000 00000000 0000FSR = 20hINDF00h04h20h7Fh數

34、據記憶區(qū)PIC上海技術培訓中心72 這是PIC單片機的特色之一,它可以對所有的RAM數據存儲器進行位尋址,即置位和清零等。 如:BSF 26H,4;26H原為26H 4.位尋址PIC上海技術培訓中心73 每條指令的字節(jié)長度為14位,主要由說明指令功能的操作碼和參與指令處理的操作數組成。 操作碼局部,簡稱助記符,如表4-2核心助記符,是借用英語單詞來間接表達和定義其操作功能。 操作數局部,是按照操作碼的操作功能,對操作數進行處理。 根據操作數的源地址和目標地址的訪問性質,可以有多種表現形式:主要有直接尋址、間接尋址、立即尋址和位尋址四類。 4.2 指令集說明 PIC上海技術培訓中心74核心助記符

35、 PIC上海技術培訓中心75指令系統(tǒng)補充字符說明 PIC上海技術培訓中心76 數據傳送類指令共有4條指令,主要功能是將數據從源地址或立即數傳送至目標地址中。 4.2.1 數據傳送類指令 PIC上海技術培訓中心77 【例題4-1】 請利用數據傳送類指令編寫一段子程序,將立即數20H傳送到通用存放器20H中。 【例題4-2】 請利用數據傳送類指令編寫一段子程序,將通用存放器20H和30H中的內容進行交換。 PIC上海技術培訓中心78 算術運算類指令是PIC單片機指令系統(tǒng)中,承擔運算功能的重要局部,共有6條指令。主要有加減指令、增量和減量指令 4.2.2 算術運算類指令 PIC上海技術培訓中心79

36、【例題4-3】 請將通用存放器20H、30H構成的16位數據與通用存放器40H、50H構成的16位數據相加后放入40H、50H 中,其和不會超出65535。 PIC上海技術培訓中心80 邏輯運算類指令是一組比較復雜的指令,形式較多,可以對位和字節(jié)進行邏輯操作。主要有與、或、異或、清零、置位、取反和左右移位等14條指令 4.2.3 邏輯運算類指令 PIC上海技術培訓中心81 【例題4-4】 請將數據存儲器20H和30H中的數據分別與立即數20H、30H相與和相或后相加,結果放入40H存儲器中,請編寫相應的程序。 【例題4-5】 請編寫一個完整的程序,將數據存儲器20H低4位和30H高4位組合成一

37、個八位二進制數據,并從RC端口輸出。 PIC上海技術培訓中心82 控制轉移類指令,是在指令系統(tǒng)中形式靈活、功能較強的一組指令,共11條。它們是構成程序循環(huán)和跳轉的關鍵要素,一般可以分為有條件跳轉和無條件跳轉兩大類。 4.2.4 控制轉移類指令 PIC上海技術培訓中心83 這是一種比較特殊的轉移形式,根據位測試或加減1后的內容判斷條件的成立與否,而決定程序繼續(xù)執(zhí)行還是間跳執(zhí)行指令。 當前判斷語句A下一條語句B 再下一條語句C1.相對轉移間跳 PIC上海技術培訓中心84 PIC指令系統(tǒng)的絕對轉移,主要由CALL和GOTO語句引出。在指令機器碼內部本身并沒有攜帶完整的轉移目標地址,只包含低11位地址

38、,而高2位將由PCLATH存放器給出。 【例題4-6】 請將通用存放器單元20H-2FH,分別對應賦值20H-2FH,請編寫相應的軟件程序。 2.絕對轉移和調用 PIC上海技術培訓中心85 【例題4-7】 請分析以下程序片段,并指出當程序執(zhí)行完后,涉及到的所有存儲器單元的結果。 MOVLW22HMOVWF22HMOVWFFSRADDWFINDF,FINCFINDFSWAPF22H,WRLF22H,WDECFFSR,FMOVWFINDFBSFINDF,7【例題4-6】編寫散轉指令程序 PIC上海技術培訓中心86 Microchip公司為PIC系列單片機配備了功能強大、基于Windows、易學易用

39、的軟件集成開發(fā)環(huán)境MPLAB。 該開發(fā)環(huán)境可以使人們在自己的微機系統(tǒng)上,對PIC系列單片機進行程序的創(chuàng)立、錄入、編輯以及匯編,還能方便而靈活地實現程序的模擬運行和動態(tài)調試,可以對實際應用系統(tǒng)進行在線仿真和功能模塊開發(fā)。 第5章 PIC集成開發(fā)系統(tǒng) PIC上海技術培訓中心87 PIC單片機指令系統(tǒng)和其它單片機一樣,是較為低級的語言系統(tǒng),是一套控制和指揮CPU工作的編碼,即機器語言。 單片機只能識別和執(zhí)行由二進制數組成的機器語言,然而,這樣一種二進制代碼的機器語言是很難為人們直接理解和分析。 為了能較好表達人們的設計思路,便于記憶和使用,人們在低級語言之上設計出一種新的符號語言,即匯編語言。 第6

40、章 匯編語言程序設計 PIC上海技術培訓中心88 PIC單片機指令系統(tǒng)和其它單片機一樣,是較為低級的語言系統(tǒng),是一套控制和指揮CPU工作的編碼,即機器語言。 為了能較好表達人們的設計思路,便于記憶和使用,人們在低級語言之上設計出一種新的符號語言,即匯編語言。 6.1 匯編語言指令格式 PIC上海技術培訓中心89 根據指令的功能和作用,只有操作碼是必須存在的,它主要決定了指令的操作性質,而其它局部是指令語句的重要補充和說明,有時可以缺省。 PIC上海技術培訓中心90 標號位于指令助記符前面,它一般是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、轉移語句的入口地址等。 1.標號 PIC

41、上海技術培訓中心91標號并不是指令的必須局部,只有那些欲被其他語句引用的指令之前,才必須附加標號。標號不一定和語句同行,可以單獨在語句上方作為一行使用。標號最多可以由32個字母、數字和其它一些字符組成,但第一個字符必須是字母或下劃線。標號不能用系統(tǒng)保存字,即系統(tǒng)禁用指令助記符、存放器名、標志符等作為標號,如:ADD、PCLATH等。一個標號只能表示一個地址,不允許多個地址用一個標號重復定義。標號的定義和引用必須一致,其中的大小寫可以混寫但必須相同。標號必須頂格書寫,結束不用冒號。 使用標號的要點是: PIC上海技術培訓中心92 操作碼決定著指令的操作類型和操作性質,是匯編語言語句中的核心要素,

42、每一條匯編指令都不可缺少,而其它三局部有些指令可以缺省。 2. 操作碼 PIC上海技術培訓中心93操作碼所對應的指令助記符,其中的符號大小寫可以混寫,而不會影響操作碼的含意,這一點和標號、操作數符號變量的表達方式是有本質區(qū)別。指令助記符不能頂格書寫,當前面沒有標號時,必須至少保存一個空格。操作碼核心助記符局部比較簡單,初學者必須熟悉復合助記符局部的功能。 有關操作碼指令助記符的要點是: PIC上海技術培訓中心94 在PIC匯編語言語句中,操作數的形式和內容最為豐富,它是指令助記符操作的對象,一般以數據或地址的形式出現,也可以用符號變量所表示的數據或地址。 3.操作數 PIC上海技術培訓中心95

43、 使用操作數的要點是: 假設操作數有二項,中間應該用逗號半角分開。以A、B、C、D、E、F開頭的數,前面應加0作為引導。MPASM編輯環(huán)境默認進制為十六進制,也可按用戶需要進行重新設置。操作數局部的符號變量必須區(qū)分大小寫。重視d參數的應用,目標地址為: Fd=1;Wd=0。 PIC上海技術培訓中心96各種進制168的表示形式 PIC上海技術培訓中心97 注釋內容用分號引出,是匯編語言語句功能的一種補充說明,主要是便于人們閱讀、分析、修改和程序的調試。 4. 注釋 PIC上海技術培訓中心98 用半角分號引出注釋內容,可以緊跟指令之后,也可以獨立一行或多行書寫,但每一行均需由分號引出。注釋內容可以

44、英文書寫,也能用中文書寫來源于文本編輯內容。 使用注釋的要點是:PIC上海技術培訓中心99 各種單片機的匯編程序除了指令系統(tǒng)語句以外,一般都還定義許多非正式指令的語句,即偽指令。大多數偽指令匯編時并不產生機器碼,僅為源程序提供匯編控制信息。6.2 系統(tǒng)偽指令 PIC上海技術培訓中心100 格式:ORG nnnn 說明:ORG偽指令指出緊跟在該偽指令后的機器碼指令的匯編地址,即經匯編后生成的機器碼目標程序或數據塊在單片機程序存儲器中的起始存放地址。 1.定位偽指令:ORGOrigin PIC上海技術培訓中心101 格式:符號名 EQU nn 說明:EQU偽指令幾乎每一個程序中都用到,其操作含意是

45、使EQU兩端的值相等。一般在PIC的程序設計中,原那么上每次遇到新的符號參數,都必須在前面補充定義符號名的初始數值或存儲器地址。 符號名一旦被EQU賦值,其值便不能被再重新定義。這里的符號名,既可以是PIC中的特殊功能存放器、一個常數,或者是表示一個通用數據存儲器地址。 2.賦值偽指令:EQUEquate PIC上海技術培訓中心102 實際上對于偽指令:ABC EQU20H,其中ABC既可以認為是符號變量,因為ABC代表20H地址;又可以認為是符號常量,因為ABC可以代表符號常量20H。 所以對于一個定義的符號量,應結合引用的指令進行分析才能真正確定符號量的類型。 分析 ABC EQU20HP

46、IC上海技術培訓中心103【例題6-2】正確區(qū)別符號變量和符號常量之間的關系ABCEQU 20H;定義符號量ABC ORG 0000H NOPMOVLW 77HMOVWF 20HMOVLW 88HMOVF ABC,0;ABC為數據存儲器地址20HMOVLW ABC ;ABC為常量20HNOP ENDPIC上海技術培訓中心104 在符號名定義和引用過程中,必須保證大小寫屬性的一致性,注意不能混合使用以及所代表角色功能。 如果有定義:ABCEQU20H在引用符號名ABC時,不能改變其大小寫的屬性,即Abc、aBC或ABc與ABC是不一樣的,在匯編時均會發(fā)生出錯信息。 PIC上海技術培訓中心105

47、格式:END 說明:END偽指令表示匯編語言源程序*.ASM的結束,MPASM匯編器匯編時遇到END就認為程序已結束,對其后的程序段不再進行匯編。 3.程序結束偽指令:END PIC上海技術培訓中心106 格式:LIST 可選項,可選項, 說明:LIST偽指令用于設置各種匯編參數,以便控制整個匯編過程或對打印輸出的列表文件進行格式化。 1P 例如:P16F877 2R 例如:RDEC十進制; RHEX十六進制; RBIN二進制; 默認為十六進制。4.列表選項偽指令:LIST PIC上海技術培訓中心107 格式:INCLUDE “文件名 說明:INCLUDE偽指令的主要功能是將外部預先編寫好的指

48、定文件納入根源程序的匯編內容,這樣可以減少重復勞動,提高編程效率。 如:P16F877.INC為F877單片機的復位矢量、專用存放器的地址及其控制位和狀態(tài)位的位地址的原始定義,有些參考書把P16F877.INC稱為F877的頭文件。 5.外調程序偽指令:INCLUDE PIC上海技術培訓中心108 格式:RADIX 說明:RADIX偽指令用于設置在MPLAB-ICD集成開發(fā)環(huán)境中采用的進制方式,如定義十進制、八進制和十六進制等參數,MPLAB-ICD集成開發(fā)系統(tǒng)缺省為十六進制。 例如:RADIX DEC ;定義為十進制 RADIX HEX ;定義為十六進制 RADIX OCT ;定義為八進制6

49、.進制定義偽指令:RADIX PIC上海技術培訓中心109 在PIC單片機中,有兩個概念是令初學者感到頭痛的事情,也是本課程的難點和重點,對于正確進行程序設計至關重要。 一個是數據存儲器四體的體選方式,需要時刻考慮每一個訪問的特殊功能存放器和通用數據存儲器的體位;另一個是程序存儲器四頁的頁選方式,特別是在發(fā)生轉移或跳轉時,須密切注意是否會發(fā)生頁面轉換。 6.3 存儲器選擇方式 PIC上海技術培訓中心110 F877單片機的數據存儲器是一個具有空間為512字節(jié)的存儲器,其中只有19個字節(jié)是無效存儲單元。為了能完全選擇512字節(jié)內的數據,需要9根地址線。 而根據9根地址線的組合方式不同,形成兩種迥

50、然不同的尋址方式:即直接尋址和間接尋址。 6.3.1 數據存儲器體選方式 PIC上海技術培訓中心111 根據直接尋址和間接尋址操作碼攜帶址址信息情況,一般把512字節(jié)包括無效地址的數據存儲器分成4個區(qū)域,在PIC中被稱為“體BANK。 體0000H07FH 體1080H1FFH 體2100H17FH 體3180H1FFH數據存儲器體域 PIC上海技術培訓中心112 在指令機器碼中操作數所攜帶的尋址信息是低7位地址,這不是一個完備的數據信息,每一個體中均會有一個相關的地址與之對應。要惟一確定地址單元,還必須依托其它的數據線進行復合選擇。 利用狀態(tài)標志STATUS位中的RP1和RP0,與直接尋址機

51、器碼中低7位地址共同選擇相應數據存儲器的內容參與操作。 1.直接尋址訪問數據存儲器 PIC上海技術培訓中心113 在指令機器碼中真正攜帶的尋址信息是低8位地址,這也不是一個完備的數據信息,在整個數據存儲器中有二個相關的地址與之對應。 要惟一確定地址單元,也必須依托另一根數據線進行復合選擇。主要是依托狀態(tài)標志位的IRP,才能準確選擇相應數據存儲器的內容參與操作。 2.間接尋址訪問數據存儲器 PIC上海技術培訓中心114 F877單片機的程序存儲器FLASH是一個具有空間為8K14位的存儲器,其中14位為單元字節(jié)長度。為了能完全選擇8K的程序存儲器,需要合成13根地址選擇線。 6.3.2 程序存儲

52、器頁選方式 PIC上海技術培訓中心115復位地址0000H,直接給出13根地址選擇線;中斷地址0004H,直接給出13根地址選擇線;指令存放器,是在每一個指令的執(zhí)行周期自動加1而形成當前程序的執(zhí)行方向;執(zhí)行以PCL為目標地址的算術邏輯類指令;調用子程序方式,即CALL語句以及相應的返回語句RETRUN、RETFIE、RETLW。轉移指令方式,即GOTO語句;程序存儲器指令語句的選擇 主要有以下幾種途徑: PIC上海技術培訓中心116執(zhí)行以PCL為目標地址的算術邏輯類指令執(zhí)行跳轉指令call、goto、retrun、retfie、retlw 兩類指令的執(zhí)行過程中的裝載效能 PIC上海技術培訓中心

53、117ABC EQU 20H ORG 0100H BANKSEL ABC MOVLW 00H ;常數00送入W MOVWF ABC ;W送入ABC存儲器中 ORG 0100H PAGESEL ABC GOTO ABC ;轉移至ABC ORG 1000H ABC MOVLW 00H;常數00送入W MOVWF 20H;W送入20H中 補充偽指令 PAGESEL、BANKSELPIC上海技術培訓中心118 在程序設計中,除主程序以外還有一局部很重要的內容就是關于子程序的設計,它是為完成特定的目的而構成的復合程序。 6.4常用子程序的設計 PIC上海技術培訓中心119 轉移和循環(huán)程序,主要是通過跳轉

54、、判斷和位測試指令來構成的。 1.跳轉指令 GOTO 2.判斷指令 INCFSZ、DECFSZ 3.位測試指令 BTFSS、 BTFSC6.4.1 轉移和循環(huán)子程序 PIC上海技術培訓中心120 【例題6-6】比較兩個數據存放器20H和30H內容的大小,將較大的數送入40H中。 【例題6-6】請將通用存放器單元20H-2FH,分別對應賦值20H-2FH,請編寫相應的軟件程序。 【例題6-7】假定RB0接入一個按鍵K,當K按下時,RB0為高電平,而K為常態(tài)時,RB0為低電平。請編寫按鍵K的監(jiān)控掃描片段程序,DELAY10MS為10M延遲程序,程序框圖如6-4所示。 PIC上海技術培訓中心121

55、單片機的延時程序,在程序設計中具有很重要的地位。延時的設計,一般可以通過兩種方式:硬件延時和軟件延時。 所謂硬件延時,就是由單片機系統(tǒng)的定時器實現;而軟件延時,是通過循環(huán)程序實現。一般來說,前者適用于精確定量延時,而后者常用于初略定性延時。 【例題6-8】簡單循環(huán)的軟件延時子程序。 【例題6-9】請編寫10MS軟件延時子程序。 【例題6-10】請編寫1S軟件延時子程序。 6.4.2 軟件延時子程序 PIC上海技術培訓中心122 數據查表子程序在某些特殊場合是非常有用的,如共陰極LED八段顯示器以及其它具有固定顯示模式的場合,需根據其顯示數值去查找對應參考數據庫編碼輸出。 6.4.3 數據查表子

56、程序 PIC上海技術培訓中心123 【例題6-11】將RC端口與共陰極LED八段顯示器相連,從0-9循環(huán)顯示,間隔時間為1秒,請編寫相應的軟件程序。 八段顯示數值0-9編碼 PIC上海技術培訓中心12400000000XXXXXXXXPIC單片機架構PC相對尋址 查表實例movlwHIGH DecodemovwfPCLATHmovf DisplayValue,WcallDecodemovwfPORTBgotoContinueDecodeaddwfPCL,FretlwB00111111 ;decode 0retlwB00000110 ;decode 1retlwB01011011 ;decode

57、 2retlwB01001111 ;decode 3retlwB01100110 ;decode 4retlwB01101101 ;decode 5retlwB01111101 ;decode 6retlwB00000111 ;decode 7retlwB01111111 ;decode 8retlwB01101111 ;decode 9ContinuebegafdcRB0RB1RB2RB3RB4RB5RB6bcdefgW 存放器I/O B口01101101 00000101 01101101 gafdcbePIC上海技術培訓中心125 【例題6-12】將RC端口與八個LED顯示器相連,請按照

58、表6-4即跑馬燈流動顯示方式,間隔時間為1秒,請編寫相應的軟件程序。 PIC上海技術培訓中心126 在PIC指令系統(tǒng)中并沒有類似的語句,但如果借助于PIC單片機指令的特殊功能,同樣可以輕松地構成分支跳轉。 分支跳轉實際上是多條件判斷指令,條件本身是一個整數或事件,而跳轉出口應該是整數的信息返回或事件功能內容的具體表現。 在程序形式上,分支功能跳轉子程序與數據查表子程序的結構類似,只是它是用GOTO語句替代了RETLW語句。 6.4.4 分支功能跳轉子程序 PIC上海技術培訓中心127 假定W為某個按鍵的輸入值JIANGNADDWFPCL,F ;確定相對偏移量GOTOPKEY0 ;執(zhí)行PKEY0

59、鍵盤定義功能GOTOPKEY1;執(zhí)行PKEY1鍵盤定義功能GOTOPKEY2;執(zhí)行PKEY2鍵盤定義功能 . . . GOTOPKEYN;執(zhí)行PKEYN鍵盤定義功能 PIC上海技術培訓中心128 本節(jié)給出一些常用的數學運算類子程序,主要有加、減、乘、除等子程序,還有為外擴系統(tǒng)設計中的數碼顯示所需的BCD碼和二進制數據的互換子程序。 均涉及入口條件及出口條件,在調用時務必加以注意。一般入口條件是指參與操作的相關源數據,用S1、S2source等表示,而操作結果用R1、R2result等表示。上下8位數據分別用H、L表示,另外用Z表示中8位數據。 可以將這些固定變量參數定義在PIC16F877的頭

60、文件內,并且單元定義位于映射區(qū)域70H7FH,這樣就可以不受程序所在頁面的影響。 6.4.4 常用數學運算類子程序 PIC上海技術培訓中心129將兩個無符號16位數相加,編寫雙精度運算程序。 將兩個無符號16位數相減,編寫雙精度運算程序。 將兩個無符號16位數相乘,編寫雙精度運算程序。 將兩個無符號16位數相除,編寫雙精度運算程序。 將一個5位數65 535 的BCD碼轉換成二進制數。 將一個16位二進制數轉換成BCD碼 ui,說明逼近存放器所生成的數字量太大,應將逼近存放器里的最高位去掉,改置次高位D6為“1;如果ua ui,說明所生成的數字量還不夠大,應保存該位為“1,此外還需把下一次高位

溫馨提示

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

評論

0/150

提交評論