You are on page 1of 1

#include<p18f4550.

h>

extern void _startup (void);


#pragma code _RESET_INTERRUPT_VECTOR = 0x1000
void _reset (void)
{
_asm goto _startup _endasm
}
#pragma code
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008
void high_ISR (void)
{
}
#pragma code
#pragma code _LOW_INTERRUPT_VECTOR = 0x1018
void low_ISR (void)
{
}
#pragma code

void myMsDelay (unsigned int time);

void main()
{
TRISCbits.TRISC0 = 0 ; // DC Motor IN1
TRISCbits.TRISC6 = 0 ; // DC Motor IN2
TRISCbits.TRISC7 = 0 ; // CCP2 PWM output, DC motor enable
PR2 = 0x4A; //10khz // set PWM period to Maximum value

T2CON = 0x07;
PORTCbits.RC7 = 0;
PORTCbits.RC6 = 1;
while(1)
{
CCP1CON = 0x2C;
CCPR1L = 0x12; //25% Duty Cycle
myMsDelay(1000);
CCP1CON = 0x0C;
CCPR1L = 0x25; //50% Duty Cycle
myMsDelay(1000);
CCP1CON = 0x2C;
CCPR1L = 0x37; //75% Duty Cycle
myMsDelay(1000);
}

void myMsDelay (unsigned int time)


{
unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 710; j++);/*Calibrated for a 1 ms delay in MPLAB*/
}

You might also like