ayuda con pic 16f877 en manejo de displays

hola tengo el siguiente codigo pero no me funciona como se me pide aqui les voy a mostrar lo que tengo hasta ahora:

debe simular en Proteus y programar el Sistema de desarrollo PT-40 para mostrar la cuenta entre los
caracteres hexadecimales A y F. debe tener dos pulsadores uno para que la cuenta sea ascendente y otro para que sea descendente.
En el MPLAB simule la rutina de retardo preparada en el Prelab. Utilice la ventana stopwatch para verificar la duración exacta de su rutina, de acuerdo con el tiempo necesario
incluya las instrucciones necesarias para eliminar el rebote de los pulsadores UP y
DOWN.

ESTE ES EL PROGRAMA QUE TENGO

LIST P=16F877
#INCLUDE <P16F877.INC>
CNT EQU 0X20
ORG 0X00
GOTO INICIO
ORG 0X05
INICIO
BSF STATUS,RP0
MOVLW 0X07
MOVWF OPTION_REG
MOVLW 0X06
MOVWF ADCON1
MOVLW 0XFF
MOVWF TRISA
CLRF TRISD
BCF STATUS,RP0
BCF INTCON,T0IE
CLRF CNT; inicialización de contador
MOVF CNT,0
CALL TABLA
MOVWF PORTD
ASCENDENTE
BTFSC PORTA,0; revisa si el pulsador up esta pulsado
GOTO DESCENDENTE; sino esta pulsado va a descendente
CALL RETARDO; llamado al subprograma retardo
CALL RETARDO
BTFSC PORTA,0
GOTO DESCENDENTE
CICLO1
BTFSS PORTA,0; revisa si el pulsador up se dejo de pulsar
GOTO CICLO1; si no esta pulsado regresa a ciclo1
CALL RETARDO
CALL RETARDO
BTFSS PORTA,0
GOTO CICLO1
INCF CNT,1; incrementa al contador
MOVF CNT,0
ANDLW 0X0F
CALL TABLA
MOVWF PORTD
GOTO ASCENDENTE
DESCENDENTE
BTFSC PORTA,1;revisa si el pulsador down esta pulsado
GOTO ASCENDENTE; sino esta pulsado va a ascendente
CALL RETARDO; llamado al subprograma retardo
CALL RETARDO; llamado al subprograma retardo
BTFSC PORTA,1; revisa si el pulsador down esta pulsado
GOTO ASCENDENTE; sino esta pulsado va a ascendente
CICLO2
BTFSC PORTA,1; revisa si el pulsador down se dejo de pulsar
GOTO CICLO2; si sigue pulsado regresa a ciclo2
CALL RETARDO
CALL RETARDO
BTFSS PORTA,1; revisa si el pulsador down se dejo de pulsar
GOTO CICLO2; si sigue pulsado regresa a ciclo2
DECF CNT,1; decrementa al contador CNT
MOVF CNT,0; W:= CNT
ANDLW 0X0F
CALL TABLA
MOVWF PORTD
GOTO DESCENDENTE
TABLA
ADDWF PCL,1
RETLW 0X7E
RETLW 0X30
RETLW 0X6D
RETLW 0X79
RETLW 0X33
RETLW 0X5B
RETLW 0X5F
RETLW 0X70
RETLW 0X7B
RETLW 0X73
RETLW 0X77
RETLW 0X1F
RETLW 0X4E
RETLW 0X3D
RETLW 0X4F
RETLW 0X47
RETARDO
MOVLW .61
MOVWF TMR0
return
CICLO
BTFSS INTCON,T0IF
GOTO CICLO
BCF INTCON,T0IF
RETURN
END

AHORA LA CUESTION ES QUE SOLO ME MUESTRA EL CERO EN EL DISPLAY Y LA CUENTA ASCENDENTE O DESCENDENTE NO LA REALIZA


aqui les muestro una foto del circuito en proteus que tengo para probar el programas:
 

Adjuntos

  • Doc1.doc
    79.5 KB · Visitas: 14
Atrás
Arriba