




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C11L11 HTC了解使用HI-TECH C® PRO編譯器的增強(qiáng)型中檔PIC® MCU系列© 2010 Microchip Technology Incorporated。所有。C11L11 HTCSlide 1課程安排l 簡(jiǎn)介l 編譯器概述l 數(shù)據(jù)類型和器l 列表文件文件ll 中斷l(xiāng) 運(yùn)行碼l C語言和匯編語言接下來. 簡(jiǎn)介l 編譯器概述l 數(shù)據(jù)類型和器l 列表文件文件ll 中斷l(xiāng) 運(yùn)行碼l C語言和匯編語言HI-TECH C®PRO模式l PRO(需要l 可全面優(yōu)化l 標(biāo)準(zhǔn)(需要證)證)l 優(yōu)化受限l Lite(軟件)l 基本優(yōu)化,l 評(píng)估版包含
2、45天的PRO模式,隨后將恢復(fù)為Lite模式安裝l 安裝時(shí)進(jìn)行激活l 通過服務(wù)器連接可能需要離線激活l 可根據(jù)項(xiàng)目選擇模式與MPLAB®IDE集成l HI-TECH通用工具套件l 安裝在編譯器上的插件l 可于編譯器進(jìn)行更新演示增強(qiáng)型PIC®系統(tǒng)MCU的改進(jìn)l 間接l 多個(gè)FSRl 通過FSR所有器l 新指令和尋址模式l 用于中斷的寄存器l 新指令l Shifts、carry arithmetic和indexed call等器l接下來 簡(jiǎn)介 編譯器概述l 數(shù)據(jù)類型和器l 列表文件文件ll 中斷l(xiāng) 運(yùn)行碼l C語言和匯編語言編譯器應(yīng)用程序編譯順序l 所有C語言代碼都并行編譯l
3、包含庫文件中的模塊l P代碼文件是中間文件編譯器消息傳遞l 通過由驅(qū)動(dòng)器序報(bào)告的系統(tǒng)實(shí)現(xiàn)應(yīng)用程l 驅(qū)動(dòng)器選項(xiàng)可用于:l 調(diào)整格式l 選擇語言l 已的警告ts002.c: 159: (762) constant truncated when assigned to bitfield (warning)編譯器消息傳遞l #pragma警告warning單獨(dú)錯(cuò)誤和disable list消息enable list消息push保存當(dāng)前狀態(tài)pop獲得先前狀態(tài)warning list發(fā)出警告消息error list發(fā)出錯(cuò)誤消息接下來. 簡(jiǎn)介 編譯器概述 數(shù)據(jù)類型和器l 列表文件文件ll 中斷l(xiāng) 運(yùn)行碼l
4、C語言和匯編語言標(biāo)準(zhǔn)數(shù)據(jù)類型l 標(biāo)準(zhǔn)算法類型l char型默認(rèn)為無符號(hào)型l double和float型默認(rèn)為24位寬l 用-double=32和-float=32指定32位編譯器指定類型l 24位short long整型l 用作布爾值的bit型l 每字節(jié)打包8位變量l 調(diào)試文件中使用的位地址l 位變量不為autol 采用截尾方式將整型轉(zhuǎn)換為位類型增強(qiáng)型PIC® MCU的優(yōu)勢(shì)中檔系列增強(qiáng)型中檔系列;ptr.c: 30: a1 += a2; bsf3,5bsf3,6movf110,wbcf3,5bcf3,6addwf32,fbtfsc3,0incf33,fbsf3,5bsf3,6movf
5、111,wbcf3,5bcf3,6addwf33,f 162:;ptr.c: 31: a1 <<= 2;bcf3,0rlf32,frlf33,fbcf3,0rlf32,frlf33,f;ptr.c: 30: a1 += a2; movlb3movf110,wmovlb0addwf32,fmovlb3movf111,wmovlb0 addwfc 33,f156:;ptr.c: 31: a1 <<= 2;lslf32,frlf33,flslf32,frlf33,f標(biāo)準(zhǔn)限定符l const限定符l 對(duì)象為只讀(不能寫入)l 存放于程序空間l 字符串常量("liter
6、al”)具有const char *型標(biāo)準(zhǔn)限定符l volatile限定符l 值可從外部修改l 應(yīng)當(dāng)用于寄存器/變量:l 由硬件修改l 產(chǎn)生電信號(hào)l 由中斷程序修改l 編譯器將嘗試原子l 在一條指令中修改值編譯器指定限定符l near限定符l 嘗試到通用器中l(wèi) persistent限定符被運(yùn)行時(shí)啟動(dòng)代碼清零ll 復(fù)位后仍保持值l bank0/1/2/3限定符l 嘗試將對(duì)象放入指定區(qū)限定符l 由-ADDRQUAL選項(xiàng)的操作限定符l 要求(Require):必須服從限定符l 請(qǐng)求(Request):如果可以則服從l 忽略(Ignore):必須忽略限定符l 拒絕(Reject):限定符將觸發(fā)錯(cuò)誤空間
7、分配調(diào)用圖生成編譯后的堆棧生成絕對(duì)變量SFR變量,例如l 主要用于l 在用于GP變量時(shí)要l 頭文件包含所有SFR的定義:#include <htc.h>volatile near unsigned char PIR1 0x0C;指針l 完全支持?jǐn)?shù)據(jù)和函數(shù)指針l 定義通用格式及示例:對(duì)象類型和限定符*指針限定符指針名稱及初始化char*cp ;const char*cp ;char*constcp = address;const char*constcp = address;指針指針大小和范圍由使用情況決定ll 每個(gè)目標(biāo)的空間/區(qū)l 目標(biāo)的大?。ㄓ绕涫菙?shù)組)l 特殊的限定符不再需要或
8、考慮l 標(biāo)準(zhǔn)限定符維持原有意義指針示例指針示例指針示例增強(qiáng)型PIC® MCU的優(yōu)勢(shì)中檔系列增強(qiáng)型中檔系列;ptr.c: 30: if(*cp = 'x') movf125,wbcfpclath,3bcfpclath,4callstringdirbcfpclath,3bcfpclath,4xorlw120btfss3,2gotol2 151;ptr.c: 31: *lp = 0x1234; movf114,wmovwf4movlw52movwfindfincf4,fmovlw18movwfindf stringdir:movwfbtempmovlwhigh string
9、dir movwf10movfbtemp,waddwf2,f;ptr.c: 30: if(*cp = 'x') movf125,wmovlphigh stringtab callwpagesel $ xorlw120btfss3,2bral255 155;ptr.c: 31: *lp = 0x1234; movf114,wmovwf4clrf5movlw52movwifsr0+movlw18movwfindf函數(shù)調(diào)用l 所有器件使用堆棧,然后恢復(fù)為查找表l 堆棧意味著調(diào)用指令l 查找表速度較慢,但是用深度的調(diào)l 可定義絕對(duì)函數(shù)void special(int a) 0x100.
10、行內(nèi)延遲l 特殊行內(nèi)延遲“函數(shù)” _delayl 已提供的宏也使用_delay和l;wait.c: 10: _delay(10);movlw3movwf?_main u857:decfsz ?_main,f gotou857;wait.c: 12: _delay(2000);movlw3movwf?_main+1 movlw151movwf?_main u877:decfsz ?_main,f gotou877 decfsz ?_main+1,f gotou877nop2接下來. 簡(jiǎn)介 編譯器概述 數(shù)據(jù)類型和 列表文件器文件ll 中斷l(xiāng) 運(yùn)行碼l C語言和匯編語言匯編列表文件l 匯編器列表文件
11、顯示:l C語言或匯編語言源代碼l 輸出匯編代碼和偽指令l C語言程序的:l 函數(shù)信息l 符號(hào)表l 程序調(diào)用圖l 指針圖演示符號(hào)全局l 在匯編符號(hào)前使用下劃線l 應(yīng)用到函數(shù)和變量l 采用偏移量來指定附加的字節(jié)符號(hào)局部l 采用編譯器生成的名稱(基于定義符號(hào)的函數(shù))amevarName接下來. 簡(jiǎn)介 編譯器概述 數(shù)據(jù)類型和器 列表文件文件l 中斷l(xiāng) 運(yùn)行碼l C語言和匯編語言文件文件由以下各項(xiàng)組成:器使用的選項(xiàng)lll 每個(gè)模塊定義的Psectl 按類列出的Psect匯總l 未使用的l 程序符號(hào)表單元演示接下來. 簡(jiǎn)介 編譯器概述 數(shù)據(jù)類型和器 列表文件文件 中斷l(xiāng) 運(yùn)行碼l C語言和匯編語言中斷l(xiāng)
12、 一個(gè)中斷向量(地址4)l 中斷服務(wù)程序(ISR)l 許多中斷源到此處l 中斷標(biāo)志位決定中斷源軟件中碼l ISR可全部用C語言編寫l 由限定符interrupt識(shí)別l 不能包含參數(shù)并且必須是void返回類型l 不能由main程序代碼調(diào)用l 將與中斷向量l 將通過retfie指令返回中斷示例l ISR可使用任何有效的C標(biāo)識(shí)符l 總是要檢查中斷源l 檢查中斷標(biāo)志位和中斷使能位void interrupt isr(void)if(RCIF && RCIE)byte = RCREG;現(xiàn)場(chǎng)切換中檔增強(qiáng)型GIE硬件保存PCPC, PCLATH, WREG, STATUS, FSRs, BS
13、R軟件保存PCLATH, WREG, STATUS, FSR用戶ISR軟件恢復(fù)PCLATH, WREG, STATUS, FSR硬件恢復(fù)PCPC, PCLATH, WREG, STATUS, FSRs, BSR返回retfieretfieGIE使能中斷警告l 僅保存ISR調(diào)用圖所使用的寄存器l 不掃描行內(nèi)匯編l 在ISR內(nèi)的任何位置不要重新使能GIE位重入問題l 所有函數(shù)均不能重入l 當(dāng)前正在調(diào)用時(shí)重入將破壞局部變量void main(void) while( ! ready) wait();/ .void interrupt isr(void) while( ! ready) wait();
14、/ .函數(shù)l 以重入方式調(diào)用的函數(shù)會(huì)被標(biāo)識(shí)符使用前綴i1ll 可以使用pragma來,假如:l 函數(shù)確定以重入方式調(diào)用;或者l 函數(shù)不包含參數(shù)、自動(dòng)或臨時(shí)變量。#pragma interrupt_level 1 void wait(void) .函數(shù)原子級(jí)操作l 中斷是一種匯編功能l 一條C語言可能產(chǎn)生許多匯編指令l 可能會(huì)在表達(dá)式中間中斷l(xiāng) 對(duì)于多字節(jié)對(duì)象很重要l Volatile并不能保證原子級(jí)操作接下來. 指令 編譯器概述 數(shù)據(jù)類型和器 列表文件文件 中斷 運(yùn)行碼l C語言和匯編語言庫代碼l 驅(qū)動(dòng)器選擇相關(guān)的庫文件l 只包含使用的函數(shù)l 先掃描定義的源代碼l 請(qǐng)參見列表文件以確認(rèn)l 每次
15、編譯時(shí)定制需要的程序:l 運(yùn)行時(shí)啟動(dòng)代碼(匯編語言)l Printf函數(shù)(C語言代碼)運(yùn)行時(shí)啟動(dòng)代碼Powerup程序l 如果存在,則在復(fù)位后運(yùn)行Powerup 程序l 提供自動(dòng)使用:l 代碼在powerup psect內(nèi)l 完成時(shí)跳至startPowerup示例#include "aspic.h” GLOBAL powerup,start PSECT poweruppowerup:;Insert powerup code here clrfSTATUSmovlwstart>>8movwfPCLATHgotostart & 0x7FFPrintf函數(shù)l 采用額外步
16、驟檢測(cè)printf的使用l 說明了占位參數(shù)l 定制的printf會(huì)被編譯出l 必須在putch中定義stdoutvoid putch(char data) while( ! TXIF)continue; TXREG = data;接下來. 簡(jiǎn)介 編譯器概述 數(shù)據(jù)類型和器 列表文件文件 中斷 運(yùn)行碼 C語言和匯編語言匯編語言代碼的匯編語言模塊ll法用C代碼嵌入行內(nèi)匯借助以下任編:l 放置一條指令的asm(“ ”);語句;或者 #endasm指令塊l #asml 從句法上來講不是C語言代碼的一部分l 不要用在循環(huán)中l(wèi) 行內(nèi)匯編代碼可能會(huì)被匯編器優(yōu)化改匯編語言與C語言的交互以下項(xiàng)進(jìn)行掃描:ll 只用
17、在匯編中的C符號(hào)l C符號(hào)為volatilel 匯編中的器要求器由CGEN保留l匯編語言與C語言的交互總結(jié)l 今天我們討論了:l 編譯器的組成器配ll 列表文件和l 如何處理中斷文件中的有用信息l 運(yùn)行碼的產(chǎn)生l 哪些領(lǐng)域可采用增強(qiáng)型中檔系列器件進(jìn)行代碼優(yōu)化其他l “Embedded C Programming”l Chuck Hellebuyckl 第二版現(xiàn)已上市l(wèi) 定時(shí)器、中斷、通信和顯示等l 網(wǎng)上研討會(huì)l http:/webinars商標(biāo)Microchip的名稱和徽標(biāo)組合、Microchip徽標(biāo)、dsPIC、KeeLoq、KeeLoq徽標(biāo)、MPLAB、PIC、PICmicro、PICST
18、ART、PIC32徽標(biāo)、rfPIC和UNI/O均為MicrochipTechnology Incorporated在美國和其他或地區(qū)的商標(biāo)。FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MXDEV、MXLAB、SEEVAL和The Embedded Control Solutions Company均為MicrochipTechnology Incorporated在美國的商標(biāo)。Analog-for-the-Digital Age、Application Maestro、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPLAB Certified徽標(biāo)、MPLIB、MPLINK、mTouch、Omniscient Co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版初中歷史與社會(huì)九年級(jí)上冊(cè) 4.1.1 內(nèi)戰(zhàn)的爆發(fā) 教學(xué)設(shè)計(jì)
- Unit5 we're family單元整體(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(三起)(2024)英語三年級(jí)上冊(cè)
- 全國浙教版信息技術(shù)高中選修1新授課 第二節(jié) 在可視化的程序設(shè)計(jì)環(huán)境VB中建立一個(gè)應(yīng)用程序 教學(xué)設(shè)計(jì)
- 2024-2025學(xué)年新教材高中英語課時(shí)分層作業(yè)12含解析新人教版必修1
- 2024-2025學(xué)年新教材高中英語Unit4NaturaldisastersSectionⅣDiscoveringUsefulStructures-限制性定語從句1學(xué)案新人教版必修第一冊(cè)
- Module 9 Population Unit 3 language in use 英文版教學(xué)設(shè)計(jì) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年外研版八年級(jí)英語上冊(cè)
- 18《鐵生銹》教學(xué)設(shè)計(jì) -2023-2024學(xué)年科學(xué)四年級(jí)下冊(cè)青島版(五四制)
- 2025年軌道交通空氣過濾器項(xiàng)目建議書
- 第十課 班級(jí)的組織結(jié)構(gòu)(教學(xué)設(shè)計(jì))2024-2025學(xué)年四年級(jí)下冊(cè)信息技術(shù)龍教版
- 18《古詩三首》第二課時(shí) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版語文六年級(jí)上冊(cè)
- 林下經(jīng)濟(jì)產(chǎn)業(yè)現(xiàn)狀及發(fā)展重點(diǎn)分析
- 消防業(yè)務(wù)開拓方案
- 鑄牢中華民族共同體意識(shí)自評(píng)報(bào)告范文
- 開展戶外探險(xiǎn)與戶外活動(dòng)課件
- HXD3、HXD3CA型電力機(jī)車應(yīng)急故障處理
- 漫畫物理之力學(xué)
- 新浪輿情通建設(shè)方案
- 護(hù)理四種注射法課件
- 單板硬件測(cè)試規(guī)范
- 物流營銷(第四版) 課件 第六章 物流營銷策略制定
- 關(guān)于市推動(dòng)高新技術(shù)企業(yè)發(fā)展的調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論