![]() |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Jul 2010
Bài gửi: 12
: |
điều xung pwm dung htc pic
bác na`o pro giúp mình vs ,mình mún điều xung xuất ra chân rc1 ,xung sẽ tăng từ 0% đến 100%.hiển thi ra máy hiện sóng..chương trình ko biết viết bị lỗi hay sai chỗ na`o ma` xung ko tăng
#include <htc.h> #include <pic168xa.h> __CONFIG(HS & WDTDIS & PWRTDIS & BORDIS & LVPDIS & DEBUGEN & UNPROTECT); //ham xuy ly ngat cua truong trinh void interrupt intr_service(void) //ham xu ly ngat { static volatile unsigned char k; // % do rong xung => 0<= k <= 100 static volatile unsigned int count; int temp; if ( TMR0IF & T0IE ) { k=0; TMR0IF = 0; count = 0; TMR0 = 0; ++count ; if (count==500) { count = 0; TMR2 = 0; temp = 4* (PR2 + 1) * k/100; CCPR1L = temp>>2; CCP1CON = ((temp & 3) << 4) | 0x0C; // set initial duty and set PWM mode bits. } k+= 10; if (k >= 100) k=0; }; } //ham khoi tao ngat cua truong trinh void init_function(void) //ham khoi tao { //=================khoi tao cho PWm============= //stop module PWM & TIMER2 CCP1CON= 0 ; CCPR1L = 0 ; CCPR1H = 0 ; INTCON = 0 ; // khoi tao cho pwm active TMR2 = 0 ; PR2 = 249 ; TRISC = 0 ; //PORT C = OUTPUT CCP1CON = 0b00101100 ;//CCP1X = 1,CCP1Y = 0 CCPR1L = 0b00111110 ; TMR2IF = 0 ; TMR2IE = 1 ; T2CON = 0b00000101 ;//PRESCALER = 4,TMR2ON = 1 // ===============khoi tao cho cac timer khac====== TMR0 = 0 ; OPTION = 0B00001000; //SELECT PRESCALER,RATIO = 2 CHON CHE DO TIMER TMR0IF = 0 ; T0IE = 1 ; GIE = 1 ; //NGAT TOAN CUC XAY RA } //ham chinh cua truong trinh void main(void) {init_function(); while (1) { } } |
![]() |
![]() |
|
|