I don't think that the analog mode makes any difference when the pins are being used as outputs. Analog mode only disables the input buffers.
I think that the problem here could be the read-modidy-write effect on the ports.
The simple rule when manipulating ports is to never modify bits on a port in subsequent instructions.
so
Code:
bsf PORTC,0 ; turn on LED C0 (DS1)
bsf PORTC,1 ; turn on LED C1
is wrong.
You can use
Code:
movlw b'00000011'
iorwf PORTC
like you did or
Code:
bsf PORTC,0 ; turn on LED C0 (DS1)
nop
bsf PORTC,1 ; turn on LED C1
The reason is a little technical, and you don't need to understand it if you stick to the rule of not setting bits on subsequent instructions:-
On PICs, instructions that change registers, including the ports, work by reading the register value from the memory, modifying the value in the Arithmetic Logic Unit, and writing the value back into the memory.
There is no way that the PIC can change individual bits in the memory, so instuctions like bsf 0x20, 0 are executed by reading register 0x20, setting bit 0 and writing the whole lot back into register 0x20. In normal registers that aren't ports that doesn't make any difference.
However, with ports, if you execute bsf PORTC, 0 the value is written back to the port in the last quarter of the instruction. If the next instruction is bsf PORTC, 1, that will read the port again in the first quarter of the next instruction, only a very short time after the 1 was written.
Any capacitance or load on the pin will slow the rise of the voltage on PORTC, 0 pin. If that pin is read a very short time later, the voltage will still read as 0. Even though it is rising, it will not have got to a level that reads as a 1. The second instruction (bsf PORTC, 1) will read PORTC, 0 as a 0, so that is what will be written back at the end of the second instruction.