سلام به همه دوستان سال نو مبارک باشه.
برنامه زیر یه فرکانس متر هستش.برنامه به این صورته که پالس به وقفه خارجی اعمال میشه و به ازای هر لبه بالا رونده یک واحد به متغییر a اضافه میشه.و در حلقه بینهایت یک ثانیه دیلی میدم و مقدار a چاپ و بعد صفر میشه.این برنامه برای فرکانس های روند درست عمل میکنه ولی مثلا برای فرکانس 2.4 هرتز عدد 2 یا 3 هرتز رو نشون میده (با پرش) بنظرتون مشکل از چیه ؟
http://www.mediafire.com/download.php?b6kmmtbez4c7dev
برنامه زیر یه فرکانس متر هستش.برنامه به این صورته که پالس به وقفه خارجی اعمال میشه و به ازای هر لبه بالا رونده یک واحد به متغییر a اضافه میشه.و در حلقه بینهایت یک ثانیه دیلی میدم و مقدار a چاپ و بعد صفر میشه.این برنامه برای فرکانس های روند درست عمل میکنه ولی مثلا برای فرکانس 2.4 هرتز عدد 2 یا 3 هرتز رو نشون میده (با پرش) بنظرتون مشکل از چیه ؟

http://www.mediafire.com/download.php?b6kmmtbez4c7dev
کد:
#include <mega8.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>
char str1[32],str2[32];
float a=0;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
a=a+1;
}
void main(void)
{
DDRD.6=0;
PORTD.6=1;
DDRD.2=0;
PORTD.2=0;
GICR|=0x40;
MCUCR=0x03;
GIFR=0x40;
lcd_init(16);
#asm("sei")
while(1){
lcd_clear();
while(PIND.6==0)
{
delay_ms(1000);
ftoa(a,2,str1);
sprintf(str2,"F:%S",str1);
lcd_gotoxy(3,0);
lcd_puts(str2);
lcd_gotoxy(4,1);
lcd_puts(str1);
a=0;
}
}
}





دیدگاه