سلام به همه دوستان سال نو مبارک باشه.
برنامه زیر یه فرکانس متر هستش.برنامه به این صورته که پالس به وقفه خارجی اعمال میشه و به ازای هر لبه بالا رونده یک واحد به متغییر 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; } } }
دیدگاه