void init_timer();
void setup()
{
volatile long i,j,y;
char *dira,*dirk,x;
char *outa,*ink;
dira=0x30;
dirk=0x107;
outa=0x31;
ink=0x106;
*dira=0x01;
*dirk=0x00;
unsigned long temp_faultin1,temp_faultin,temp_accept,temp_reset;
temp_faultin=0;
temp_accept=0;
temp_reset=0;
temp_faultin1=0;
while(1)
{
x=*ink;
if((x & 0b00000001) == 0b00000001){
temp_faultin=1;
}
if((x & 0b00001000) == 0b00001000){
temp_faultin1=1;
}
if((x & 0b00000010) == 0b00000010)
{
temp_accept=1;
}
if((x & 0b00000100) == 0b00000100)
{
temp_reset=1;
}
if(temp_faultin & !temp_accept)
{
for(i=0;i<500000;i++);
//init_timer();
outa= 0x01;
for(i=0;i<500000;i++);
}
if(temp_faultin1 & !temp_accept)
{
for(i=0;i<50000;i++);
outa=0x02;
//init_timer();
for(i=0;i<50000;i++);
}
if(temp_faultin & temp_accept){
*outa=0x01;
}
if(temp_faultin1 & temp_accept){
*outa=0x02;
}
if( temp_reset==1 )
{
temp_faultin=0;
temp_accept=0;
//x=0x00;
*outa=0x00;
temp_reset=0;
temp_faultin1=0;
}
}
}
void init_timer()
{
volatile char *Timer1_TCCR1A=0x80;
volatile char *Timer1_TCCR1B=0x81;
volatile short *Timer1_TCNT1=0x84;
volatile char *Timer1_TIMSK1=0x6F;
volatile short *Timer1_OCR1A=0x88;
*Timer1_TCCR1A=0;
*Timer1_TCCR1B=0;
*Timer1_TCNT1=0;
*Timer1_OCR1A=9000;
*Timer1_TCCR1B=0x0C;
*Timer1_TIMSK1=0x02;
}
ISR(TIMER1_COMPA_vect)
{
// volatile char *portf_dir=(volatile char *)0x30;
// *portf_dir=0x01;
volatile char *outa;
outa=0x31;
unsigned long temp_faultin1,temp_faultin,temp_accept,temp_reset;
if(temp_faultin & !temp_accept){
*outa^= 0x01;
}
if(temp_faultin1 & !temp_accept){
*outa=0x02;
}
}