如何将内存从内存写入数组?

时间:2011-12-28 08:04:03

标签: c arrays loops microcontroller

我在

下面有一个数组
unsigned char pat6[8] = {0x3C,0xFF,0xC3,0xC3,0xC3,0xC3,0xFF,0x3C,};

如何从我从这里读到的内存内容中填充数组?

unsigned char read_byte()           //reading from EEPROM serially
{
    unsigned int i;
    sda=1;
    reead=0;
    for(i=0;i<8;i++)
    {
        reead=reead<<1;
        scl=1;
        _nop_();
        _nop_();
        if(sda==1)
            reead++;
        scl=0;
    }
    sda=0;
    return reead;               //Returns 8 bit data here
}       

由于

void display_clear(unsigned char pattern[])//, int num)

 {
    unsigned int cnt, col, row; //, num ;


     row = 1;
          //for (cnt = num*8 ; cnt < (num*8+8) ; cnt ++ )   //display pattern each character
          for (cnt = 0 ; cnt < 8 ; cnt ++ ) //display pattern each character
            {
              P3 = ~pattern[cnt];
              P1 = ~row;

              delay_ms(100) ; // delay of 1 ms
              row = row<<1;


            }

       row = 0x00;

 }

朋友,上面的功能,我用来显示数组..... 我想从串行存储器中填充数组中的数据

我试着这样做:

//begin of read 2048 byte from serial memory AT24C16

     for (i=0;i<2048;i++)
      {
          j[i]=read_byte();
          aknowledge();
      }

   //end of read 2048 byte from serial memory AT24C16

并收到错误:

24C16_RW.C(229):错误C216:非数组或维数过多的下标

还有其他方法吗?

感谢

2 个答案:

答案 0 :(得分:0)

我不知道我是否正确理解了您的问题,但我认为使用for语句会有效。

for (i=0, i<8,i++)
pat6[i]=read_byte();

我没有得到的是读取函数如何知道如何顺序读取。我认为通过该实现,整个数组将填充相同的字节。

答案 1 :(得分:0)

请遵循以下伪代码。

function write_into_array()
{
    for i=0 to 8 {
        array[i] = value-to-be-stored;
    }
}

但是在你的代码中,scl变量声明在哪里?或者它是一个全局变量,就像pat6[]数组一样?

OTOH,你应该在最后摆脱额外的,

unsigned char pat6[8] = {0x3C,0xFF,0xC3,0xC3,0xC3,0xC3,0xFF,0x3C,};