[an error occurred while processing this directive]
|
немного вопросов и поправок
unsigned char flag = 10;
long k = 0;
long j = 0;
interrupt [INT0_vect] void INT0_interrupt(void)
{
flag = 20;
PORTB |= 4; // нет смысла, все равно в он по флагу в майн выставиться, или так важен момент прихода //прерывания ? но все равно f1() токо в теле пройдет
GIMSK = 0x00;
}
interrupt [INT1_vect] void INT1_interrupt(void)
{
flag = 20;
PORTB |= 4; // нет смысла
GIMSK = 0x00;
}
void f1(void);
void main(void)
{
DDRD = 0x63;
DDRB = 0xDF;
PORTD = 0xFF;
PORTB = 0x20;
GIMSK = 0xC0;
_SEI();
while(1)
{
if (flag == 20) f1();
//for (j=0; j<3000; j++){
//PORTB |= 2; ?????
//}
PORTB|=2;
for (j=0; j<3000; j++);
// for (j=0; j<3000; j++){
// PORTB &= 0xFD; // опять не понятно
// }
PORTB&=0xFD;
for (j=0; j<3000; j++);
}
}
void f1(void)
{
PORTB |= 0x04;
}
и далее, выходы у атмег сильноточные но по нулю. Надо катод на ногу садить, а питание на анод подать, и управлять нулем(тогда загориться), 1 не горит.
И проверь еще раз приход прерывания, (хотя бы вместо пррывания поставь просто в вайле опрос ноги и там флаг меняй)
E-mail: info@telesys.ru