Da to sam i uradio, stiglao mi je kontroler pa cu da vidim dal u stvarnosti moze da uradi vise, ali sam testirao u proteusu. Program je sledeci
Code:
sbit LCD_RS at RA0_bit;
sbit LCD_EN at RA1_bit;
sbit LCD_D4 at RB1_bit;
sbit LCD_D5 at RB2_bit;
sbit LCD_D6 at RB3_bit;
sbit LCD_D7 at RB4_bit;
sbit LCD_RS_Direction at TRISA0_bit;
sbit LCD_EN_Direction at TRISA1_bit;
sbit LCD_D4_Direction at TRISB1_bit;
sbit LCD_D5_Direction at TRISB2_bit;
sbit LCD_D6_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB4_bit;
char LCD[10];
long unsigned tajmer,inc;
void interrupt(void)
{
if(INTCON.T0IF) //da li je tajmer izbrojao
{
tajmer++;
INTCON.T0IF=0;
}
else if(INTCON.INTF) //da li je RB interupt
{
inc++;
INTCON.INTF=0;
}
}
void main(void)
{
TRISB.RB0=1;
tajmer=0;
inc=0;
INTCON=0b10110000 ;
OPTION_REG=0b11000000;
LCD_Init();
LCD_cmd(_LCD_CURSOR_OFF); a
for(;;)
{
if(tajmer==19532)
{
INTCON.GIE=0;
WordToStr(inc,LCD);
Lcd_Out(1,1,LCD);
tajmer=0;
inc=0;
INTCON.GIE=1;
}
}
}
I kada krenem da merim frekfrenciju vecu od 45Khz odstupanje bude i po 2-3 khz dok kada merim frekfrenciju do 45khz odstupanje je 1hz.
I jos nesto me interesuje, sobzirom da ne mogu da istestiram u proteusu kolo LM311, mislim da sam pogresio u proracunu, zamenjivao sam uF i uH i onda sam rezultat na kraju mnozio sa 1.000.000 i dobijem 503292hz a kada u formuli zamenim odma F i H tj jedinice pomnozim odma sa 1.000.000 i izracunam dobijem rezultat od 503Hz. Koji je od ova dva rezultata tacan?