Код
#define SV_1_OFF PORTC |=(1<<PC0)
#define SV_2_OFF PORTC|=(1<<PC1)
#define SV_3_OFF PORTC |=(1<<PC2)
#define SV_4_OFF PORTC|=(1<<PC3)
#define SV_5_OFF PORTC|=(1<<PC4)
void Init_Port(void)
{
DDRC = 0xFF; //Настроить выводы на выход светодиоды
DDRF = 0xF0; //Настроить выводы на вход "Кнопки"
DDRB = 0xC8;
DDRG |= 0x07;
DDRE |= 0x02; //Выводы прерываний настроены на вход
PORTF &= 0x0F;
SV_1_OFF;
SV_2_OFF;
SV_3_OFF;
SV_4_OFF;
SV_5_OFF;
}
int main(void)
{
unsigned char LCD_Menu=0,
Cikl_Menu = 0,
Flag_1sec=0,
Time_Test_Ust = 0;
volatile unsigned char Seconds_OLD = 0;
wdt_enable(WDTO_2S);
_delay_ms(30); // Задержка на переходные процессы
Init_Port();
.....
}
Светодиоды подключены через резистор на +5В.
В программе они при наступлении аварии зажигаются индицируя номер события.
И поэтому светится все вместе одновременно не могут, кроме включения.
На счет очередности команд в вопросе я ошибся. В программе они идут на оборот.
Отключить WDT можно, но зависание проявляется не часто примерно 1 в 30 включений. Может в этом и есть смысл, но пока непонятен. И отключать не хочется требуется постоянная работа устройства и перезапуск возможен.
Сообщение отредактировал LSerg - May 22 2010, 20:29
Причина редактирования: Оформление цитаты исходника.