![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#16 |
Đệ 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 |
![]() |
![]() |
|
|