Usiluje napisac program ,ktory bedzie obslugiwac pilot TV.Jako odbiornik mam tsop1736 podpiety zgodnei z dokumentacja.Program ma byc bez uzycia timerow poniewaz sa mi one potrzebne do sterowania silnikami.Zamieszczam kod programu ,ktory nie dziala poprawnie i bardzo prosze o jakies sugestie
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "HD44780.c"
#define F_CPU 1000000
int tab[28];
int licznik=0;
int main (void)
{
LCD_Initalize();
LCD_Clear();
//TCCR1B |= (1 << WGM12); //pwm
DDRD =0x00;//
PORTD=0xff;
MCUCR = (1<<ISC00) | (0<<ISC01) ;
GICR |= (1<<INT0);//włączenie przerwania od INT1
sei();
while(1)
{
for(int k=0;k<14;k++)
{
LCD_WriteInt(k,0 ,1, tab[k]);
LCD_WriteInt(k,1 ,1, tab[k+14]);
}
}
}
SIGNAL(SIG_INTERRUPT0)
{
unsigned int czas_trwania_impulsu=0;
//for(i=0;i<14;i++)
//{
for(czas_trwania_impulsu=0;czas_trwania_impulsu<40;czas_trwania_impulsu++)
{
if(bit_is_set(PIND,PD2))
{
break;
}
}
if(czas_trwania_impulsu>25)
{
tab[licznik]=1;
}
else
{
tab[licznik]=0;
}
licznik++;
if(licznik>27)
{licznik=0;
_delay_ms(1000);
}
//_delay_us(200);
//}
LCD_Clear();
//LCD_WriteInt(0,1,3,czas_trwania_impulsu);
//_delay_ms(30);
}
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "HD44780.c"
#define F_CPU 1000000
int tab[28];
int licznik=0;
int main (void)
{
LCD_Initalize();
LCD_Clear();
//TCCR1B |= (1 << WGM12); //pwm
DDRD =0x00;//
PORTD=0xff;
MCUCR = (1<<ISC00) | (0<<ISC01) ;
GICR |= (1<<INT0);//włączenie przerwania od INT1
sei();
while(1)
{
for(int k=0;k<14;k++)
{
LCD_WriteInt(k,0 ,1, tab[k]);
LCD_WriteInt(k,1 ,1, tab[k+14]);
}
}
}
SIGNAL(SIG_INTERRUPT0)
{
unsigned int czas_trwania_impulsu=0;
//for(i=0;i<14;i++)
//{
for(czas_trwania_impulsu=0;czas_trwania_impulsu<40;czas_trwania_impulsu++)
{
if(bit_is_set(PIND,PD2))
{
break;
}
}
if(czas_trwania_impulsu>25)
{
tab[licznik]=1;
}
else
{
tab[licznik]=0;
}
licznik++;
if(licznik>27)
{licznik=0;
_delay_ms(1000);
}
//_delay_us(200);
//}
LCD_Clear();
//LCD_WriteInt(0,1,3,czas_trwania_impulsu);
//_delay_ms(30);
}