Saludos, soy nuevo con esto de los microcontroladores, mi problema es el siguiente:
tengo un sencillo circuito programado para el PIC 16f877a que despliega los números del 1 al 9 en un display 7 segmentos, el problema es que cuando lo conecto en la práctica no enciende nada, ya lo he polarizado correctamente y le he colocado un oscilador de 4Mhz en los puertos 13y 14, agradezco su ayuda.
El código es el siguiente:
Cabe decir que en la simulación funciona perfectamente, aqui adjunto el archivo de proteus.
tengo un sencillo circuito programado para el PIC 16f877a que despliega los números del 1 al 9 en un display 7 segmentos, el problema es que cuando lo conecto en la práctica no enciende nada, ya lo he polarizado correctamente y le he colocado un oscilador de 4Mhz en los puertos 13y 14, agradezco su ayuda.
El código es el siguiente:
HTML:
list p=16f877A
#include p16f877A.inc
org 0x00
CONTA equ 0x20
limite equ 0x0A
org 0x05
inicio
bsf STATUS,RP0
bcf STATUS,RP1
clrf TRISC ;PORTC SALIDA
movlw b'10000000'
movwf OPTION_REG ;configuracion del timer1
bcf STATUS,RP0
bcf STATUS,RP1
movlw b'00110000';CONTADOR INTERNO DE 16 BITS
movwf T1CON
clrf CONTA
clrf PORTC
bucle
movf CONTA,W ;W=TMR0
call DISPLAY
movwf PORTC
call retardo
incf CONTA,F
movlw b'00001010' ;verifica si ha llegado a 10
subwf CONTA,W
btfss STATUS,Z
goto bucle ;sino es 10 ir a bucle
clrf CONTA ;si es cero conta=0
goto bucle
retardo
bcf PIR1,TMR1IF ;BORRA LA BANDERA DE DESBORDE
clrf TMR1L ;limpiar los registros de conteo
clrf TMR1H
bsf T1CON,TMR1ON ;HABILITA EL TMR1
espera
btfss PIR1,TMR1IF ;verifica el desborde
goto espera ; sino ir a espera
bcf T1CON,TMR1ON ;si desborda limpiar la bandera
return
DISPLAY
addwf PCL,f
retlw b'00111111' ;nemero 0
retlw b'00000110' ;nemero 1
retlw b'01011011' ;nemero 2
retlw b'01001111' ;nemero 3
retlw b'01100110' ;nemero 4
retlw b'01101101' ;nemero 5
retlw b'01111101' ;nemero 6
retlw b'00000111' ;nemero 7
retlw b'01111111' ;nemero 8
retlw b'01100111' ;nemero 9
END