winnie 发表于 2009-3-28 17:58:41

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]
查看完整版本: CCS怎样用指针访问ROM数组