#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%)
}
}