|
|
  |
Не получается читать и писать массив в eeprom |
|
|
|
May 1 2010, 09:54
|
Знающий
   
Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131

|
Господа, пытасюь записать массив в eeprom, прочитать его и вывести на экран. Выводятся нули. Вот код. Где я не прав? Код #include <mega32.h> #include <delay.h> #include <stdlib.h> #include <stdio.h>
#include <disp.h>
#define MAX_DEVICES 5 #define SEARCH_ROM 0xF0 #define DS1990_FAMILY_CODE 1
//Global vaiable defination unsigned char devices;
// 1 Wire Bus functions #asm .equ __w1_port=0x12;PORTD .equ __w1_bit=2 #endasm #include <1wire.h>
unsigned char rom_code[MAX_DEVICES,9];
u08 variable; ui16 textcolor; // color of text ui16 backcolor; // color of background
ui16 varvar; unsigned char str; unsigned char i,j,a,b,c,d; unsigned long serial;
eeprom unsigned char E_rom_code[5,9]; unsigned char eeprom *ptr_to_eeprom; unsigned char *ptr_to_ram; unsigned char rom_code2[MAX_DEVICES,9];
void main(void) {
backcolor=0xBDF7; textcolor=blue;
DDRA.0=1; PORTA.0=1; DDRD.2=0;
lcd_init(); lcd_clr(); fill_screen(0xbdf7);
for (i=0;i<5;i++) //Заполняю массив { for (j=0;j<9;j++) { rom_code[i][j]=i; } }
for (i=0;i<5;i++) //Вывожу содержимое массива в левую часть экрана { for (j=0;j<9;j++) { lcd_setxy(10+j*7,120-i*20); lcd_str_ram(rom_code[i][j],f8x14, textcolor); } }
ptr_to_ram=rom_code; // Записываю переменную rom_code в eeprom ptr_to_eeprom=E_rom_code; while (*ptr_to_ram) *ptr_to_eeprom++=*ptr_to_ram++;
// copy the string e from EEPROM to // the string r in RAM ptr_to_eeprom=E_rom_code; // читаю из eeprom в новый массив rom_code2 ptr_to_ram=rom_code2; while (*ptr_to_eeprom) *ptr_to_ram++=*ptr_to_eeprom++;
for (i=0;i<5;i++) // Вывожу в правую чать экрана содержимое rom_code2 { for (j=0;j<9;j++) { lcd_setxy(100+j*7,120-i*20); lcd_str_ram(rom_code2[i][j],f8x14, textcolor); //выводятся нули }
} }
|
|
|
|
|
May 3 2010, 14:04
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Пользователь №: 46 084

|
в codeVisionAVR проще записать eeprom unsigned char rom_code[MAX_DEVICES,9]; и переменная unsigned char rom_code[MAX_DEVICES,9]; будет находится в eeprom Дальнейшая работа с переменной, как с обычной.
Сообщение отредактировал e_one - May 3 2010, 14:06
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|