void init_port();
void init_timer();
volatile char *f_data = 0x31;
volatile char *_TCCR1A = 0x80;
volatile char *_TCCR1B = 0x81;
volatile short *_TCNT1 = 0x84;
volatile short *_OCR1A = 0x88;
volatile char *_TIMSK1 = 0x6F;
void setup() {
init_port();
init_timer();
volatile char *k_dir = 0x107, *k_data=0x108;
*k_dir = 0xff; *k_data=0x01;
//delayMicroseconds(5000);
*_TCCR1B = 0x0D; //CTC mode & 1024 prescaler
}
void init_timer(){
*_TCCR1A = 0;
*_TCCR1B = 0;
*_TCNT1 = 0;
*_OCR1A = 60000;
*_TIMSK1 = 0x02; //enable timer compare interrupt
}
void init_port()
{
volatile char *f_dir = 0x30;
*f_dir = 0x01;
}
ISR(TIMER1_COMPA_vect)
{
*f_data = 0x01;
for (volatile long i = 0; i < 1000000; i++);
*f_data = 0x00;
*_TCCR1B = 0x00;
}
void loop(){}