#include <16f88.h> #fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT #use delay(internal=8000000) //see datasheet for register definitions #byte portb=6 #byte trisb=0x86 #bit led=portb.3 #bit left=portb.1 #bit right=portb.0 //General Variables long delayms=1000; long High = 5; long Low = 6; long SpinHigh = 5; long SpinLow = 6; long FastHigh = 11; long FastLow = 3; long cycleCount=0; //Function Prototypes void blinkLeds(void); void init(void); void Forward(long inches); void SpinRight(float degrees); void SpinLeft(long degrees); //Main Routine void main() { init(); blinkLeds(); Forward(5); SpinRight(90); Delay_ms(100); Forward(5); SpinRight(90); Delay_ms(100); Forward(5); SpinRight(90); Delay_ms(100); Forward(5); SpinRight(90); Delay_ms(100); Forward(3); SpinLeft(360); Delay_ms(10); blinkLeds(); } //Support Functions void blinkLeds() { int loops = 0; for(loops=10;loops>=1;loops--) { led=0; delay_ms(100); led=1; delay_ms(100); } } void blinkLedsOther() { output_low(led); //ccs macro delay_ms(delayms); output_high(led); delay_ms(delayms); } void init() { int loops; portb = 0b00000000; trisb = 0b00000000; //set_tris_b(0); //ccs macro for tris register //10 quick blinks to check for repeated reset for(loops=10;loops>=1;loops--) { led=0; delay_ms(100); led=1; delay_ms(100); } } void SpinRight(float degrees) { float x = 0; float factor = .81; float amount = 0; amount = degrees * factor; for(x=0;x