CCS怎样用指针访问ROM数组
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 = {0x31,0x33,0x35};
int8 y[] = {0x32,0x34,0x36,0x2A,0};
int8i;
int8* ptr;
int16 * ptr_16;
#byte TXREG = 0x19
#byte TXSTA = 0x98
#bitTRMT= 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;
ptr = *y;
y= *ptr;
i = x;
i = x;
i = 2;
y = x;
y = *ptr;
for(i=0;i<3;i++) y = x;
i=0;
while ( 1 )
{
printf("\r\n x[%u]= 0x%x, y[%u]= 0x%x", i, x, i, y); i++;
delay_ms(1000);
}
}
页:
[1]