почему VMLAB ругается на сторожевой таймер? и где можно сэмулировать осцилограф, проверить будет ли там 36 КГц?
- Код: Выделить всё
#include <mega8.h>
int flash_counter=0;
int active_tsop=0;
int delay=0;
void init_tsop(void)
{
flash_counter=40;
GIFR=0b10000000;
GICR=0b10000000;
}
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
active_tsop = 1;
}
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x91;
if (flash_counter>0)flash_counter--;
if (flash_counter==0)
{
//TIMSK=0b00000000;
GICR=0b00000000;
delay++;
}
else
{
PORTC.0 = ~PORTC.0;
}
if (delay==40)
{
init_tsop();
delay=0;
}
}
void main(void)
{
#asm("wdr")
WDTCR |= (1<<4)|(1<<3);
WDTCR |= (0<<3);
PORTC=0b00000000;
DDRC= 0b00000011;
PORTD=0b00001000;
DDRD=0x00;
TCCR0=0x01;
MCUCR=0x00;
#asm("sei")
init_tsop();
TIMSK=0b00000001;
while (1)
{
if (flash_counter==0)
{
if (active_tsop!=0)
{
PORTC.1=1;
}
else
{
PORTC.1=0;
}
}
};
}