Как записать контент из памяти в массив? - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть массив ниже

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 голосов
/ 28 декабря 2011

Пожалуйста, следуйте приведенному ниже псевдокоду.

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,};
0 голосов
/ 28 декабря 2011

Не знаю, правильно ли я понял ваш вопрос, но думаю, что с оператором for будет работать.

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

что я не понимаю, так это то, как функция чтения будет знать, как читать последовательно. я думаю, что при такой реализации весь массив будет заполнен одним и тем же байтом.

...