MCU:16F727
Hi-Tech C 9.60 PL2
指向RAM 常數的指標
定義在Bank0/1的pointer 只可指向Bank0/1 的Ram
unsigned char *ptr0; //?bank0/1 的pointer
bank2 unsigned char *ptr1; //?bank2/3 的pointer
bank3 unsigned char *ptr2; //?bank2/3 的pointer
若
unsigned char *ptr0; //定義指向bank0/1 的指標
bank2 unsigned char buff[8];
ptr0 = buff; //錯誤!試圖將bank2 內的變數位址賦給指向bank0/1 的指標
若出現此類錯誤的指標操作,PICC 在最後連接時會告知類似於下面的資訊:
Fixup overflow in expression (...)
指向ROM 常數的指標
如果一組變數是已經被定義在ROM 區的常數,那麼指向它的指標可以這樣定義:
const unsigned char company[]=”Microchip”; //定義ROM 中的常數
const unsigned char *romPtr; //定義指向ROM 的指標
lib中的函式,如strcpy等其原形為bank0,所以若要能指向bank3需改函式,ex:
char * strcpyBank3(bank3 char *,const char *);
char * strcpyBank3(bank3 char * to, register const char * from)
{
//register char * cp;
//bank3 char * cp;
//cp = to;
while(*to++ = *from++)
continue;
return to;
}
