Hola que tal, soy nuevo en el foro y quisiera que me ayudaran para encontrar las fallas que tengo en éste proyecto. Estoy programando un decodificador binario-hexadecimal con el PIC16F887, es la primera vez que programo con este PIC, y el problema que tengo es que al implementarlo en el protoboard no funciona, ya lo simulé con la ayuda de PROTEUS y aparentemente todo funciona bien. El PIC debe recibir 8 bits, 4 en el puerto A y 4 en el puerto B, y desplegar el dígito hexadecimal correspondiente en los puertos C y D en display's de 7 segmentos.
alguien sabe qué estoy haciendo mal? Saludos y gracias.
alguien sabe qué estoy haciendo mal? Saludos y gracias.
PHP:
INCLUDE P16F887.INC
__CONFIG _CONFIG1,_INTOSCIO&_WDT_OFF&_PWRTE_ON&_MCLRE_ON&_CP_OFF&_DEBUG_OFF&_LVP_OFF
__CONFIG _CONFIG2,_WRT_OFF
ORG 0x00
BSF STATUS,RP0 ; activa el banco 1
CLRF PORTA
MOVLW 0x0FF ; carga 0x0FF en W
MOVWF TRISA ; puerto A, entradas
CLRF TRISC ; puerto C todas salidas
MOVLW 0x0FF ; carga 0x0FF en W
MOVWF TRISB ; puerto B, entradas
CLRF TRISD ; puerto D todas salidas
BSF STATUS,RP1
CLRF ANSEL
CLRF ANSELH
BCF STATUS,RP1
BCF STATUS,RP0 ; volvemos al banco 0
INICIO ; etiqueta
MOVF PORTA,W ; lee el puerto A, y lo guarda en W
CALL TABLA ; llamamos a TABLA
MOVWF PORTC ; cargamos W en el puerto B
MOVF PORTB,W ; lee el puerto A, y lo guarda en W
CALL TABLA ; llamamos a TABLA
MOVWF PORTD ; cargamos W en el puerto B
GOTO INICIO ; va a INICIO
TABLA
ADDWF PCL,F ; suma w (valor puerto A) con el valor de PCL
RETLW b'00111111' ; 0, carga b'1111110' en W y retorna
RETLW b'00000110' ; 1, carga b'0110000' en W y retorna
RETLW b'01011011' ; 2, carga b'1101101' en W y retorna
RETLW b'01001111' ; 3, carga b'1111001' en W y retorna
RETLW b'01100110' ; 4, carga b'0110011' en W y retorna
RETLW b'01101101' ; 5, carga b'1011011' en W y retorna
RETLW b'01111101' ; 6, carga b'1011111' en W y retorna
RETLW b'00000111' ; 7, carga b'1110000' en W y retorna
RETLW b'01111111' ; 8, carga b'1111111' en W y retorna
RETLW b'01101111' ; 9, carga b'1111011' en W y retorna
RETLW b'01110111' ; A, carga b'1110111' en W y retorna
RETLW b'01111100' ; b, carga b'0011111' en W y retorna
RETLW b'00111001' ; C, carga b'1001110' en W y retorna
RETLW b'01011110' ; d, carga b'0111101' en W y retorna
RETLW b'01111001' ; E, carga b'1001111' en W y retorna
RETLW b'01110001' ; F, carga b'1001111' en W y retorna
RETURN
END