You are on page 1of 5

Code for PWM:

#include<htc.h> #include"pwm.h"

void PWM_Init(void) { TRISC=0;//port c is used for o/p PORTCbits.RC2=0;// 2nd bit 0 PR2=96;

CCPR1L = 0; CCPR1H = 0x00; CCPR2L = 0; CCPR2H = 0x00; DC1B0=0; DC1B0=0; DC2B0=0; DC2B0=0; T2CKPS1=1; T2CKPS0=0; CCP1CON=0x0F; CCP2CON=0x0F;

//TMR2ON=1; }

void DutyCycle(signed char dc) { unsigned int duty; if(dc>=100) dc=100; if(dc<=0) dc=0; duty=(int)10.24*dc;

/*DC1B0=BitExtract(duty,0);// Chanhe DC1B0 to CCP1X DC1B1=BitExtract(duty,1);// Chanhe DC1B1 to CCP1Y*/ duty=duty>>2; CCPR1L=FirstByte(duty); }

Code for inverter:


#include <htc.h> #include "delay.h"

unsigned char delayus_variable;

#include

"delay.h"

void DelayBigUs(unsigned int cnt) { unsigned char i;

i = (unsigned char)(cnt>>8); while(i>=1) { i--; DelayUs(253); CLRWDT(); } DelayUs((unsigned char)(cnt & 0xFF)); }

void DelayMs(unsigned char cnt) {

unsigned char i; do { i = 4; do { DelayUs(250); CLRWDT(); } while(--i); } while(--cnt); }

//this copy is for the interrupt function void DelayMs_interrupt(unsigned char cnt) { unsigned char i; do { i = 4; do { DelayUs(250); } while(--i); } while(--cnt); }

void DelayBigMs(unsigned int cnt) { unsigned char i;

do { i = 4; do { DelayUs(250); CLRWDT(); } while(--i); } while(--cnt); }

void DelayS(unsigned char cnt) { unsigned char i; do { i = 4; do { DelayMs(250); CLRWDT(); } while(--i); } while(--cnt); }

You might also like