ผมใช้ micro C pro อยู่ครับ ร่วมกับ proteus เชื่อใจได้พอสมควร ใช้ลองก่อนโปรแกรมลงชิพจริงครับ
ที่กำลังทำคือเอา pic มาขับ led 20W ให้มันปรับความสว่างได้น่ะครับ ตอนนี้เวิคแล้วครับ 
จริงๆถ้าจะทำแค่นี้คงไม่ต้องวุ่นวาย ใช้แค่ฟังชั่น pwm ก็พอเพราะ led ดวงเดียว แต่ที่วุ่นทำเพราะกะจะทำป้ายโฆษณา แบบที่เป็นกระจกที่เขียนอะไรลงไปแล้วมันเรื่องแสงน่ะครับ ซึ่งจะใช้ Led หลายสี หลายชุดขับอิสระ คงใช้ฟังชั่น pwm ไม่ได้เพราะ pic ตัวนึงมันมีแค่ 2 channel น่ะครับ เลยตอนแรกกะจะใช้ timer มาคอย interupt เพื่อเป็น time base ในการแสดงผล แต่ปรากฎว่า interupt เร็วๆมันสะดุด ช้าๆไฟมันก็กระพริบ สุดท้ายเลยวนลูปแบบพื้นๆไปก่อน โปรแกรมตามนี้ครับ
char i,j,K,Butflag;
unsigned m;
void bakgwait(unsigned n);
void main()
{
    i = 0;
    j = 1;
    K = 0; //pwm flag
    Butflag = 1; //get button flag
    m = 0;
    trisB = 0b01100000; //set port b6,5 to input
    portB = 0b01100000;
    WPUB = 0b01100000; //set port b6,5 weak pullup
    ans11_bit = 0;          //set port b5 to digital i/o
    
while(1)
        {
         if(Butflag) //if grt button flag=1
         {
          if(rb5_bit==0) //check up but
          {
           if(j<98) j++;
          }
          if(rb6_bit==0)   // chek down button
          {
           if(j>1) j--;
          }
          Butflag=0; //delay for next button input by set flag=0
         }
         if(i>j)      // check duty cycle
         {
          if(k==0) RB7_bit=0;
          K=1;
         }
         if(i>99)    //reach 100% duty cycle
         {
          K=0;
          i=0;
          Rb7_bit=1;
         }
          bakgwait(25000); //check reach delay time
          i++;
        }
}
void bakgwait(unsigned n) 
{
 m++;
 if (m==n)
 {
  m=0;
  Butflag=1;
 }
}
สรุปว่าโปรแกรมนี้ ไม่ได้ดีเลย์โดยการหยุดอยู่กับที่ คือมันจะทำงานไปเรื่อยพอครบเวลาก็เซ็ทแฟลกว่าครบเวลาแล้วครับ วิธีนี้ดีที่ได้ความถี่ราวๆ 1K ขึ้นไปที่ clock 20M(ไม่รู้ว่าถ้าเพิ่มโค๊ดลงไปอีกความถี่จะตกลงแค่ไหน)
ส่วนวงจรตอนนี้เป็นแบบในรูปครับ สวิทชิ่งที่ 18V 1.5A ครับ แต่ผมไม่ได้ใช้สวิทแต่ใช้เป็นไอซีทัชเซ็นเซอร์น่ะครับ
ปล.led 20W สว่างสะใจมากๆ ไว้ทำโคมเสร็จจะเอามาลงให้ดูกันครับ