Esto es algo realmente extraño que tengo aquí.
Tomé un PIC16F628 esta mañana para jugar, y tengo un problema muy extraño.
He escrito un programa muy simple que debería iluminar 2 LED en esta secuencia: (* = encendido, o = apagado)
RA0 RA1
* o
* *
o *
o o
Pero lo que realmente sucede es:
RA0 RA1
* o
o *
o o
o o
Cuando RA1 se activa, RA0 se desactiva.
El mismo código exacto ejecutado en un '84a funciona perfectamente. Fragmento:
loop
BSF PORTA,0
CALL delay
BSF PORTA,1
CALL delay
BCF PORTA,0
CALL delay
BCF PORTA,1
CALL delay
GOTO loop
Mi único pensamiento es que tiene algo que ver con los comparadores que comparten los pines (deberían estar deshabilitados de forma predeterminada) que he intentado desactivar manualmente pero no ha tenido ningún efecto.
Ahora, una cosa más para agregar confusión ... Si envío valores absolutos a PORTA (0x01, 0x03, 0x02, 0x00) funciona correctamente. ¿Por qué deberían funcionar de forma tan extraña las operaciones bitwise?
Ah, y no tengo ningún problema al trabajar con PORTB, solo PORTA.
¿Alguna pista o idea? Porque me he acabado.