برنامج مولد نبضات بتردد 1KHz باستخدام المقاطعة بالمؤقت Timer0

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

برنامج مولد نبضات بتردد 1KHz باستخدام المقاطعة بالمؤقت Timer0

مُساهمة من طرف Admin في الجمعة مايو 01, 2015 11:20 pm

برنامج مولد نبضات بتردد 1KHz باستخدام المقاطعة بالمؤقت Timer0
البرنامج :

الكود:


#INCLUDE <16F877A.h>
#use delay(clock=4000000)

#int_TIMER0
void TIMER0_isr(void) {
  output_toggle(PIN_B0);
  set_timer0 (26);  }              //Set initial value 

void main() {
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);  //Timer0 setup : internal & divided by 2

  set_timer0 (26);                    //Set initial value 
  enable_interrupts(INT_TIMER0);      //Enable local timer0 interrupt
  enable_interrupts(global);          //Enable global interrupts

  while (1);        //endless loop
}


فى هذا البرنامج :
• نبضات الساعة الخارجية المستخدمة ترددها 4 ميجاهرتز ، إذا تردد الساعة الداخلية يكون واحد ميجا هرتز أى نبضة كل واحد ميكروثانية .
• تمر هذه النبضات على قاسم التردد السابق للمؤقت بمعامل قسمة على “2” فيكون خرجه نبضات بتردد 500 كيلوهرتز أى نبضة كل 2 ميكروثانية .
• تصل هذه النبضات إلى دخل المؤقت timer0 حيث تم وضع قيمة ابتدائية قدرها “26” ليصل إلى التجاوز overflow بعد (256 – 26 = 230 ) أى يحدث تجاوز بعد زمن قدره (2 * 230 = 460 us) والتى تصل عمليا إلى 500 ملى ثانية توصيل و500 ملى ثانية فصل ويكون الومن الدورى واحد ملى ثانية وبالتالى فإن تردد النبضات الناتجة يكون 1000 هرتز (مقلوب الزمن الدورى بالثوانى) أى واحد كيلوهرتز .








Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى