Agrego a lo de Chaly. Hay otros problemas. Error que encontre:
RETORNA
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
CLRF TMR0
MOVLW D'96'
MOVWF TMR0
BCF INTCON,T0IF
RETFIE
Ahi hay uno, si vas a recupera W y STATUS hacelo antes del RETFIE (al ultimo), es decir todas las instrucciones de recargar el valor del timer mas la limpieza del flag se debe hacer antes de recuperar el status y W.
Despues creo que tambien tendrias este problema en ReiCU:
El cual deberia ser
Sugerencias:- Tambien tenes un GOTO demas en ReiCU pero no habria problemas es una instruccion mas. El GOTO que digo es GOTO ReiCD, ya que este saltaria y seguiria ejecutando ReiCD
- En ves de usar una variable completa como BOOL (8 bits) para saber cual display es el que esta encendido o un solo bit de este registro, podrias preguntar directamente por el bit que maneja al catodo, Es decir esto:
por
- Supongo que :
Pusiste un 1 para el debug (y si es necesario lo cambiarias), ya que con 1 entraria a la interrupcion y el DECFSZ que tenes siempre saltaria (1 entrada a la interrupcion = cambio de display)
Sino tendrias ese registro sin sentido y esas intrucciones tambien ya que como dije siempre saltaria y ejecutaria el cambio del display. Si en algun momento pensas que lo vas a cambiar entonces lo dejas.
- El error que dice Chaly se arregla poniendolo a todos como digitales es decir:
BANKSEL ADCON1 ;Banco 1
MOVLW 0x06
MOVWF ADCON1