این برنامه در کتاب حسین چهرقانی میباشد . چاپ اول 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);
}
}





دیدگاه