|
CCS 的指針 不能指向 儲存程序的 FLASH EEPROM (也許我又說錯了,去CCS問問吧)
印象中 Hi-Tech 的 PICC 的指針 可以指向 ROM
說說看你想要做什麼吧,總會有辦法用 CCS 做到的啦
剛才隨手試試指針,如下,
#include <16F877A.H> // <18F458.H>
#device *=16 // 用 16 bit 指針,才能訪問所有的 bank
#use delay ( clock = 20000000 )
#use rs232 ( baud = 115200, xmit=PIN_C6, rcv=PIN_C7 )
const char str_x[] = {'h','e','l','l','o',' ',0}; // 結尾要加字串結束碼'0'
char str_y[] = {'w','o','r','l','d',0}; // 刪掉結尾的 0 試看看吧
const int8 x[3] = {0x31,0x33,0x35};
int8 y[] = {0x32,0x34,0x36,0x2A,0};
int8 i;
int8 * ptr;
int16 * ptr_16;
#byte TXREG = 0x19
#byte TXSTA = 0x98
#bit TRMT = TXSTA.1
void putcs( char c ) // 傳送字元,亦可傳送常數字串 !
{
while( !TRMT ); TXREG = c;
}
void main()
{
// ptr = x; // 不能指向 PROGRAM FLASH ROM 裡面的數組
// ptr = str_x;
// ptr_16 = str_x;
ptr_16 = str_y;
putcs(" hi ");
puts( " man");
puts( x );
puts( y );
puts( str_x );
puts( str_y );
ptr = y;
ptr = &y[0];
ptr = *y;
y[2]= *ptr;
i = x[0];
i = x[1];
i = 2;
y[1] = x[i];
y[2] = *ptr;
for(i=0;i<3;i++) y[i] = x[i];
i=0;
while ( 1 )
{
printf("\r\n x[%u]= 0x%x, y[%u]= 0x%x", i, x[i], i, y[i]); i++;
delay_ms(1000);
}
} |
|