Где же так?
Код: Выделить всё
void contr_eep (void)
{
for(comp=0;comp<66;comp++){
if(mass[comp]!=eep_mass[comp])result=0;}
if(result==1){delayt=0;while(delayt<200){lcd_gotoxy(0,0);lcd_putsf(" TEST EEPROM OK! ");}w=0;}else
{lcd_gotoxy(0,0);lcd_putsf(" TEST EEPROM FAILURE! ");if(eeppp&0b0011111110010000){PORTB.5=0;}else{PORTB.5=1;}if(PINC.3==0)
{PORTB.5=0;dreb_0=6;w=0;}} //ïèùèò êàæäûå ïðèìåðíî 2 ìèíóòû
}comp почему не локальная? Чтобы убедиться, что ошибки нет - надо просмотреть весь текст.
result Также глобальная. Чтобы убедиться, что ошибки нет - надо просмотреть весь текст.
delayt Также глобальная. Чтобы убедиться, что ошибки нет - надо просмотреть весь текст. А ошибка скорей всего есть, так как данная переменная много где используется (судя по текстам, которые Вы давали ранее), в том числе и в обработчике прерываний.
w, опять же глобальная. Назначение непонятное, к тому же поиск затруднен (переменная очень короткая). Много где используется, в том числе и в обработчике прерываний. Скорей всего есть ошибка (и даже не одна).
eeppp&0b0011111110010000 - назначение eeppp и константы непонятно, модифируется в обработчике, используется вне обработчика: как volatile не объявлена, атомарность доступа "побоку". Лень смотреть, но скорей всего есть ошибка.
PORTB.5 PINC.3 непонятно как используются, но используется много где. Если PORTB.5 - это включение alarm-а, то почему не сделать функцию
Код: Выделить всё
void set_alarm (bool_t on)
{
PORTB.5 = on ? 1 : 0;
}
Не много ли для 8-ми строк кода? После внесения правок надо бы проверить все заново.
[uquote="ra9ust",url="/forum/viewtopic.php?p=3221121#p3221121"]А мне главное чтобы работало[/uquote]
В том то и дело, что работает "криво". Я за пару минут нашел ошибку, с которой Вы даже согласились. Поверьте ошибок у Вас куча. Не удивлюсь, если иногда устройство "глючит" и подвисает. Структурированный и понятный код - это не самоцель, это способ значительно уменьшить количество ошибок в ПО и время для исправления ошибок, расширения функциональности.
Но, если Вам удобнее, то Ваше дело - пишите, как хотите.


