Yamian

pwm.c (16F877A-Showtime)

Mar 21st, 2016 (edited)
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.97 KB | None | 0 0
  1. //chen thu vien
  2. #include"main.h"
  3. void _SetDutyPWM1(unsigned int DutyCycle)
  4. {
  5.     PR2=99;
  6.     CCPR1L=DutyCycle;
  7.     CCP1X=T2CKPS1;
  8.     CCP1Y=T2CKPS0;
  9. }
  10. void _SetUpPWM1(void)
  11. {
  12.     TRISC2=0;
  13.     //cau hinh cho CCP1 o che do PWM
  14.     CCP1M3=1;
  15.     CCP1M2=1;
  16.     CCP1M1=0;
  17.     CCP1M0=0;
  18.     TOUTPS3=0;
  19.     TOUTPS2=0;
  20.     TOUTPS1=0;
  21.     TOUTPS0=0;
  22.     TMR2ON=0;
  23.     T2CKPS1=0;
  24.     T2CKPS0=0;
  25.     _SetDutyPWM1(0);
  26.     TMR2ON=1;
  27. }
  28. void _SetDutyPWM2(unsigned int DutyCycle)
  29. {
  30.     PR2=99;
  31.     CCPR2L=DutyCycle;
  32.     CCP2X=T2CKPS1;
  33.     CCP2Y=T2CKPS0;
  34. }
  35. void _SetUpPWM2(void)
  36. {
  37.     TRISC1=0;
  38.     //cau hinh cho CCP2 o che do PWM
  39.     CCP2M3=1;
  40.     CCP2M2=1;
  41.     CCP2M1=0;
  42.     CCP2M0=0;
  43.     TOUTPS3=0;
  44.     TOUTPS2=0;
  45.     TOUTPS1=0;
  46.     TOUTPS0=0;
  47.     TMR2ON=0;
  48.     T2CKPS1=0;
  49.     T2CKPS0=0;
  50.     _SetDutyPWM2(0);
  51.     TMR2ON=1;
  52. }
  53. /*
  54.     Ap dung cong thuc chu ky PWM ta co:
  55.     T(pwm)=[PR2+1]*4*(Tosc)*(TMR2 Prescale Value)
  56.             =[PR2+1]*4*(1/Fosc)*(TMR2 Prescale Value)
  57.     hay T(pwm)=[99+1]*4*(1/4)*1
  58.                 =100*10^(-6)=10^(-4)=10khz
  59.     vay tan so de dieu khien dong co la 10(kHz)
  60. */
Add Comment
Please, Sign In to add comment