السلام عليكم اخي الكريم carsper
انا اسف على التأخير ولكن هذا بسبب ان النت كان قد انقطع عندي واليوم فقط اعدته
سؤال مهم : كم هي فولتية الـ Pulses ؟ لانه اذا كانت صغيرة لايمكن ان يشعر بها البيك.
انا سأطرح الان البرنامج ولكن اولا تأكد من فولتية البلس قبل التنفيذ، اذا كانت 5 فولت فأن شاء الله يعمل.
هذا البرنامج:
كود:
char x,clock; // variables declaration
void interrupt() // interrupt program
{
if(intcon.f2==1) // check if interrupt due to tmr0 overflow
{
clock++;
intcon.f2=0;
}
if(intcon.f1==1) // check if interrupt due to input pulse to RB0
{
x++;
intcon.f1=0;
}
}
void main() // main program
{
adcon1=0x07; // make port B deal with digital inputs ( not analog )
trisb=0xff; // port B input
trisb.f1=0; // RB1 output
portb.f1=0; // RB1 = 0 volt
intcon=0b10110000; // enable and setting interrupt
option_reg=0b10000101; // interrupt setting
while(1)
{
loop: // Label
x=0;
delay_ms(1000); // delay 1 second
if(x >= 1200) // check if input pulses in RB0 is 1200 or greater during last second
{
delay_us(500); // delay 500 microsecond
x=0; clock=0; // reset x and clock
while(1)
{
portb.f1=portb.f0; // RB1 = RB0
if(clock >= 61) // check if 1 second is passed
{
if(x >= 1200) // check if input pulses in RB0 is 1200 or greater during last second
{
portb.f1=0; // RB1 = 0 ( reset )
goto loop; // repeat operation
}
x=0; clock=0; // reset x and clock
}
}
}
}
}
هذا هو البرنامج الذي قدرت ان اعمله ولكن كما قلت لك ان هناك مشكلة وهي ان البرنامج يفحص عدد البلس عند نهاية كل ثانية والمشكلة هي ان لو البلس بدأت عند منتصف الثانية الاولى ووصلت عدد البلس 1200 في نصف الثانية الثانية (اي ان خلال ثانية واحدة دخلت 1200 بلس) ولكن البرنامج سيفحص عند نهاية الثانية الاولى وسيرى ان البلس لم تصل الى 1200 بلس وسيقوم بتصفير عداد البلس لكي يحسب عدد البلس في الثانية الثانية ولكن عند نهاية الثانية الثانية سيرى ان عدد البلس ليس 1200 لانه بدأ العد من نهاية الثانية الاولى رغم ان الجهاز اعطى 1200 بلس خلال ثانية ولكن كانت بين الثانية الاولى والثانية الثانية التي قام البيك بالفحص عند نهايتهم، ارجو ان تكون المشكلة واضحة لك ونتمنى من احد الاخوة المحترفين في البرمجة ان يحاول ان يقوم بحلها.
اذا في اي شيء مش واضح فلا تتردد بالسؤال.
بالتوفيق.