ELcat писал(а):... Это чтобы человек умел выстраивать свои мысли в виде связанных и понятных окружающим логических цепочек вместо непонятной "каши в голове".
Тут, к сожалению (или к счастью) ромбики не помогут. Этим ведают интеллект&&образование.
ELcat писал(а):... Это чтобы человек умел выстраивать свои мысли в виде связанных и понятных окружающим логических цепочек вместо непонятной "каши в голове".
eduardo писал(а):Дело втом,что я не знаю как это написать на си
Код: Выделить всё
if(PIND.1==1) // если нажать кнопку PIND.1 состояние PORTB присваивается переменной
{b=PORTB;} // b,объявленной в еепромЭто точноАlex писал(а):Иначе ваш еепром будет дохнуть быстрее, чем вы будете догадываться об этом
, нужно, хотябы, проверять значение, и если оно другое, тогда писать.Код: Выделить всё
char number_of_element(unsigned char etalon,unsigned char arraysize,unsigned char *arr){
char i ;
for(i=0;i<arraysize;i++)
{
if(arr[i] == etalon)return i;
}
return -1;
}
//применение
Required_num =number_of_element(0x01,11,a) ;//Тут вернет -1(255 в системе unsigned char)
Required_num =number_of_element(0x4F,11,a) ;//Тут вернет 4 так как это четвертый элемент списка
Код: Выделить всё
interrupt [TIM0_OVF]void timer0_ovf_isr(void)
{
c++;
if(c>=255)
{
f=1;
if(d>=11)d=0;
mig=~mig;
}}
if(PIND.0==1)&&(f==1) //если кнопка PIND.0 нажата,начинается перечисление массива
{f==0;PORTB=a[d++];} //после отпускания кнопкиPIND.0 состояние PORTB остается таким,каким было на момент отпускания
if(PIND.1==1) // если нажать кнопку PIND.1 состояние PORTB присваивается переменной
{b=d;} // b,объявленной в еепром
eduardo писал(а):компилятор выдает ошибку––illegal address.
блин забыл общие скобки в условииКод: Выделить всё
if((PIND.0==1)&&(f==1)){ //если кнопка PIND.0 нажата,начинается перечисление массива
//Вообще можно и так : if(PIND.0&f){} смысл тот же,только короче
f=0;//очищаем флаг
PORTB=a[d++];//после отпускания кнопки PIND.0 состояние PORTB остается таким,каким было на момент отпускания
if(d>=11)d=0;} //Это из прерывания таймера можно убрать 
Во первых это 100 000 циклов. Но даже такого количества, если их дёргать 1 раз в минуту, хватит лишь на полгода (лично проверено!).eduardo писал(а):Хотелось,чтобы данные сохранялись после отключения питания. Ведь еер выдерживает 10000 циклов записи/стирания вроде как?.
eeprom unsigned char b; // при прошивке МК в переменную изначально записано 0х00
Так нужно делать(!) - запись делать только по мере необходимости.Или так тоже нельзя?
Apparatchik писал(а):CVAVR это пародия на Си.
и продолжение...Apparatchik писал(а):Вот только что проверил CVAVR 1.25.9 если объявить переменную не в начале функции, а непосредственно перед циклом, компилятор дает ошибку must declare first in block. В GCC конечно таких проблем нету.
Apparatchik писал(а):Я понял, но в Eclipse я могу её объявить где захочу.