#include <p18f4550.h>
#pragma config WDT = OFF, LVP = OFF, FOSC = INTOSCIO_EC
#define ServoPin LATBbits.LATB0
#define ServoTris TRISBbits.TRISB0
void main(void){
int ServoPos;
ADCON1=0x0f;
CMCON=7;
ServoTris=0; //make bit 0 output
ServoPin=0;
CCP1CON=0b00001011; //Special event trigger
T1CON=0b10010001; //Timer 1 on with Pre=2
ServoPos=1500; //set servo to mid position
CCPR1=ServoPos; //set CCP initial value
while(1){
while(!PIR1bits.CCP1IF); //wait for CCP interrupt bit
ServoPin=0; //end pulse
CCPR1=20000-ServoPos; //Off time = 20mS - Servo Time
PIR1bits.CCP1IF=0; //clear int flag
while(!PIR1bits.CCP1IF); //wait for int flag
ServoPin=1; //start pulse
CCPR1=ServoPos; //Servo time in uS
PIR1bits.CCP1IF=0; //clear int flag
}
}