con 12f629 này ít chân quá, có mỗi 8 chân
bạn tham khảo code tạo xung dùng ngắt Timer1 của mình viết xem

biến th là độ rộng xung
Code:
#include<16F877A.h>
#include<def_877A.h>
#fuses NOWDT,HS
#use delay(clock=20000000)
int1 x;
int16 th,tl;
#INT_TIMER1
void ngat_timer1()
{
x=rd0;
if(x==1){set_timer1(th); }
if(x==0){set_timer1(tl); }
rd0=~rd0;
}
void main()
{
trisd=0x00;
rd0=0;
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 ); //chu ky 52.4ms
th=0xA000; //do rong xung PWM
tl=0xFFFF-th;
while(true){}
}