Bueno en estos dias le he estado avanzando y pues ya he logrado hacer que cuente de 0 a 99 en forma ascendentee (estuve leyendo en varios lados, pero principalmente me base en esta pagina
http://jimjim17.blogspot.com/2009/07/tercer-programa-pic-contador-0-99-99-0.html , lo modifique algunas cosas)
Asi me quedo el programa:
LIST P=16f873a
#INCLUDE <p16f873a.inc>
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC
;Variables que se usaran en el programa
DECENAS EQU 0X30 ;Display 1
UNIDADES EQU 0X31 ;Display 2
CONTADOR EQU 0X39 ;Contador de 1seg
CONTDEC EQU 0X40 ;Contador de decenas
CONTUNI EQU 0X41 ;Contador de unidades
RET1 EQU 0X42 ;Retardo 1
RET2 EQU 0X43 ;Retardo 2
;Inicio del programa
ORG 0x00
GOTO INICIO
ORG 0x05
;Configuración de puertos
INICIO BSF STATUS,RP0
CLRF TRISA ;PORTA como salida
CLRF TRISB ;PORTB como salida
BCF STATUS,RP0
CLRF PORTA
CLRF PORTB
;Programa principal
CICLO CALL CONTASC
GOTO CICLO
CONTASC MOVLW 0x01 ;Movemos un 1 a DECENAS
MOVWF DECENAS
MOVLW 0x0A ;Movemos un 10 a CONTDEC
MOVWF CONTDEC
RESETDEC MOVLW 0x01 ;Movemos un 1 a UNIDADES
MOVWF UNIDADES
MOVLW 0x0A ;Movemos un 10 a CONTUNI
MOVWF CONTUNI
RESETUNI MOVLW 0xFA ;Movemos un 250 a CONTADOR
MOVWF CONTADOR
ret1seg MOVF DECENAS,W ;Movemos decenas a W
CALL TABLA ;Llamamos al numero
MOVWF PORTB ;Se pasa al display
BSF PORTA,0 ;Encendemos el display de decenas
CALL RETARDO ;Retardo pequeño
BCF PORTA,0 ;Apagamos display
MOVF UNIDADES,W ;Movemos unidades a W
CALL TABLA ;Llamamos al numero
MOVWF PORTB ;Se pasa al display
BSF PORTA,1 ;Encendemos el display de unidades
CALL RETARDO ;Retardo pequeño
BCF PORTA,1 ;Apagamos display
DECFSZ CONTADOR,F ;Decrementamos contador
GOTO ret1seg ;Hacemos que la imagen dure 1seg
INCF UNIDADES,F ;Incrementamos unidades
DECFSZ CONTUNI ;Comprobamos que llegue a 9
GOTO RESETUNI ;Reseteamos unidad
INCF DECENAS,F ;Incrementamos decenas
DECFSZ CONTDEC ;Comprobamos que llegue a 9
GOTO RESETDEC ;Reseteamos decenas
RETURN ;Volvemos a ciclo
;Tabla del display
TABLA ADDWF PCL,F
NOP
RETLW B'00111111' ;Numero 0
RETLW B'00000110' ;Numero 1
RETLW B'01011011' ;Numero 2
RETLW B'01001111' ;Numero 3
RETLW B'01100110' ;Numero 4
RETLW B'01101101' ;Numero 5
RETLW B'01111101' ;Numero 6
RETLW B'00000111' ;Numero 7
RETLW B'01111111' ;Numero 8
RETLW B'01100111' ;Numero 9
;Retardo pequeño entre displays 2ms aprox
RETARDO MOVLW 0x05
MOVWF RET1
DOS MOVLW 0x83
MOVWF RET2
UNO DECFSZ RET2,1
GOTO UNO
DECFSZ RET1,1
GOTO DOS
RETURN
END
Creo que hasta aqui tengo todo bien, bueno ahora tengo que introducirle un valor del 1 al 9 en binario como entrada y que el contador comience a contar desde el numero que introduje pero que vaya incrementando por ejemplo si pongo 0010 (2 en decimal) en el display muestre 02,04,06 y asi susesivamente , la verdad no se muy bien como incluir esto al programa espero puedan ayudarme gracias. (Tambien tengo que ponerle una entrada de un push button para ir aumentando la velocidad del contadorr hasta que al darle click 10 veces vuelva a la velocidad normal, pero bueno primero lo del digito que tengo que introducir, ya que creo esto es mas facil)