国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

PICC18編譯器命令行驅動及其應用

發布時間:2010-8-2 16:43    發布者:lavida
PIC18F系列產品是美國微芯科技公司的高檔產品,用戶多采用C語言進行編程設計,HI-TECH SoftwarePty.Ltd.公司的PICC18編譯器得到了廣泛應用。大部分應用者使用MPLAB集成環境進行編程,在一些重要或大型應用的開發中有一些問題。例如,如何編寫C語言的庫文件,如何對有代碼限制的程序進行編譯等,若只是采用傳統方式編程,則達不到應有的效果。本文所闡述的HI-TECH C編譯器的PICCl8命令行驅動,正是要解決這些問題。  

1 HI-TECH C編譯器
  
HI-TECH C編譯器提供了C語言的標準特性,同時還加上許多為了適應PIC系列單片機的特定硬件特性而設計的擴展功能,并與匯編器集成在一起提供共享鏈接器和庫管理工具,因而應用較為廣泛。
   
當編譯一個程序時,就有許多操作既可由命令行驅動程序CLD(command-line driver),也可由HPD集成環境驅動程序(覡在為HI-TIDE)獨立完成。在任一情況下,HPD或CLD(HPD下的菜單選項,或CLD的命令行)采用編程者指定的選項來決定哪一個內部應用需要執行,以及什么選項需要發送給每個應用。
   
用戶提供的適合于目標系統的C語言源程序、匯編語言程序,都可以用CLD或HPD進行操作。當用CLD時,用命令行的任何命令來選擇操作方式;當使用HPD時,在源文件列表對話框中鍵入需要的文件。
   
通常使用的源程序可以被編譯到一個庫文件中,這樣文件可被編譯器更方便地處理、更快速地訪問。編譯器可以像其他源文件一樣直接接收庫文件,并用.lib擴展名指定文件的類型,因而庫文件必須按這種方式命名。庫文件在使用CLD時,用命令行的任何命令來選擇操作方式;或使用HPD時,在“源文件列表…”對話框中鍵入需要的庫文件。
   
實際上,在使用MPLAB IDE集成環境進行開發時,是使用了CLD的,只是在平常的應用中沒有注意到而已。下面是在MPLAB IDE中對C源文件進行編譯的結果:  



從上面的結果可以看出,編譯器使用了CLD命令,二者是可以統一。只有了解了CLD后,才能對HI-TECHC編譯器有更深入的理解和掌握。

2 PICCl8命令行驅動器
  
PICC18是調用DOS命令行的驅動器,用來編譯和/或鏈接C語言程序的。PICC18的基本命令格式為:
  
picc18[選項]files[文件庫]
  
通常在文件名之前用破折號“——”來識別,實際上這不是必須的。文件可以是源文件(C或匯編程序)和目標文件的混合。文件庫是庫名字的一個列表,或一L選項源文件。目標文件和庫文件通過文件類型或擴展名被PICC18區分,類型如表1所列。  


  
PICC18將檢查每個文件并完成適當的操作。C文件將被編譯,匯編文件將被匯編。最后,所有通過編譯或匯編得到的目標文件或者在命令行中明確列出的目標文件,都將與標準運行代碼庫和任何用戶指定庫鏈接,除非它們被某種選項禁止。僅當引用源代碼時,庫中函數才能被鏈接成結果輸出文件。僅用目標文件(如沒有源文件)作為凋用PICC18,意味著僅執行鏈接階段,這是一種典型的用法。用PICC18的C選項編譯幾個自己編寫的源文件作為目標文件,然后僅用生成的目標文件和適當的庫(及適當選項)調用PICCl8來創建最終程序。
  
2.1 長命令行
   
PICC18驅動器是32位的視窗軟什,可以處理超過128字符長的命令行。驅動器可以通過DOS的批文件調用,或通過命令文件傳遞選項。當使用批文件時,送入PICC18的命令行必須列成一行。在命令文件中,驅動器選項可以被傳送至多行,這是通過一個空格鍵緊接一個反斜線“\”再接一個回車鍵來分開各行實現的。例如,一個命令文件可以包含:  

   
因為沒有提供命令行指令,因此PICC18將讀xyz.cmd得到它的命令行指令。命令文件也可以通過@符號讀出。
  
例如:
PICC18@xyz.cmd
  
2.2 PICC18編譯器選項
   
編譯器的設定主要基于ROM代碼的生成。表2列出了PICC18編譯器的幾個常用的重要選項。  


  
①定義處理器類型:-processor。  
這一選項決定了哪個處理器被使用。例如,用命令行-18c452來編澤PIC18C452。用戶也可以增加自己的處理器到編譯器。
②指定ROM偏移量:-Aaddress。
-A選項是用來為ROM映像區指定基地址的。若該選項要求引導輸入這樣的調試工具,則該詞試工具期望ROM映射地址始于非零地址。該選項影響所有基于ROM的部分,包括復位和中斷向量,以及放置代碼和常量數據的鏈接器分類。如果基地址指定到外部存儲器,則必須用-ROM選項指定外部存儲器的可用地址范圍。
  ③優化器及優化優先級選項:-O和-Zg。
-O表示調用PICC18的優化器,-Zg選項在代碼生成路徑調用全局優先級。這對于代碼長度的縮減及內部RAM的使用有著重要意義。該優先級沒有傳遞優先級苛刻,但對代碼長度的縮減很有意義。在一個執行函數的基礎上,全局優先級可以最優化寄存器的使用。它也利用代碼中常最的傳遞來避免不必要的存儲器訪問。
  
該選項默認的級為1(最低優先級)。優先級可以設置為l~9的任意一級(9為最高優先級)。數字表明優先級試圖縮減代碼的程度。對于PICCl8,高于3的優先級通常沒有什么用處。
   
了解了命令行驅動后,對第1節中在MPLAB IDE中對C源文件進行編譯的例子就有了更深入的理解。  

3 命令行驅動應用
   
下面介紹命令行驅動在實際應用中的一些例子。通過這些例子,可以對命令行驅動的應用有一個初步的認識,并可以此為基礎,對PICCl8編譯器進行深入的學習和應用。
  
3.1 命令行驅動編譯源文件
   
在Win2000下進行如下操作:執行“開始”→“運行”命令,然后輸入“CMD”;或執行“開始”→“程序”→“附件”→“命令提示符”命令,彈出cmd.exe的界面,如圖1所示。若cmd.exe中出現的當前目錄不是在C盤根目錄下,則需要通過輸入命令“cd c:\”進入C盤根目錄。輸入“cd htsoft\picl8\bin”命令,進入PICCl8.exe軟件所在目錄 (默認安裝時的目錄),如圖2所示。  
  
(1)編譯Izqmwyz.c
   
輸入“picc18-18f458 lzqmwyz.c”,含義是使用piccl8.exe編譯器對lzqmwyz.c源文件進行編譯,單片機型號為18f458(即PIC18F458單片機)。這時會輸出所需要的編譯結果,生成的文件中,以hex為擴展名的lzqmwyz.hex較為重要。若源程序有語法錯誤,還會顯示出錯信息及所在的行。
  
注意:在cmd.exe界面中進行操作時,所有的源文件均存放在PICC18.exe同一目錄下(PICCl8.exe默認安裝目錄是c:\HTSOFT\PIC18\Bin)。在本文中,PICC18均采用此默認安裝目錄。這里lzqmwyz.c存放在c:\HTSOFT\PICl8\Bin下。
  
(2)-noerrata選項
   
“-noerrata”選項不使能輸出代碼的錯誤修改,而缺省時,會對編譯器的輸出代碼有所修改。有些芯片沒有正誤表,不會用編譯器對此修改。這個選項可以用編譯器來禁止任何正誤表方位。當正誤表變化時,會安全禁止。對有些芯片(如PIC18F458等),PICCl8對程序的代碼長度進行了限制(一般限制在0x4000之內,即16KB之內)。這就是同上的PICl8應用論壇中。有些網友提出代碼有限制的原因。有些編程者則在程序中編寫了下面的提示程序:  



若編譯的程序代碼超出了這個范圍,將會列出出錯信息。

圖3是對solar050408.c源文件編譯時,代碼超過了Ox4000長度時出現的提示信息。  


  
使用-noerrata選項時,solar050408.c源文件編譯就會得到正確的編譯結果,命令為“picc18-18f458solar050408.c-o-zgl-noerrata”。命令中“-o”表示調用PICCl8的優化器,“-zg1”表示調用優化器時采用的優先級為1級。
  
3.2 庫文件生成及應用
  
3.2.1 C源文件
  
(1)包含main函數的lzqmwyzl.c源文件  


  
(2)包含function_X3函數的funcx3.c源文件  



3.2.2 生成庫文件
   
用3.2.1中的兩個文件直接創建一個應用程序,這在平時的應用中是經常用到的。這里介紹將funcx3.c源文件生成庫文件,再由lzqmwyz.c調用的方法,也就是自己制作庫文件進行使用。
  
(1)生成obj文件
   
將funcx3.c源文件存放在PICC18.exe同一目錄下,然后在cmd.exe中輸入“PICCl8-18f458-C funcx3.c”。-C選項是將幾個源文件編譯成目標文件(.obj文件)。這里是將funcx3.c的源文件編譯成funcx3.obj文件,然后就可以在c:\HTSOFT\PICl8\Bin目錄下找到funcx3.obj文件。
  
(2)生成lib庫文件
   
在cmd.exe中輸入“libr r fun.lib runcx3.obj”。其中r選項為替換模塊。fun.lib是由函數funcx3.c制作的庫文件的文件名,如圖4所示。  


  
3.2.3 庫文件應用
   
圖5是使用3.2.1的lzqmwyzl.c源文件和調用3.2.2制作的庫文件fun.1ib的工程。這時使用到的就只有lzqmwyzl.c源文件和fun.1ib文件,而不必再應用包含runetton_X3函數的funcx3.c源文件。  

  
結語
   
PICC18編譯器命令行驅動在實踐中有許多應用,只有了解了它,才能對C編譯器有更多、更深入的認識。限于篇幅,本文只起拋磚引玉的作用,提供一種思路供廣大編程者參考;同時,對于PICC也有相應的參考價值。
本文地址:http://www.qingdxww.cn/thread-18701-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
  • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • 更佳設計的解決方案——Microchip模擬開發生態系統
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美香蕉爽爽人人爽观看猫咪 | 极品毛片 | 日本在线观看永久免费网站 | 欧美高清视频在线观看 | 精射女上司 | 99精品久久99久久久久久 | 香蕉视频国产精品人 | 国产精品高清在线观看 | 国产成人a v在线影院 | 好吊色青青青国产欧美日韩 | 久久免费久久 | 欧美视频免费看 | 免费不卡毛片 | www.av网站| 性欧美大战久久久久久久久 | 狠狠丁香激情久久综合 | 香蕉在线精品视频在线观看6 | 免费精品国偷自产在线读大二 | 99精品视频在线免费观看 | 91欧美精品综合在线观看 | 中文字幕1区2区 | 在线观看精品自拍视频 | 四虎4545www国产精品 | 老司机精品福利在线 | 正在播放日韩 | 中文字幕在线日本 | 4438成人网| 日韩二三区 | 亚洲综合视频 | 韩国精品一区二区久久 | 日本精品在线观看视频 | 手机看片日本 | 国产美女白嫩嫩在线观看 | 国产精品福利片免费看 | 亚洲精品天堂在线 | 欧美日韩不卡视频 | 日本欧美一区二区 | 91网址在线观看 | 欧美不卡视频在线 | 欧美在线免费播放 | 日本特黄特色大片免费看 |