Ðăng Nhập

View Full Version : điều xung pwm dung htc pic


kakalevanhoi
02-11-2010, 05:19 PM
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)
{
}
}