How do i change the delay using a potentiometer? I'm guessing setting the timer0 to a lower value and having a "delaymain" call delay1 a certain number of times based on the analog value
You could modify your "delay": function to loop a certain number of times, controlled by a variable.
Then you would set the variable to differing values, depending upon an ADC reading of the potentiometer value.
Also, why do this code only light 1 led at the time, theres is probably an obvious reason why i dont need to write BCF PORTC,3 after each to turn off the led
You have just (re)discovered a problem endemic to these old PIC devices. Any PIC16 device with three digits after the "F" is quite old.
When you use a BSF or BCF instruction on a PORTx register, it reads the entire 8 bit port value from the pins, modifies the specified bit, then writes back the entire 8 bit port.
In your case, you are using PORTC. In a PIC16F690, most PORTC pins can be used as analog inputs, and on power up they default to analog mode.
A pin in analog mode will always read as zero, so when you use BCF or BSF on PORTC, all the analog pins read as zero, and will be rewritten as zero, regardless of what you previously write to them. Only the one bit that you actually modify in this instruction will stay set.
If you have another look in the datasheet for the PIC16F690, in the "I/O ports" section, the example for "Initializing PORTC" specifically shows a write to ANSEL to switch the pins to digital mode. Now you know why.
FYI, all the newer PIC16F devices (four or five digits after F) have an extra set of LATx registers which avoid this problem altogether. Yet another reason why you should avoid the old PICs.