PIC上海技術培訓中心ppt課件_第1頁
PIC上海技術培訓中心ppt課件_第2頁
PIC上海技術培訓中心ppt課件_第3頁
PIC上海技術培訓中心ppt課件_第4頁
PIC上海技術培訓中心ppt課件_第5頁
已閱讀5頁,還剩311頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、PIC單片機原理及運用(第二版)美國微芯公司授權上海技術培訓中心2005.01第1章微型計算機概論 微型計算機是一種既有快速運算才干,又有極強邏輯判別才干和大容量存儲功能的電子設備,它是20世紀人類最杰出的科學發明之一。 本章引見微型計算機的根底知識,主要內容有微型計算機的開展歷史及運用領域、計算機硬件、軟件系統的根本組成。 1.1 微型計算機的開展歷史及運用 我們今天所說的計算機,是指利用電子技術實現計算并具有邏輯判別和程序存儲功能的設備。 1.1.1 微型計算機的開展歷史 從計算機開展的歷史看,微型計算機已屬于第四代計算機,而微型計算機的開展又曾閱歷了四代。 1.1.2 微型計算機的運用

2、科學計算 數據處置 過程控制 計算機輔助設計/輔助制造 (CAD/CAM) 計算機網絡 1.1.3 微型計算機系統主要技術目的 字長 :計算機的字長取8的整數倍數, 如8位、16位、32位、64位等 速度 :計算機的速度目的可用主頻及運算 速度來評價 G、萬次/秒存儲系統容量 :內存和外存MG 1.2 微型計算機系統的組成 計算機的硬件通常包括運算器、存儲器、控制器、輸入設備及輸出設備等五個部分 1.2.2 軟件系統 軟件系統是一臺計算機中的系統軟件、運用軟件、程序設計言語和支持軟件及各種文檔的總稱。 系統軟件:包括操作系統、效力程序、匯編程序、解釋程序和編譯程序等。 運用軟件:是用匯編言語或

3、高級言語為處理某種實踐問題而編寫的程序。 程序設計言語:通常分為面向機器的匯編言語和面向用戶的高級言語。 1.3 微控制器系統 在計算機的開展歷史上,特別是在第一臺小型控制器件構成以后,沿著兩條完全不同的用途、不同的價錢、和不同的技術內涵,而被充實于我們的日常生活中。 1.3.1 單片機系統 單片機的開展過程和性能的日益完善,實踐上是對傳統控制技術的一場革命,開創了微控技術的新天地。 現代控制系統的中心內涵就是嵌入式計算機運用系統MCU,而單片機就是最典型、最廣泛、最普及的嵌入式計算機運用系統。 單片機的降臨,主要也是源于其性能價錢比。普通單片機用于控制的目的,而對于其承當的計算功能卻要求不高

4、,只需能按照一定的程式進展在線檢測和即時控制任務。目前,各個單片機消費廠家還是立足于8位單片機的競爭,由于從其降臨以來,不斷成為運用最廣泛的器件。2002年美國MICROCHIP和MOTOROLA兩家公司,已占據著世界8位單片機產量最高的前兩個芯片制造商。 普通的單片機的構造可以用圖1.2所示的方塊圖描畫,用三大總線DB、AB、CB實現模塊之間的信息傳送。單片機內部構造 單片機的主要運用 人有所思,單片機就可為。單片機的運用必將隨著社會的開展和技術的提高,而獲得更寬廣運用。系列化的單片機 ?電信家用電器工業控制儀器儀表汽車玩具 單片機有哪些特點 單片機具備體積小、價錢低、性能強、速度快、用途廣

5、、可靠性高、靈敏性強等優點,它與通用的計算機相比,還具有以下一些特點:存儲器ROM和RAM的相互獨立采用面向控制的指令系統輸入/輸出端口的強大功能 1.3.2 PIC系列單片機 PIC系列單片機,可以滿足用戶的各種需求。從中檔產品PIC16F877作為切入點,提供非常完備、易學易用的MPLAB-ICD集成開發環境。 特別是對于單片機的新手,仿佛從茫然迷惑的大海搭上一艘便利平穩的小船,感到非常輕松自若。 第2章 PIC單片微機的組成 PICPeriphery Interface Chip單片微機是美國Microchip公司消費的PIC系列單片機。 PIC系列單片機的硬件系統設計簡約,指令系統設計

6、精煉。在一切的單片機種類中,PIC具有性能完善、功能強大、學習容易、開發運用方便、人機界面友好等突出優點。 2.1 PIC系列單片機概述 Microchip公司是一家專門努力于單片機開發、研制和消費的制造商,其產品設計起點高,技術領先,性能優越。 它不是在普通微型計算機CPU的根底上加以改造,而是獨樹一幟,采用全新的流水線構造、單字節指令體系、嵌入閃存以及10位A/D轉換器,使之具有杰出的性能,代表著單片機開展的新方向。 PIC系列單片機,具有高、中、低三個檔次,可以滿足不同用戶開發的需求,適宜在各個領域中的運用。 它具有如下特點: 2.1.1 PIC系列單片機特點單片機總線構造 單片微型計算

7、機通常采用兩種體系構造:一種是普林斯頓體系構造;另一種是哈佛體系構造。 在普林斯頓體系構造中,其程序存儲器和數據存儲器一致編址,也就是說兩種存儲器位于同一邏輯空間。這種單片機的取指令和存取數據必需分時地進展,影響了執行指令的速度。 哈佛體系構造的程序存儲器和數據存儲器獨立編址,也就是說兩種存儲器有不同的邏輯空間。 PIC系列單片機采用哈佛總線構造,在芯片內部數據總線和指令總線分別,允許采用不同的字節寬度。這樣,就為實現指令提取和執行的“流水作業提供構造保證,即在執行一條指令的同時對下一條指令進展取指操作。 兩總線的分別,也為PIC實現全部指令的單字節化和單周期化發明條件,從而大大提高CPU執行

8、指令的速度和任務效率。1. 哈佛總線構造 單片機總線構造比較 從同一存儲器空間取指令和取操作數據。 限制了數據流量。 從兩個獨立的存儲空間分別取指令和存取操作數。 數據流量添加。 針對程序區和數據區可以設計不同的數據線寬度。程序和數據存儲器馮-紐曼構造8-位CPU程序存儲器數據存儲器8-位12/14/16-位哈佛構造CPU PIC系列單片機的指令系統,由于采用RISC技術,和普通單片機指令系統通常有上百條指令相比要少得多。 2RISC技術 PIC系列單片機只需4種尋址方式:存放器間接尋址、立刻數尋址、直接尋址和位尋址,比較容易掌握。 PIC系列單片機的程序、數據、堆棧三者各自采用相互獨立的地址

9、空間,前兩者的地址訪問需求用戶特別留意四個分區的范圍,而堆棧過程用戶不用參與和操心。 代碼緊縮率,就是指一樣程序存儲器空間所能包容有效指令的數量。3指令特征 由于PIC系列單片機采用CMOS構造,使其功率耗費極低,是目前世界上最低功耗的單片機種類之一。 其中有些型號,在4MHz時鐘下任務時耗電不超越2mA,而在睡眠方式下耗電可低到1A以下。 因此,PIC系列單片機,尤其適用于野外挪動儀表的控制以及戶外免維護的控制系統。 5功耗低 I/0端口驅動負載的才干較強,每個輸出引腳可以驅動多達20-25mA的負載,既可以高電平直接驅動發光二極管LED、光電藕合器、小型繼電器等,也可以低電平直接驅動,這樣

10、可大大簡化控制電路。 不過,請讀者留意,每個引腳的驅動才干并不表示端口引腳同時都具有這樣的效果。普通端口驅動才干約60-70mA,而一切輸入輸出驅動小于200mA,詳細數據可參考有關數據手冊。 6驅動才干強 PIC主要是采用哈佛總線構造,可以同時進展指令讀取和指令執行的流水線作業方式。 如:MCS-51 12M,指令執行時間為1s4s PIC 12M時鐘周期,指令執行時間為0.30.6s 7運轉速度高 PIC系列單片機的一些型號具有同步串行口,可以滿足I2C主控/從動和SPI主控總線要求。I2C和SPISerial Peripheral Interface分別是PHILIPS公司和MOTORO

11、LA公司研制的兩種廣泛流行的串行總線規范,是一種在芯片之間實現同步串行數據傳輸的技術。 利用單片機串行總線端口可以方便而靈敏地擴展外圍器件,目前已在許多電子產品中得到廣泛運用。 8同步串行數據傳送方式 2.1.2 PIC16F877的構造 從其執行功能思索,可以將單片機分成兩大組件,即根本功能模塊和公用功能模塊。 PICl6F87X系列單片機有雙列直插式28引腳和40引腳及外表貼裝式44引腳等幾種封裝方式。 多數I/O引腳都設計有第2功能,甚至第3功能。采用引腳復用技術,以便使單片機添加功能而又不增大體積和引腳數量。 2.1.3 PIC16F877的引腳 F877單片機內部配置了較完善的多個存

12、儲器,可分為數據存儲器和程序存儲器兩種,為普通用戶提供很大的方便。 但它們在方式上,具有很豐富的內涵。 2.2 存儲器概述 F877單片機內部配置了8K l4位的閃爍FLASH程序存儲器,可以很方便進展在線擦除和燒寫,壽命可達1000次以上。 在PIC系列單片機教學實驗和科研開發中,顯示出無窮的魅力和廣大的運用前景。 相應的地址編碼范圍為0000HlFFFH。 2.2.1 程序存儲器 程序存儲器構造 F877單片機內部配置兩類數據存儲器,普通RAM數據存儲器和EEPROM失電堅持數據存儲器。 RAM總的地址空間為512個單元,其中包括部分無效單元,但每一個有效單位均可以象存放器一樣進展移位、置

13、位、復位和位測試等操作。 PIC單片機的數據存儲器和其他單片機一樣,在配置構造上可分為通用存放器和特殊功能存放器兩大類,前者給用戶運用,而后者通常定義給某些功能模塊,是一種具有特殊目的的功能存放器。 2.2.2 數據存儲器 同時在PIC16F877片內又配置另一種可掉電維護的數據存儲器EEPROM,共有2568位寬的存儲單元,可以長期存放用戶或系統的重要參數:如時間、配置及數據表格等,是一種非常重要的硬件資源。數據存儲器單元功能分配 體BANK0 體BANK1 體BANK2 體BANK3 存儲器是單片機中一個非常重要的部件,專門用于存放指令、數據和運算結果。 分析F877單片機存儲器構架,可以

14、從其配置的三大模塊著手進展,它們是: 8K l4位FLASH程序存儲器 5128位數據存儲器RAM 2568位可掉電維護數據的EEPROM存儲器模塊。 第3章 PIC存儲器 存儲器從運用功能上來分,可分為隨機存儲器RAMRandom Access Memory和只讀存儲器ROMRead Only Memory兩類。 3.1 存儲器分類 F877程序存儲器具有13位寬的程序計數器PC。PC指針所產生的13位地址最大可尋址的程序存儲器空間為8K,相應的地址編碼范圍為0000HlFFFH。 F877歸屬于中檔單片機,其指令字節寬度為14位,內部構架配置了8K l4位的閃爍FLASH程序存儲器。 3.

15、2 程序存儲器構架 普通將整個程序存儲器以2KB為單位進展分頁PAGE,如圖3-1所示F877單片機,8KB程序存儲器共分作4頁,分別稱為“頁0、“頁l、“頁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 1FFFHPIC16F877 單片機架構程序存儲器最大8K字(13 位) 程序存儲空間程序空間按頁面劃分,每頁2K字 (11 位);最多四頁。頁面選擇

16、PCLATH復位向量地址 0000h中斷向量地址 0004hPage 00000h0004h07FFhInterruptResetPage 10800h0FFFhPage 21000h17FFhPage 31800h1FFFhPCLATH = 00PCLATH = 01PCLATH = 10PCLATH = 11 程序存儲器中有2個單元地址比較特殊,除了具備同其他單元地址一樣的普通用途外,還具有專門用途: 0000H:用作單片機系統的復位矢量; 0004H:用作系統特殊模塊的中斷矢量。 復位矢量中斷矢量 F877用于存儲數據的RAM單元比普通單片機RAM的功能要強大得多,它除了具備普通RAM的

17、功能之外,每一個單元都能實現移位、置位、復位和位測試等通常由存放器才干完成的功能操作。 3.3 數據存儲器構架 RAM數據存儲器和FLASH程序存儲器一樣在空間構架上,進展類似方式進展分區。按橫向陳列,分為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 數據存儲器分區數據存儲器四個存儲體每個 128 字節特殊功能存放器存儲體選擇經過 Status中的 RP0,1

18、和 IRP512單元368有效GPRGPRsSFRsBank0000h01Fh020h07FhGPRsSFRsBank1080h09Fh0A0h0FFh0F0hGPRsSFRsBank2100h11Fh120h17Fh170hGPRsSFRsBank3180h19Fh1A0h1FFh1F0hRP RP RP RP = 00 = 01 = 10 = 11 有些存放器單元在4個體上是相互映射的,如形狀存放器STATUS、間接尋址存放器INDF、程序計數器低8位PCL、文件選擇存放器FSR、程序計數器高8位PCLATH和中斷控制存放器INTCON。 所謂互為映射就是說,在4個體內的一樣位置,物理上對

19、應同一個存放器單元,所以該單元具備4個不同的地址。 相互映射 F877單片機的通用存放器GPRGeneral Purpose Registers,可由用戶自行支配存放隨機數據。 地址區域:F0HFFH、170Hl7FH和1F0H1FFH,都可以索引或映射到體0的16個RAM單元。 這樣安排是為了便于中斷效力程序的設計和數據處置,就可以在程序設計中可以有效突破體的限制而定義通用的變量函數 3.3.1 通用存放器 特殊功能存放器SFRSpecial Function Registers是用于公用目的的存放器,每個存放器單元,甚至其中的每一位,都有它本人特定的稱號和用途。 主要涉及PIC內核構造、外

20、圍功能模塊的配置和數據通訊方式的定義,是單片機賴于正常運轉的任務平臺。所以,特殊功能存放器又稱為公用存放器。 可以根據它們不同的用途分為兩類:一類是與CPU內核相關的存放器;另一類是與外圍模塊相關的存放器。 3.3.2 特殊功能存放器 形狀存放器的內容用來記錄算術邏輯單元ALU的運算結果形狀、CPU的特殊運轉形狀以及RAM數據存儲器體間選擇等信息。 1形狀存放器STATUS Bit0C:進位/借位標志,被動參數。 0:執行加法或減法指令時,假設最高位無進位或有借位; 1:執行加法或減法指令時,假設最高位有進位或無借位。 Bit1DC:輔助進位/借位標志,被動參數。 0:執行加法或減法指令時,假

21、設低4位向高4位無進位或有借位; 1:執行加法或減法指令時,假設低4位向高4位有進位或無借位。Bit2Z:零標志,被動參數。 0:算術或邏輯運算結果不為0; 1:算術或邏輯運算結果為全0。 形狀標志位 Bit6-Bit5RP1-RP0:RAM數據存儲器體選位,僅用于直接尋址。 兩位復合選擇RAM數據存儲器4個體,詳細關系如下: RP1、RP0 = 0 0 選中體0 RP1、RP0 = 0 1 選中體1 RP1、RP0 = 1 0 選中體2 RP1、RP0 = 1 1 選中體3 Bit7IRP:RAM數據存儲器體選位,僅用于間接尋址。 0:選擇數據存儲器低位體: 即體0FSR的Bit7=0或體1

22、FSR的Bit7=1;1: 選擇數據存儲器高位體: 即體2FSR的Bit7=0或體3FSR的Bit7=1。 數據存儲器體選位 在RAM數據存儲器中,有一個非常特別的存放器INDF它的專有功能是與FSR存放器配合,實現間接尋址。 當訪問地址INDF時,實踐上是訪問以FSR內容為地址的數據存儲器RAM單元。 2間接尋址的存放器INDF和FSR 在直接尋址中,體選碼來自形狀存放器STATUS的RP1和RPO位,體內的單元地址直接來自指令機器碼。而在間接尋址中,體選碼由STATUS的IRP位和FSR存放器的BIT7組成 直接尋址/間接尋址方式的表示圖 程序計數器PC指針寬13位,它的內容指向CPU將要

23、執行的下一條指令所在程序存儲器單元的地址。 低8位PCL有本人的地址,可讀可寫;而高5位PCH和其它單片機不一樣,即沒有本人的地址,不能用軟件訪問,也就不能直接寫人,只能用存放器PCLATH裝載的方式進展間接寫人。 3與PC相關的存放器PCL和PCLATH 兩種情況下PC值的裝入過程 PCLATH對于高5位PCH的裝載分兩種情況: 一種情況是當執行以PCL為目的的寫操作指令時,PC的低8位來自算術邏輯單元ALU,PC的高5位來自PCLATH的低5位; 另一種情況是當執行跳轉指令GOTO或調用子程序指令CALL時,PC的低11位來自指令碼中直接攜帶的11位地址,高2位由PCLATH3-4提供。

24、程序存儲器: PC 絕對尋址OP CODEkkkk14-位 call 和goto指令kkkkkkk 經過 CALL 和 GOTO修正 PC (程序指針)kkkkkkkkkxxxkkxxxPCLATH存放器有效的 13-位程序存儲器地址11-位 來自指令2-位來自PCLATHkkkkPCH PCL 13-位程序指針PCLATH 內部數據總線 558movlwHIGH DelaymovwfPCLATHmovlwLOW DelaymovwfPCL *對于讀PC值時: 僅從PCL讀低8位值, PCH不會被載入到PCLATH程序存儲器: PC 相對尋址 主要用于設置定時/計數器TMR0、前后分頻器、外部

25、INT中斷以及B端口的弱上拉功能等各種控制位。 4選項存放器OPTION_REG Bit2-Bit0PS2-PS0:分頻器倍率選擇位 Bit3PSA:前后分頻器分配位,自動參數。0: 分配給TMR0,作為TMR0的前分頻器;1: 分配給WDT,作為WDT的后分頻器。Bit4T0SE:TMR0用于計數器,計數脈沖信號邊沿選擇位,自動參數。0: RA4/T0CKI引腳上的上升沿增量;1: RA4/T0CKI引腳上的下降沿增量。Bit5T0CS:定時/計數器TMR0時鐘源選擇位,自動參數。0: 用內部指令周期時鐘CLKOUT作為TMR0的觸發脈沖;1: 用T0CKI引腳上的外部時鐘作為TMR0的觸發

26、脈沖。Bit6INTEDG:INT中斷信號觸發邊沿選擇位,自動參數。0: BR0/INT引腳上的上升沿觸發;1: BR0/INT引腳上的下降沿觸發。Bit7RBPU:B端口弱上拉使能位,自動參數。0: RB0-RB7引腳弱上拉使能;1: RB0-RB7引腳弱上拉不使能。 主要用于中斷控制方式的設置。5中斷控制存放器INTCON端口存放器PORTA BCDE端口I/O定義存放器TRISA BCDEDi = 0 定義為輸出形狀Di = 1 定義為輸入形狀 6端口存放器 指令是單片機的指點中心,就是指揮CPU按要求進展一系列操作的命令。普通來說,單片機都具有本人特有的指令系統,相互之間大都互不兼容。

27、 PIC單片機系列按照不同用戶的要求分成三個不同的運用檔次。 第4章 PIC指令系統 指令的執行時間總是分解成兩部分:取指過程和執行過程,取指的快慢直接與指令的字節數有關,而指令的執行快慢與時鐘的振蕩頻率有關。 在以往的單片機構造中,程序存儲器和數據存儲器的地址空間和數據傳輸通道都相互并用,必需采用分時操作順序執行。 而PIC單片機指令的執行過程是遵照著一種全新哈佛總線體系構造的原那么,充分利用計算機系統在程序存儲器和數據存儲器之間地址空間的相互獨立性,取指過程和執行程序可以流水線操作同時進展。 4.1 指令流水線操作原那么 Flush Fetch 4Fetch SUB_1 Tcy0 Tcy1

28、 Tcy2 Tcy3 Tcy4 PIC單片機指令流水線表示Execute 1Fetch 31. MOVLW 55h Fetch 1Execute 3Fetch 2Execute 2 Fetch 42. MOVWF PORTB3. CALL SUB_14. BSF PORTA, BIT3 在這種尋址方式中,操作數或其中之一另一個是W是立刻數, 隨指令碼攜帶,而無需再到其他地方去尋覓。指令中的操作數為8-位常數.運用立刻數尋址方式的指令有: movlw, addlw, retlw, etc. 如: ADDLW16H指令尋址方式闡明 1.存放器立刻尋址14-位 立刻尋址指令OP CODEkkkkkk

29、kk2.存放器直接尋址7-位 直接從指令中獲取2-位從STATUS 存放器中獲取如:IORWF26H,09-位 有效存放器地址IRPRP1RP0OP CODETOPDZDCCSTATUS 存放器14-位指令fffffffRP1RP0fffffff7-位來自指令字2-位來自STATUS 存放器3.存放器間接尋址8-位 間接地址來自 FSR (選擇存放器).1-位 來自 STATUS 存放器. 例如:MOVWF INDFIRPfffffffffIRPRP1RP0TOPDZDCCfffffffSTATUS 存放器8-位 FSR 存放器有效的 9-位存放器地址8-位來自 FSR1-位來自STATUS

30、存放器 這是一種比較特別的尋址方式,是經過兩個存放器INDF和FSR的組合而實現功能的。操作數是FSR存放器內容位指針,所指向存放器單元的內容。 間接尋址實例運轉機制: a 清從0 x20 to 0 x7F一切的RAM區域 b間接地址載入FSR c 每一次對INDF運轉,由FSR指向的存放器被運用 例子:movlw0 x20movwfFSRLOOPclrfINDFincfFSR,FbtfssFSR,7gotoLOOP0000 00000000 0000FSR = 20hINDF00h04h20h7Fh數據記憶區 這是PIC單片機的特征之一,它可以對一切的RAM數據存儲器進展位尋址,即置位和清零

31、等。 如:BSF 26H,4;26H原為26H 4.位尋址 每條指令的字節長度為14位,主要由闡明指令功能的操作碼和參與指令處置的操作數組成。 操作碼部分,簡稱助記符,如表4-2中心助記符,是借用英語單詞來間接表達和定義其操作功能。 操作數部分,是按照操作碼的操作功能,對操作數進展處置。 根據操作數的源地址和目的地址的訪問性質,可以有多種表現方式:主要有直接尋址、間接尋址、立刻尋址和位尋址四類。 4.2 指令集闡明 中心助記符 指令系統補充字符闡明 數據傳送類指令共有4條指令,主要功能是將數據從源地址或立刻數傳送至目的地址中。 4.2.1 數據傳送類指令 【例題4-1】 請利用數據傳送類指令編

32、寫一段子程序,將立刻數20H傳送到通用存放器20H中。 【例題4-2】 請利用數據傳送類指令編寫一段子程序,將通用存放器20H和30H中的內容進展交換。 算術運算類指令是PIC單片機指令系統中,承當運算功能的重要部分,共有6條指令。主要有加減指令、增量和減量指令 4.2.2 算術運算類指令 【例題4-3】 請將通用存放器20H、30H構成的16位數據與通用存放器40H、50H構成的16位數據相加后放入40H、50H 中,知其和不會超出65535。 邏輯運算類指令是一組比較復雜的指令,方式較多,可以對位和字節進展邏輯操作。主要有與、或、異或、清零、置位、取反和左右移位等14條指令 4.2.3 邏

33、輯運算類指令 【例題4-4】 請將數據存儲器20H和30H中的數據分別與立刻數20H、30H相與和相或后相加,結果放入40H存儲器中,請編寫相應的程序。 【例題4-5】 請編寫一個完好的程序,將數據存儲器20H低4位和30H高4位組合成一個八位二進制數據,并從RC端口輸出。 控制轉移類指令,是在指令系統中方式靈敏、功能較強的一組指令,共11條。它們是構成程序循環和跳轉的關鍵要素,普通可以分為有條件跳轉和無條件跳轉兩大類。 4.2.4 控制轉移類指令 這是一種比較特殊的轉移方式,根據位測試或加減1后的內容判別條件的成立與否,而決議程序繼續執行還是間跳執行指令。 當前判別語句A下一條語句B 再下一

34、條語句C1.相對轉移間跳 PIC指令系統的絕對轉移,主要由CALL和GOTO語句引出。在指令機器碼內部本身并沒有攜帶完好的轉移目的地址,只包含低11位地址,而高2位將由PCLATH存放器給出。 【例題4-6】 請將通用存放器單元20H-2FH,分別對應賦值20H-2FH,請編寫相應的軟件程序。 2.絕對轉移和調用 【例題4-7】 請分析以下程序片段,并指出當程序執行完后,涉及到的一切存儲器單元的結果。 MOVLW22HMOVWF22HMOVWFFSRADDWFINDF,FINCFINDFSWAPF22H,WRLF22H,WDECFFSR,FMOVWFINDFBSFINDF,7【例題4-6】編寫

35、散轉指令程序 Microchip公司為PIC系列單片機配備了功能強大、基于Windows、易學易用的軟件集成開發環境MPLAB。 該開發環境可以使人們在本人的微機系統上,對PIC系列單片機進展程序的創建、錄入、編輯以及匯編,還能方便而靈敏地實現程序的模擬運轉和動態調試,可以對實踐運用系統進展在線仿真和功能模塊開發。 第5章 PIC集成開發系統 PIC單片機指令系統和其它單片機一樣,是較為低級的言語系統,是一套控制和指揮CPU任務的編碼,即機器言語。 單片機只能識別和執行由二進制數組成的機器言語,然而,這樣一種二進制代碼的機器言語是很難為人們直接了解和分析。 為了能較好表達人們的設計思緒,便于記

36、憶和運用,人們在低級言語之上設計出一種新的符號言語,即匯編言語。 第6章 匯編言語程序設計 PIC單片機指令系統和其它單片機一樣,是較為低級的言語系統,是一套控制和指揮CPU任務的編碼,即機器言語。 為了能較好表達人們的設計思緒,便于記憶和運用,人們在低級言語之上設計出一種新的符號言語,即匯編言語。 6.1 匯編言語指令格式 根據指令的功能和作用,只需操作碼是必需存在的,它主要決議了指令的操作性質,而其它部分是指令語句的重要補充和闡明,有時可以缺省。 標號位于指令助記符前面,它普通是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、轉移語句的入口地址等。 1.標號 標號并不是指令的必需

37、部分,只需那些欲被其他語句援用的指令之前,才必需附加標號。標號不一定和語句同行,可以單獨在語句上方作為一行運用。標號最多可以由32個字母、數字和其它一些字符組成,但第一個字符必需是字母或下劃線。標號不能用系統保管字,即系統禁用指令助記符、存放器名、標志符等作為標號,如:ADD、PCLATH等。一個標號只能表示一個地址,不允許多個地址用一個標號反復定義。標號的定義和援用必需一致,其中的大小寫可以混寫但必需一樣。標號必需頂格書寫,終了不用冒號。 運用標號的要點是: 操作碼決議著指令的操作類型和操作性質,是匯編言語語句中的中心要素,每一條匯編指令都不可短少,而其它三部分有些指令可以缺省。 2. 操作

38、碼 操作碼所對應的指令助記符,其中的符號大小寫可以混寫,而不會影響操作碼的含意,這一點和標號、操作數符號變量的表達方式是有本質區別。指令助記符不能頂格書寫,當前面沒有標號時,必需至少保管一個空格。操作碼中心助記符部分比較簡單,初學者必需熟習復合助記符部分的功能。 有關操作碼指令助記符的要點是: 在PIC匯編言語語句中,操作數的方式和內容最為豐富,它是指令助記符操作的對象,普通以數據或地址的方式出現,也可以用符號變量所表示的數據或地址。 3.操作數 運用操作數的要點是: 假設操作數有二項,中間應該用逗號半角分開。以A、B、C、D、E、F開頭的數,前面應加0作為引導。MPASM編輯環境默許進制為十

39、六進制,也可按用戶需求進展重新設置。操作數部分的符號變量必需區分大小寫。注重d參數的運用,目的地址為: Fd=1;Wd=0。 各種進制168的表示方式 注釋內容用分號引出,是匯編言語語句功能的一種補充闡明,主要是便于人們閱讀、分析、修正和程序的調試。 4. 注釋 用半角分號引出注釋內容,可以緊跟指令之后,也可以獨立一行或多行書寫,但每一行均需由分號引出。注釋內容可以英文書寫,也能用中文書寫來源于文本編輯內容。 運用注釋的要點是: 各種單片機的匯編程序除了指令系統語句以外,普通都還定義許多非正式指令的語句,即偽指令。大多數偽指令匯編時并不產活力器碼,僅為源程序提供匯編控制信息。6.2 系統偽指令

40、 格式:ORG nnnn 闡明:ORG偽指令指出緊跟在該偽指令后的機器碼指令的匯編地址,即經匯編后生成的機器碼目的程序或數據塊在單片機程序存儲器中的起始存放地址。 1.定位偽指令:ORGOrigin 格式:符號名 EQU nn 闡明:EQU偽指令幾乎每一個程序中都用到,其操作含意是使EQU兩端的值相等。普通在PIC的程序設計中,原那么上每次遇到新的符號參數,都必需在前面補充定義符號名的初始數值或存儲器地址。 符號名一旦被EQU賦值,其值便不能被再重新定義。這里的符號名,既可以是PIC中的特殊功能存放器、一個常數,或者是表示一個通用數據存儲器地址。 2.賦值偽指令:EQUEquate 實踐上對于

41、偽指令:ABC EQU20H,其中ABC既可以以為是符號變量,由于ABC代表20H地址;又可以以為是符號常量,由于ABC可以代表符號常量20H。 所以對于一個定義的符號量,應結合援用的指令進展分析才干真正確定符號量的類型。 分析 ABC EQU20H【例題6-2】正確區別符號變量和符號常量之間的關系ABCEQU 20H;定義符號量ABC ORG 0000H NOPMOVLW 77HMOVWF 20HMOVLW 88HMOVF ABC,0;ABC為數據存儲器地址20HMOVLW ABC ;ABC為常量20HNOP END 在符號名定義和援用過程中,必需保證大小寫屬性的一致性,留意不能混合運用以及

42、所代表角色功能。 假設有定義:ABCEQU20H在援用符號名ABC時,不能改動其大小寫的屬性,即Abc、aBC或ABc與ABC是不一樣的,在匯編時均會發生出錯信息。 格式:END 闡明:END偽指令表示匯編言語源程序*.ASM的終了,MPASM匯編器匯編時遇到END就以為程序已終了,對其后的程序段不再進展匯編。 3.程序終了偽指令:END 格式:LIST 可選項,可選項, 闡明:LIST偽指令用于設置各種匯編參數,以便控制整個匯編過程或對打印輸出的列表文件進展格式化。 1P 例如:P16F877 2R 例如:RDEC十進制; RHEX十六進制; RBIN二進制; 默以為十六進制。4.列表選項偽

43、指令:LIST 格式:INCLUDE “文件名 闡明:INCLUDE偽指令的主要功能是將外部預先編寫好的指定文件納入根源程序的匯編內容,這樣可以減少反復勞動,提高編程效率。 如:P16F877.INC為F877單片機的復位矢量、公用存放器的地址及其控制位和形狀位的位地址的原始定義,有些參考書把P16F877.INC稱為F877的頭文件。 5.外調程序偽指令:INCLUDE 格式:RADIX 闡明:RADIX偽指令用于設置在MPLAB-ICD集成開發環境中采用的進制方式,如定義十進制、八進制和十六進制等參數,MPLAB-ICD集成開發系統缺省為十六進制。 例如:RADIX DEC ;定義為十進制

44、 RADIX HEX ;定義為十六進制 RADIX OCT ;定義為八進制6.進制定義偽指令:RADIX 在PIC單片機中,有兩個概念是令初學者感到頭痛的事情,也是本課程的難點和重點,對于正確進展程序設計至關重要。 一個是數據存儲器四體的體選方式,需求時辰思索每一個訪問的特殊功能存放器和通用數據存儲器的體位;另一個是程序存儲器四頁的頁選方式,特別是在發生轉移或跳轉時,須親密留意能否會發生頁面轉換。 6.3 存儲器選擇方式 F877單片機的數據存儲器是一個具有空間為512字節的存儲器,其中只需19個字節是無效存儲單元。為了能完全選擇512字節內的數據,需求9根地址線。 而根據9根地址線的組合方式

45、不同,構成兩種迥然不同的尋址方式:即直接尋址和間接尋址。 6.3.1 數據存儲器體選方式 根據直接尋址和間接尋址操作碼攜帶址址信息情況,普通把512字節包括無效地址的數據存儲器分成4個區域,在PIC中被稱為“體BANK。 體0000H07FH 體1080H1FFH 體2100H17FH 體3180H1FFH數據存儲器體域 在指令機器碼中操作數所攜帶的尋址信息是低7位地址,這不是一個完備的數據信息,每一個體中均會有一個相關的地址與之對應。要獨一確定地址單元,還必需依托其它的數據線進展復合選擇。 利用形狀標志STATUS位中的RP1和RP0,與直接尋址機器碼中低7位地址共同選擇相應數據存儲器的內容

46、參與操作。 1.直接尋址訪問數據存儲器 在指令機器碼中真正攜帶的尋址信息是低8位地址,這也不是一個完備的數據信息,在整個數據存儲器中有二個相關的地址與之對應。 要獨一確定地址單元,也必需依托另一根數據線進展復合選擇。主要是依托形狀標志位的IRP,才干準確選擇相應數據存儲器的內容參與操作。 2.間接尋址訪問數據存儲器 F877單片機的程序存儲器FLASH是一個具有空間為8K14位的存儲器,其中14位為單元字節長度。為了能完全選擇8K的程序存儲器,需求合成13根地址選擇線。 6.3.2 程序存儲器頁選方式 復位地址0000H,直接給出13根地址選擇線;中斷地址0004H,直接給出13根地址選擇線;

47、指令存放器,是在每一個指令的執行周期自動加1而構成當前程序的執行方向;執行以PCL為目的地址的算術邏輯類指令;調用子程序方式,即CALL語句以及相應的前往語句RETRUN、RETFIE、RETLW。轉移指令方式,即GOTO語句;程序存儲器指令語句的選擇 主要有以下幾種途徑: 執行以PCL為目的地址的算術邏輯類指令執行跳轉指令call、goto、retrun、retfie、retlw 兩類指令的執行過程中的裝載效能 ABC EQU 20H ORG 0100H BANKSEL ABC MOVLW 00H ;常數00送入W MOVWF ABC ;W送入ABC存儲器中 ORG 0100H PAGESE

48、L ABC GOTO ABC ;轉移至ABC ORG 1000H ABC MOVLW 00H;常數00送入W MOVWF 20H;W送入20H中 補充偽指令 PAGESEL、BANKSEL 在程序設計中,除主程序以外還有一部分很重要的內容就是關于子程序的設計,它是為完成特定的目的而構成的復合程序。 6.4常用子程序的設計 轉移和循環程序,主要是經過跳轉、判別和位測試指令來構成的。 1.跳轉指令 GOTO 2.判別指令 INCFSZ、DECFSZ 3.位測試指令 BTFSS、 BTFSC6.4.1 轉移和循環子程序 【例題6-6】比較兩個數據存放器20H和30H內容的大小,將較大的數送入40H中

49、。 【例題6-6】請將通用存放器單元20H-2FH,分別對應賦值20H-2FH,請編寫相應的軟件程序。 【例題6-7】假定RB0接入一個按鍵K,當K按下時,RB0為高電平,而K為常態時,RB0為低電平。請編寫按鍵K的監控掃描片段程序,DELAY10MS為10M延遲程序,程序框圖如6-4所示。 單片機的延時程序,在程序設計中具有很重要的位置。延時的設計,普通可以經過兩種方式:硬件延時和軟件延時。 所謂硬件延時,就是由單片機系統的定時器實現;而軟件延時,是經過循環程序實現。普通來說,前者適用于準確定量延時,而后者常用于初略定性延時。 【例題6-8】簡單循環的軟件延時子程序。 【例題6-9】請編寫1

50、0MS軟件延時子程序。 【例題6-10】請編寫1S軟件延時子程序。 6.4.2 軟件延時子程序 數據查表子程序在某些特殊場所是非常有用的,如共陰極LED八段顯示器以及其它具有固定顯示方式的場所,需根據其顯示數值去查找對應參考數據庫編碼輸出。 6.4.3 數據查表子程序 【例題6-11】將RC端口與共陰極LED八段顯示器相連,從0-9循環顯示,間隔時間為1秒,請編寫相應的軟件程序。 八段顯示數值0-9編碼 00000000XXXXXXXXPIC單片機架構PC相對尋址 查表實例movlwHIGH DecodemovwfPCLATHmovf DisplayValue,WcallDecodemovwf

51、PORTBgotoContinueDecodeaddwfPCL,FretlwB00111111 ;decode 0retlwB00000110 ;decode 1retlwB01011011 ;decode 2retlwB01001111 ;decode 3retlwB01100110 ;decode 4retlwB01101101 ;decode 5retlwB01111101 ;decode 6retlwB00000111 ;decode 7retlwB01111111 ;decode 8retlwB01101111 ;decode 9ContinuebegafdcRB0RB1RB2RB3

52、RB4RB5RB6bcdefgW 存放器I/O B口01101101 00000101 01101101 gafdcbe 【例題6-12】將RC端口與八個LED顯示器相連,請按照表6-4即跑馬燈流動顯示方式,間隔時間為1秒,請編寫相應的軟件程序。 在PIC指令系統中并沒有類似的語句,但假設借助于PIC單片機指令的特殊功能,同樣可以輕松地構成分支跳轉。 分支跳轉實踐上是多條件判別指令,條件本身是一個整數或事件,而跳轉出口應該是整數的信息前往或事件功能內容的詳細表現。 在程序方式上,分支功能跳轉子程序與數據查表子程序的構造類似,只是它是用GOTO語句替代了RETLW語句。 6.4.4 分支功能跳轉

53、子程序 假定W為某個按鍵的輸入值JIANGNADDWFPCL,F ;確定相對偏移量GOTOPKEY0 ;執行PKEY0鍵盤定義功能GOTOPKEY1;執行PKEY1鍵盤定義功能GOTOPKEY2;執行PKEY2鍵盤定義功能 . . . GOTOPKEYN;執行PKEYN鍵盤定義功能 本節給出一些常用的數學運算類子程序,主要有加、減、乘、除等子程序,還有為外擴系統設計中的數碼顯示所需的BCD碼和二進制數據的互換子程序。 均涉及入口條件及出口條件,在調用時務必加以留意。普通入口條件是指參與操作的相關源數據,用S1、S2source等表示,而操作結果用R1、R2result等表示。高低8位數據分別用

54、H、L表示,另外用Z表示中8位數據。 可以將這些固定變量參數定義在PIC16F877的頭文件內,并且單元定義位于映射區域70H7FH,這樣就可以不受程序所在頁面的影響。 6.4.4 常用數學運算類子程序 將兩個無符號16位數相加,編寫雙精度運算程序。 將兩個無符號16位數相減,編寫雙精度運算程序。 將兩個無符號16位數相乘,編寫雙精度運算程序。 將兩個無符號16位數相除,編寫雙精度運算程序。 將一個5位數65 535 的BCD碼轉換成二進制數。 將一個16位二進制數轉換成BCD碼 ui,闡明逼近存放器所生成的數字量太大,應將逼近存放器里的最高位去掉,改置次高位D6為“1;假設ua ui,闡明所

55、生成的數字量還不夠大,應保管該位為“1,此外還需把下一次高位D5置 “1,依此方法逐位比較下去,直至確定最低位D0是“0還是“1。 12.2 A/D轉換器主要技術目的 A/D轉換器有三個主要的技術目的:轉換時間轉換速率、分辨率和轉換精度。 1轉換時間和轉換速率 轉換時間是A/D完成一次轉換所需求的時間,轉換時間的倒數即為轉換速率。 2分辨率 3轉換精度 A/D轉換器的轉換精度定義為一個實踐A/D轉換器在量化值上的差值。可用絕對誤差或相對誤差表示。 A/D轉換器的量化精度稱為分辨率,習慣上用輸出二進制位數或BCD碼表示。例如AD574模數轉換器,可輸出二進制數12位,即用 212個分割對待測模擬

56、量進展量化。 12.3 ADC模塊構造和操作原理 12.3.1 F877片內ADC模塊 F877內部嵌入的ADC模塊是10位數字量精度,共有8個模擬通道。與ADC模塊有關的存放器比較多,共有11個。 ADC控制存放器0:ADCON0 ADC控制存放器1:ADCON1ADC結果存放器:ADRESH :ADRESL 中斷控制存放器:INTCOM中斷標志存放器:PIR1 中斷屏蔽存放器:PIE1A口方向存放器:TRISAE口方向存放器:TRISEE口數據存放器:PORTE1. A/D控制存放器ADCON0 Bit0/ADON:A/D轉換器開關位。0:封鎖ADC,令其退出任務形狀,可以不耗費電流;1:

57、起用ADC,令其進入任務形狀。Bit2/GODONE:A/D轉換啟動控制位兼作形狀位。 在ADON=1的前提下:0: A/D轉換曾經完成自動清零或表示未進展A/D轉換; 1: 啟動A/D轉換過程或闡明A/D轉換正在進展。 Bit5- Bit3/CHS2-CHS0:A/D轉換模擬信道選擇位。 選擇公共通路與哪一個模擬輸入端接通。其中AN5AN7通道只需40腳封裝的型號才具備。CHS2-CHS0:000:選擇信道0,RA0AN0; 001:選擇信道1,RA1AN1; 010:選擇信道2,RA2AN2; 011:選擇信道3,RA3AN3; 100:選擇信道4,RA5AN4; 101:選擇信道5,RE

58、0AN5; 110:選擇信道6,RE1AN6; 111:選擇信道7,RE2AN7。Bit7- Bit6/ADCS1-ADSC0:A/D轉換時鐘及其頻率選擇位。ADCS1-ADSC0: 00:選擇系統時鐘,頻率為fosc/2;01:選擇系統時鐘,頻率為fosc/8;10:選擇系統時鐘,頻率為fosc/32; 11:選擇內部阻容RC振蕩器,頻率為fR C。 . ADC控制存放器ADCON1 主要用于控制相關引腳的功能選擇。對于RA和RE端口的各條引腳功能進展設置,它們可以被設置成模擬輸入、或者參考電壓輸入、或者通用數字I/O引腳。 . ADC控制存放器ADCON1 Bit3- Bit0/PCFG3

59、-PCFG0: A/D轉換引腳功能選擇位。 Bit7/ADFM:A/D轉換結果格式選擇位,自動參數。 0:結果左對齊,ADRESL存放器的低6位讀作0; 1:結果右對齊,ADRESH存放器的高6位讀作0 例如:PCFG3-PCFG0=0011,RE2-RE0定義為通用數字I/O引腳,RA5、RA2、RA1和RA0定義為模擬信道,RA3引腳定義為外接正參考電壓REF+,VSS引腳定義為內接負參考電壓REF-。 3方向控制存放器TRISA、TRISE 方向控制存放器TRISA、TRISE和ADCON1配合運用,有控制ADC模擬通道引腳的功能。作為模擬輸入時,方向存放器中相應位必需被置位。假設方向存

60、放器相應位被清零,把相應引腳設置為輸出方式,也就成通用數字I/O引腳。 ADC模塊的轉換行為與ADCON1存放器內PCHS2-PCHS0位的形狀無關,轉換模擬信道是由ADCON0的CHS2-CHC0確定的。 第13章 PIC系統功能 IC系列單片機在片內集成了一系列具有獨特功能的外圍公用電路。采用這樣的芯片構成的運用系統不僅可以提供最大的系統可靠性,而且由于最大限制地減少外部器件,降低了系統本錢和系統功耗。PIC強大的系統功能及完善的配置方式,對于從事單片機運用開發工程人員來說,提供了非常大的方便。 13.1PIC系統功能及配置 就系統功能及配置情況,PIC系列單片機可以說功能強大、配置完善,

溫馨提示

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

評論

0/150

提交評論