این برنامه در کتاب حسین چهرقانی میباشد . چاپ اول 1390 ، فصل ششم ، صفحه 150 ، مثال 6-1 . این برنامه به زبان c نوشته شده است.
سوالات :
در حلقه ()void main :
1) دستور ;freq=rise*0.2:
- چرا مقدار rise در عدد 0.2 ضرب شده است ؟
- آیا مقدار 0.2 همان مقدار تأخیر تایمر 1 هست ؟
- مقدار 0.2 چگونه محاسبه شده است ؟
- چرا در LCD واقع در پروتئوس هیچ عددی نمایش داده نمیشود؟
سوالات :
در حلقه ()void main :
1) دستور ;freq=rise*0.2:
- چرا مقدار rise در عدد 0.2 ضرب شده است ؟
- آیا مقدار 0.2 همان مقدار تأخیر تایمر 1 هست ؟
- مقدار 0.2 چگونه محاسبه شده است ؟
- چرا در LCD واقع در پروتئوس هیچ عددی نمایش داده نمیشود؟
کد:
#include <16F877A.h> #FUSES HS #use delay(clock=20000000) float rise,freq; int1 i=0; #define LCD_DATA_PORT 6 #define LCD_TYPE 2 #include <lcd.c> #int_ccp1 void ccp1_isr(void) { set_timer1 (0); if (i==1) rise=ccp_1; i=1; } void main() { lcd_init(); set_tris_c(0xff); enable_interrupts(INT_ccp1); enable_interrupts(GLOBAL); setup_ccp1(CCP_CAPTURE_RE|CCP_CAPTURE_DIV_4); setup_timer_1(T1_INTERNAL|T1_DIV_BY_4); while(true); { freq=rise*0.2; freq=freq/4; lcd_putc('\f'); lcd_gotoxy(1,1); printf(LCD_PUTC,"FRE=%fKHZ",1/freq*100); delay_ms(100); } }

دیدگاه