View Single Post
Old 05-06-2009, 07:47 PM   #14
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Chúng ta đã biết PIC 16F877A có module PWM trong CCP . Nhưng có cái dở là bắt buộc ta phải dùng 2 chân RC1 & RC2 , còn phải tốn bộ timer .

H với 1 bộ timer bất kỳ , ae ta có thể sử dụng bất kỳ chân nào làm PWM cũng đc (giống như kiểu sd 89 vẫn PWM đc)

Code:
#include <16F877A.h>
#fuses  NOWDT,XT,NOPROTECT,NOLVP,PUT,NODEBUG
#use delay(clock=4000000)

#bit signal =0x06.5 // RB5


int8 V_BanhTrai,V_BanhPhai, temp;

void Init_timer()
{ 
  OPTION_REG=0x00;
  TMR0IE=1; 
  TMR0IF=0; 
  TMR0 = 0;
  enable_interrupts(GLOBAL); // GIE =1
  //enable_interrupts(int_timer0);
}
#int_timer0
void ngat_timer0()
{ TMR0IF=0;
  if (temp++==10) temp= 0;      

  switch (V_BanhTrai) 
   {case 0: RC1 = 1; break;
    case 10: RC1 = 0; break;
    default:
      if (temp < V_BanhTrai) RC1 = 0; else RC1 = 1;
   };

  switch (V_BanhPhai) 
   { case 0: RC2 = 1;break;
     case 10:RC2 = 0;break;
     default:   
       if (temp < V_BanhPhai) RC2 = 0;else RC2= 1;
   }
  
  TMR0 = 0;
}

main()
{ TRISC=0x00;PORTC=0xFF;
  
  Init_timer();

 while(1) V_BanhTrai=V_BanhPhai=10 ; //chay het toc do
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn