http://tw.myblog.yahoo.com/jw!mPx_EhyBGw7MhESxfTRt/article?mid=68
5. PIC HEX 檔案格式如下
:[LL][AAAA][TT][DD....DD][CC]
其中:
LL 表示該行中共有多少位元組資料:注意是位元組數。
AAAA 表示該記錄中資料存放的首位址*2 !請特別注意是2倍首位址
TT 表示該記錄的類型
TT=0,資料記錄;比如“movlw 0xaa”這條指令對應的代碼是30AA,相應的HHHH表示為AA30;
TT=1,文件結束;
TT=2,擴展段位址記錄;
TT=4,擴展線性位址記錄
DDDD 表示該記錄中的資料,即對應指令編譯後的機器代碼,低8位在前,高8位在後
CC 表示該記錄的校驗和,校驗規則是,本行中前面所有的位元組(兩個字元)表示的16進制數相加,再加上CC表示的16進制數,所得的和必須是256的整數倍,
即用16進制表示時末尾兩位都為0。也就是CC的16的補數。(15的補數+1)
:020000021200EA
01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).
//一般的code行
:10 0000 00 8301 0030 8A00 6E28 A000 0308 8301 B000 3D
// 附加
:02 07FC 00 6434 63 // eeprom
:08 4000 00 0100 0200 0300 0400 AE // __IDLOC(1234);
:02 400E 00 C93F A8 // __CONFIG(XT&UNPROTECT&PWRTEN&BOREN&WDTEN&MCLRDIS);
:10 4200 00 0100 0200 0300 0400 0500 0600 0700 0800 8A // __EEPROM_DATA(1, 2, 3, 4, 5, 6, 7, 8);
//文件結束
:00000001FF
configurationbits: 0x014c
ID LOCATION: 8284FFFF
對應的檔為
004000 823f 843f ff3f ff3f - 0000 0000 0000 4c 01
EEPROM 地址00-7f
__EEPROM_DATA(0x91, 0x26, 0x02, 0x00, 0xef, 0x25, 0xff, 0xff);
對應的檔為
004200 9100 2600 0200 0000 - ef00 2500 ff00 ff00
下面接著是 HEX文件
:0E 01A8 00 AB01 AC01 0800 8B17 0B17 8312 0800 87
:08 4000 00 0800 0200 0800 0400 A2 //__IDLOC(8284);
:02 400E 00 4C01 63 // __CONFIG(0x014c);
:10 4200 00 9100 2600 0200 0000 EF00 2500 FF00 FF00 E3
//__EEPROM_DATA(0x91, 0x26, 0x02, 0x00, 0xef, 0x25, 0xff, 0xff);
6. 有關於PICC不支持的器件的問題
在PICC 的使用過程中,有遇到它不支援的器件,可以仿照它原來的格式,按照相關的資料
手冊自己編寫相關的標頭檔,然後在設定檔內加上所要的器件描述。這樣 PICC就能編譯
了。比如:最新出的16F526,按照它的資料手冊編寫526的標頭檔,然後在設定檔內加上
以下幾句:
[16F526]
ARCH=PIC12
PROCID=F526
ROMSIZE=3FF
BANKS=4
RAMBANK=0D,1F
RAMBANK=30,3F
RAMBANK=50,5F
RAMBANK=70,7F
COMMON=0D,0F
DATABANK=1
如果在PIC.h內再加上:
#if defined(_16F526)
#i nclude <pic16f526.h>
#endif
這樣就能像普通晶片一樣編譯了。
例如:PIC16F616的設定檔如下:
[16F616]
MAKE=MICROCHIP
ARCH=PIC14
PROCID=F616
ROMSIZE=800
BANKS=2
RAMBANK=20-7F
RAMBANK=A0-BF
COMMON=70-7F
解決方法:
a. 將pic16f616.h 檔拷貝到
...\HT-PIC\include
或 ...\HI-TECH Software\PICC\include
b. 打開
...\HT-PIC\lib 中的icinfo.ini設定檔,將如下語句添加其中
或 ...\HI-TECH Software\PICC\LITE\9.60\dat 中的picc-lite.ini設定檔,將如下語句添加其中
[16F616]
MAKE=MICROCHIP
ARCH=PIC14
PROCID=F616
ROMSIZE=800
BANKS=2
RAMBANK=20-6F,A0-BF
COMMON=70-7F
c. 將如下語句添加到pic.h標頭檔中
#if defined(_16F616) || defined(_16HV616)
#i nclude <pic16f616.h>
#endif |