Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подскажите как реализовать.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
TamTam
Есть две процедуры одна запись в eeprom мк ( byte_write(адрес,значение) ) другая чтение (byte_read(адрес))

обе процедуры рабочие на все 100.

требуется :
1. написать строку дефайн которая будет возвращать значение байта
2. создать строку дефайн которая инвертировала состояние байта, если 1 то 0 если 0 то 1

с первым не вопрос
Код
#define ALARM                   byte_read(127);  // возвращает значение 127 байта в памяти eeprom мк


а вот как 2 реализовать.
GetSmart
Цитата
а вот как 2 реализовать.

#define STORE(a) byte_write(127,a)
или
#define STORE(a,d) byte_write(a,d)

тока зачем так?
TamTam
Цитата(GetSmart @ Jun 1 2006, 04:12) *
Цитата
а вот как 2 реализовать.

#define STORE(cool.gif byte_write(127,cool.gif
или
#define STORE(a,cool.gif byte_write(a,cool.gif

тока зачем так?


подправил вопрос, нуно инвертировать значение байта
GetSmart
Инвертировать где? В eeprom?

#define INVERT byte_write(127,~byte_read(127))
или
#define INVERT ~byte_read(127)
TamTam
Цитата(GetSmart @ Jun 1 2006, 04:35) *
Инвертировать где? В eeprom?

#define INVERT byte_write(127,~byte_read(127))
или
#define INVERT ~byte_read(127)


в eeprom
Так то оно так только один момент,
если записано 01 то соответственно после выполнения строки
Код
#define INVERT byte_write(127,~byte_read(127))

мы получим FE а надо 00

на этом я и застрял
GetSmart
Цитата
мы получим FE а надо 00

на этом я и застрял

Ну прямо как ребёнок :-)

#define INVERT byte_write(127, byte_read(127) ^ 0x01)
defunct
Цитата(TamTam @ Jun 1 2006, 03:43) *
мы получим FE а надо 00

Вот дилема..
ну сохраняйте не 0 и 1, а 0 и -1 (он же 0xFF) и все будет инвертироваться как надо.
TamTam
Получилось вот так
Код
#define CHANGE_ALARM            byte_write(127, (byte_read(127)) ^ (1<<0));


но лично мне кажется что я перемудрил
ivstech
Например, так
#define ALARM_W(ADDR, VAL) byte_write((ADDR),(VAL));
GetSmart
Цитата
но лично мне кажется что я перемудрил

Эт точно!
Лишняя точка с запятой в конце. Ну и пара скобок вокруг byte_read.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.