Podrias intentar crear una MACRO para atacar de manera más fácil el cambio de puertos
Lo que me dice Nichita, no sé muy bien si es algo similar a lo que se hace con RETLW para trabajar con un display de 7 segmentos, por ejemplo. ¿Es eso?
CORE-E0002: Stack under flow error occurred from instruction at 0x000011Significa que has hecho un RETURN sin un previo call, por lo tanto te está diciendo que el STACK o PILA de retorno de subrutinas tuvo un sobrevaciamiento.
Nichita, si PUERTO tomará valor durante el proceso de ensambaldo tu técnica funcionará. Ahora si la variable PUERTO cambia durante la ejecución del programa, el programa no hará lo que tu esperas, ya que PUERTO será una dirección de memoria fija.
No hay instrucciones en el assembler de los pic12F; 16F y 18F que permitan pasar el numero de puerto como parámetro.
Hacer lo siguiente
movlw 0x05
movwf PUERTO
bcf PUERTO,5
movlw 0x06
movwf PUERTO
bcf PUERTO,5
No significa que en el primer caso, se borrará PORTA<5> (direccion 0x05 en memoria) y en el segundo caso PORTB<5> (direccion 0x06 en memoria).
PUERTO tomará un valor al ensamblarse, el cual será 5, 6, 10, 20, lo que sea, y no cambiará.
Te falto leer bien lo que dice Maunix:Nichita, si PUERTO tomará valor durante el proceso de ensambaldo tu técnica funcionará. Ahora si la variable PUERTO cambia durante la ejecución del programa, el programa no hará lo que tu esperas, ya que PUERTO será una dirección de memoria fija.
No hay instrucciones en el assembler de los pic12F; 16F y 18F que permitan pasar el numero de puerto como parámetro.
Hacer lo siguiente
movlw 0x05
movwf PUERTO
bcf PUERTO,5
movlw 0x06
movwf PUERTO
bcf PUERTO,5
No significa que en el primer caso, se borrará PORTA<5> (direccion 0x05 en memoria) y en el segundo caso PORTB<5> (direccion 0x06 en memoria).
PUERTO tomará un valor al ensamblarse, el cual será 5, 6, 10, 20, lo que sea, y no cambiará.
Hacerlo de esa forma no funciona,
saludos
Hay una opción que creo debe funcionar y es usando direccionamiento indirecto, aca un ejemplo prendiendo el bit cero del puerto B y el bit 1 del puerto a:
...
La dirección del puerto se carga en el FSR y el bit a prender o apagar en el registro 'bit', el problema es que en este caso los bits se cuentan desde uno y no desde cero (para el bit cero se debe cargar un 1... para el bit 7 se debe cargar un 8), si se desea prender o apagar el bit se pone en 1 o 0 el EstadoBit.
dhmejia... no entiendo tu aclaración... en mi post estoy claramente diciendo que eso así no funciona.
dhmejia... no entiendo tu aclaración... en mi post estoy claramente diciendo que eso así no funciona.
Maunix, solo estaba confirmando lo que ya habías dicho porque Mady seguía intentando con el código de Nichita después de la explicación que habías dado del por que no funcionaba.
De pronto no fui claro, pero estaba reafirmando lo que ya habías dicho.
saludos.