วันอาทิตย์ที่ 3 ตุลาคม พ.ศ. 2553

Lab4: การใช้งาน Module CCP(PWM)


#include<16F877A.h>
#define  CLOCK_SP    20000000 // ความเร็วสัญญาณนาฬิกา
#fuses HS                     //   โหมดการทำงานแบบ High Speed
#fuses NOLVP,NOWDT           // No Low Voltage Program, No Watchdog timer
#fuses NOPROTECT              // Code no protection
#use delay (clock=CLOCK_SP)   // ใช้งานฟังก์ชัน delay_ms() & delay_us()

void main(void){
    int16 duty = 500;                              //ประกาศตัวแปร duty เป็นแบบ integer 16 bits
    enable_interrupts(GLOBAL);           //เปิดการทำงาน interrupt รวม
    enable_interrupts(INT_CCP1);         //เปิดการทำงาน interrupt CCP1
    setup_ccp1(CCP_PWM);                //กำหนดค่า CCP1 ทำงานโหมด PWM
    setup_timer_2(T2_DIV_BY_16, 255, 1);  //กำหนดการใช้งาน Timer2
    set_timer2(0);                                   //ตั้งค่า Timer2 เป็น 0
  
while(true){

   set_pwm1_duty(duty);                       //ตั้งค่า PWM ความถี่ 1.22kHz(รายละเอียดใน Timer2) duty cycle ประมาณ 50% (0 – 1023 or 0 – 100%)
  
}
}