16F88 (No copia contenido de registro a PORTA)

#1
Saludos, tengo un problema programando el PIC16F88; la función de este codigo es incrementar el registro "n1" en una unidad y eso pasarlo al PORTA. Como pueden ver, primero lo paso al registro W con MOVF n1,0 y luego ahi lo paso al PORTA con MOVWF. No encuentro la razon por la que el n1 se comporta correctamente, incrementando el valor, pero no doy con la forma de copiar ese valor a PORTA. si me pueden ayudar les agradezco. El banco esta seleccionado con banksel, y anteriormente asigné "porta equ 0x05".

banksel porta
incf n1,1
movf n1,0
movwf porta
return
 
#2
Asegurate que el registro "n1" se encuentre declarado en el mismo banco que el registro PORTA
 
#5
Así es, bueno depende donde lo hayas declarado, normalmente si, se usan los primeros registros del banco 0... Veamos entonces, asegúrate que el puerto A este declarado como salida, coloca una instrucción "sleep" antes de regresar de la rutina para desechar que el error se provoque al regresar de la rutina por alguna instrucción que utilice PORTA
 
#6
Revisa si TRISA = 0x00 esta configurado como salida.
bcf STATUS, RP0

deberías simularlo en MPLAB SIM.
Buenas, trisa=0x85 y trisb=0x86... lo estoy haciendo en el mplab. el trisa es "00000000" digamos TODOS salidas. el portb funciona perfecto porque son las entradas pero no logro enviar la salida a porta



Así es, bueno depende donde lo hayas declarado, normalmente si, se usan los primeros registros del banco 0... Veamos entonces, asegúrate que el puerto A este declarado como salida, coloca una instrucción "sleep" antes de regresar de la rutina para desechar que el error se provoque al regresar de la rutina por alguna instrucción que utilice PORTA
trisa 0x00 y trisb 0x01 ? donde trisa es "00000000" para que todo sea salida cierto?
 
Última edición:
#7
Así es.. sabes, también revisa el registro ANSEL, normalmente después de un reset, los pines del puerto A son configurados como analógicos. Establecelos como digitales, en la hoja de datos vine el procedimiento, si no mal recuerdo es suficiente con poner a 0's el registro ANSEL
 
Arriba