Entendi otra cosa cuando dijiste binario. Pero al final es lo mismo..
Tomas los datos del ADC (10 bits) -> los pasas a BCD (16bits como minimo, 4 bits por cada numero) y lo que cambia es la forma de mostrarlo ya que necesitas una conversion mas...
Te creas una tabla que haga lo mismo que el 4511 ( hasta podes copiarselo del datasheet ):
BCD7SEG: ; retlw b'gfedcba' para display catodo comun
addwf PCL,1 ; Se incrementa el contador del programa.-
retlw b'0111111' ; 0
retlw b'0000110' ; 1
retlw b'1011011' ; 2
retlw b'1001111' ; 3
retlw b'1100110' ; 4
retlw b'1101101' ; 5
retlw b'1111101' ; 6
retlw b'0000111' ; 7
retlw b'1111111' ; 8
retlw b'1101111' ; 9
;Aca seguiria para los valores de 10 a 15, podrias ponerle todos 0 por las dudas
o
BCD7SEG: ; retlw b'gfedcba' para display catodo comun
addwf PCL,1 ; Se incrementa el contador del programa.-
DT 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F ; Aca tambien harias lo mismo poniendo ceros por las dudas que este mal tu codigo de BCD
clrf Contador
retlw 0x3F
Fijate que aclare que despues del 9 podrias poner lo que ocuparia cuando entra como variable de 0x0A a 0x0F, aunque si esta bien realizada la conversion a BCD no deberia de superar 9 nunca.
Entonces una ves que tenes tu codigo en BCD, cargas el valor de las unidades/decenas/centenas o miles al registro W, llamas a la funcion, esta salta la cantidad de instrucciones segun lo cargado en W. Y lo que te devuelva en W lo pasas al puerto. Controlando con cada bit 1 de los segmentos del display. ( te queda un bit libre ya que son 7 segmentos )
Y luego es lo mismo que explique para los catodos. Me refiero a la multiplexacion.
En fin lo unico que cambio fue eso, en ves de sacarlos directamente BCD al puerto, lo pasas por un "conversor BCD / 7 segmentos" que creaste en el software y sacas directamente la salida de 7 segmentos.
El codigo fue sacado de aca:
http://www.todopic.com.ar/foros/index.php?topic=24720.msg201401#msg201401
Que tal buenas noches te paso el programa en ASM con la tabla incluida, realice la prueba de cargar el registro W con un codigo BCD y no me funciono
;*****************************************************************************************************************************
;ESTE PROGRAMA MANEJA UN TECLADO DE 4 FILAS Y TRES COLUMNAS MATRICIAL POR EL CUAL SE INGRESA UN VALOR Y LO MUESTRA EN CUATRO
;DISPLAYS DE 7 SEGMENTOS, TAMBIÉN MEDIANTE UN PULSADOR GRABA EL VALOR MOSTRADO EN LOS DISPLAY EN MEMORIA EPROM Y CON OTRO
;PULSADOR RECUPERA DICHO VALOR, LA PARTE DEL CONVERSOR A/D EN ESTE PROGRAMA NO FUNCIONA SOLAMENTE FIGURAN LAS SUBRUTINAS
;*****************************************************************************************************************************
LIST P= 16F874A
INCLUDE "P16F874A.INC"
;*****************************************************VARIABLES****************************************************************
REG1 EQU H'20' ;VARIABLE PARA SUBRUTINA DE RETARDO
REG2 EQU H'21' ;VARIABLE PARA SUBRUTINA DE RETARDO
DIGI1 EQU H'22' ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 1
DIGI2 EQU H'23' ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 2
DIGI3 EQU H'24' ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 3
DIGI4 EQU H'25' ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 4
TECPUL EQU H'26' ;VARIABLE PARA ALMACENAR EL VALOR DE LA TECLA PULSADA
REG3 EQU H'27' ;VARIABLE PARA SUBRUTINA DE RETARDO1
REG4 EQU H'28' ;VARIABLE PARA SUBRUTINA DE RETARDO1
REG5 EQU H'29' ;VARIABLE PARA SUBRUTINA DE RETARDO CONVERSOR A/D
LSD EQU H'2A' ;VARIABLE PARA SUBRUTINA BINBCD
MSD EQU H'2B' ;VARIABLE PARA SUBRUTINA BINBCD
VSD EQU H'2C' ;VARIABLE PARA SUBRUTINA BINBCD
HSD EQU H'2D' ;VARIABLE PARA SUBRUTINA BINBCD
ADRESA EQU H'2E' ;VALOR ALTO DE LA CONVERSION=ADRESH
ADRES EQU H'2F' ;VALOR BAJO DE LA CONVERSION=ADRESL
;*****************************************************CONSTANTES***************************************************************
VALOR1 EQU .74 ;VALORES PARA EL RETARDO
VALOR2 EQU .2 ;VALORES PARA EL RETARDO
VALOR3 EQU .150 ;VALORES PARA EL RETARDO1
VALOR4 EQU .4 ;VALORES PARA EL RETARDO1
;*****************************************************DEFINICIONES*************************************************************
#DEFINE BANCO0 BCF STATUS,RP0
#DEFINE BANCO1 BSF STATUS,RP0
;***************************************************OTRAS DEFINICIONES********************************************************
#DEFINE TRD1 PORTD,7 ;DEFINO LA SALIDA DE TRD1
#DEFINE TRD2 PORTD,6 ;DEFINO LA SALIDA DE TRD2
#DEFINE TRD3 PORTD,5 ;DEFINO LA SALIDA DE TRD3
#DEFINE TRD4 PORTD,4 ;DEFINO LA SALIDA DE TRD4
#DEFINE LED1 PORTB,5 ;DEFINO LED PRUEBA
#DEFINE GRABO PORTB,7 ;DEFINO PULSADOR CONVERSOR ANALOGICO DIGITAL
#DEFINE LED2 PORTB,4 ;DEFINO LED PRUEBA
#DEFINE RECU PORTB,6 ;DEFINO PULSADOR GRABAR
#DEFINE COL1 PORTE,0 ;DEFINO COLUMNA TECLADO
#DEFINE COL2 PORTE,1 ;DEFINO COLUMNA TECLADO
#DEFINE COL3 PORTE,2 ;DEFINO COLUMNA TECLADO
#DEFINE FIL1 PORTD,0 ;DEFINO TECLADO FILAS
#DEFINE FIL2 PORTD,1 ;DEFINO TECLADO FILAS
#DEFINE FIL3 PORTD,2 ;DEFINO TECLADO FILAS
#DEFINE FIL4 PORTD,3 ;DEFINO TECLADO FILAS
#DEFINE COL1E BSF TRISE,0 ;DEFINO COL1 COMO ENTRADA
#DEFINE COL1S BCF TRISE,0 ;DEFINO COL1 COMO SALIDA
#DEFINE COL2E BSF TRISE,1 ;DEFINO COL2 COMO ENTRADA
#DEFINE COL2S BCF TRISE,1 ;DEFINO COL2 COMO SALIDA
#DEFINE COL3E BSF TRISE,2 ;DEFINO COL3 COMO ENTRADA
#DEFINE COL3S BCF TRISE,2 ;DEFINO COL3 COMO SALIDA
;********************************************************PROGRAMA*************************************************************
ORG H'0000'
GOTO INICIO ;IR AL INICIO DEL PROGRAMA
ORG H'0004' ;ATENCION A LAS INTERUPCIONES
RETFIE
;*********************************SUBRUTINA TABLA CONVERSION BCD A 7 SEGMENTOS*************************************************
TABLA ADDWF PCL,F
; GFBADEPC
RETLW B'01111101' ;0
RETLW B'00100001' ;1
RETLW B'10111100' ;2
RETLW B'10111001' ;3
RETLW B'11100001' ;4
RETLW B'11011001' ;5
RETLW B'11011101' ;6
RETLW B'00110001' ;7
RETLW B'11111101' ;8
RETLW B'11110001' ;9
;*********************************************SUBRUTINA DE RETARDO*************************************************************
RETARDO MOVLW VALOR1
MOVWF REG1
MOVLW VALOR2
MOVWF REG2
LOOP DECFSZ REG1,F
GOTO LOOP
DECFSZ REG2,F
GOTO LOOP
RETURN
;*********************************************SUBRUTINA DE RETARDO1*************************************************************
RETARDO1 MOVLW VALOR3
MOVWF REG3
MOVLW VALOR4
MOVWF REG4
LOOP1 DECFSZ REG1,F
GOTO LOOP1
DECFSZ REG2,F
GOTO LOOP
RETURN
;***********************************************SUBRUTINA DE MUESTREO*********************************************************
MUESTRO
H MOVF DIGI1,W ;MUEVO EL VALOR DE DIGI1 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BSF TRD1
BCF TRD2
BCF TRD3
BCF TRD4
CALL RETARDO
MOVF DIGI2,W ;MUEVO EL VALOR DE DIGI2 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BCF TRD1
BSF TRD2
BCF TRD3
BCF TRD4
CALL RETARDO
MOVF DIGI3,W ;MUEVO EL VALOR DE DIGI3 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BCF TRD1
BCF TRD2
BSF TRD3
BCF TRD4
CALL RETARDO
MOVF DIGI4,W ;MUEVO EL VALOR DE DIGI4 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BCF TRD1
BCF TRD2
BCF TRD3
BSF TRD4
CALL RETARDO
BTFSC GRABO
GOTO AAA
CALL GD1
BSF LED1
AAA BTFSC RECU
GOTO H
GOTO RECUPE
RETURN
;*********************************************RECUPERACION DE VALORES***********************************************************
RECUPE
CLRF DIGI1
CLRF DIGI2
CLRF DIGI3
CLRF DIGI4
CALL RECUP1
CALL RECUP2
CALL RECUP3
CALL RECUP4
CALL MUESTRO1
;***********************************************SUBRUTINA DE MUESTREO VALOR RECUPERADO*********************************************
MUESTRO1
X2
MOVF DIGI1,W ;MUEVO EL VALOR DE DIGI1 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BSF TRD1
BCF TRD2
BCF TRD3
BCF TRD4
CALL RETARDO
MOVF DIGI2,W ;MUEVO EL VALOR DE DIGI2 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BCF TRD1
BSF TRD2
BCF TRD3
BCF TRD4
CALL RETARDO
MOVF DIGI3,W ;MUEVO EL VALOR DE DIGI3 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BCF TRD1
BCF TRD2
BSF TRD3
BCF TRD4
CALL RETARDO
MOVF DIGI4,W ;MUEVO EL VALOR DE DIGI4 A W
MOVWF PORTC ;MUEVO W AL PORT D PARA VISUALIZARLO
BCF TRD1
BCF TRD2
BCF TRD3
BSF TRD4
CALL RETARDO
GOTO X2
RETURN
;******************************************SUBRUTINA DE LECTURA DE TECLADO *****************************************************
LEETEC BANCO1 ;PASO AL BANCO CERO PARA CONFIGURAR
COL1E ;CONFIGURO COL1 COMO ENTRADA
COL2E ;CONFIGURO COL2 COMO ENTRADA
COL3E ;CONFIGURO COL3 COMO ENTRADA
BANCO0 ;PASAO AL BANCO CERO
CLRF TECPUL ;LIMPIO LA VARIABLE TECPUL
BSF FIL1 ;PONGO A 1 FIL1
BCF FIL2 ;PONGO A 0 FIL2
BCF FIL3 ;PONGO A 0 FIL3
BCF FIL4 ;PONGO A 0 FIL4
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL1 ;COL1=0?
GOTO LEE1 ;NO ES 0 VOY A LEE1
MOVLW B'00100001' ;Nº 1 A W FILA 1 COLUMNA1
MOVWF TECPUL ;MUEVO Nº1 A TECPUL
LEE1 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL2 ;COL2=0?
GOTO LEE2 ;NO ES 0 VOY A LEE2
MOVLW B'10111100' ;Nº 2 A W FILA1 COLUMNA2
MOVWF TECPUL ;MUEVO Nº2 A TECPUL
LEE2 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL3 ;COL3=0?
GOTO LEE3 ;NO ES CERO VOY A LEE3
MOVLW B'10111001' ;Nº 3 A W FILA1 COLUMNA 3
MOVWF TECPUL ;MUEVO Nº 3 A TECPUL
LEE3 BCF FIL1
BSF FIL2
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL1 ;COL1=0?
GOTO LEE4 ;NO ES 0 VOY A LEE4
MOVLW B'11100001' ;Nº 4 A W FILA2 COLUMNA1
MOVWF TECPUL ;MUEVO Nº 4 A TECPUL
LEE4 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL2 ;COL2=0?
GOTO LEE5 ;NO ES 0 VOY A LEE5
MOVLW B'11011001' ;Nº 5 A W FILA2 COLUMNA2
MOVWF TECPUL ;MUEVO Nº 5 A TECPUL
LEE5 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL3 ;COL3=0?
GOTO LEE6 ;NO ES 0 VOY A LEE6
MOVLW B'11011101' ;Nº 6 A W FILA2 COLUMNA3
MOVWF TECPUL ;MUEVO Nº 6 A TECPUL
LEE6 BCF FIL2
BSF FIL3
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL1 ;COL1=0?
GOTO LEE7 ;NO ES 0 VOY A LEE7
MOVLW B'00110001' ;Nº 7 A W FILA3 COLUMNA1
MOVWF TECPUL ;MUEVO Nº 7 A TECPUL
LEE7 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL2 ;COL2=0?
GOTO LEE8 ;NO ES 0 VOY A LEE8
MOVLW B'11111101' ;Nº 8 A W FILA3 COLUMNA2
MOVWF TECPUL ;MUEVO Nº 8 A TECPUL
LEE8 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL3 ;COL3=0?
GOTO LEE9 ;NO ES 0 VOY A LEE9
MOVLW B'11110001' ;Nº 9 A W FILA3 COLUMNA3
MOVWF TECPUL ;MUEVO Nº 9 A TECPUL
LEE9 BCF FIL3
BSF FIL4
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL1 ;COL2=0?
GOTO LEE10 ;NO ES 0 VOY A LEE10
MOVLW B'11110100' ;LETRA P A W FILA4 COLUMNA1
MOVWF TECPUL ;MUEVO P A TECPUL
LEE10 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL2 ;COL2=0?
GOTO LEE11 ;NO ES 0 VOY A LEE11
MOVLW B'01111101' ;Nº 0 A W FILA4 COLUMNA2
MOVWF TECPUL ;Nº 0 A TECPUL
LEE11 CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
BTFSC COL3 ;COL3=0?
GOTO LEE12 ;NO ES 0 VOY A LEE12
MOVLW B'11100101' ;LETRA H A W FILA4 COLUMNA3
MOVWF TECPUL ;LETRA H A TECPUL
LEE12 BCF FIL4
BANCO1
COL1S
COL2S
COL3S
BANCO0
RETURN
;*********************************************SUBRUTINA PARA DISPLAY 1*********************************************************
DISPLAY1 CALL RETARDO1
CLRF TECPUL ;BORRO TECPUL
CALL LEETEC ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
MOVF TECPUL,W ;MUEVO EL VALOR DE TECPUL A W
XORLW .0 ;VERIFICO SI TECPUL ES CERO
BTFSC STATUS,Z ;VERIFICO SI Z=0
GOTO DISPLAY1 ;SI NO ES CERO VUELVO A DISPLAY1
MOVF TECPUL,W ;PASO EL VALOR DE TECPUL A W
MOVWF DIGI1 ;PASO W A DIGI1
RETURN
;*********************************************SUBRUTINA PARA DISPLAY 2*********************************************************
DISPLAY2 CALL RETARDO1
CLRF TECPUL ;BORRO TECPUL
CALL LEETEC ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
MOVF TECPUL,W ;MUEVO EL VALOR DE TECPUL A W
XORLW .0 ;VERIFICO SI TECPUL ES CERO
BTFSC STATUS,Z ;VERIFICO SI Z=0
GOTO DISPLAY2 ;SI NO ES CERO VUELVO A DISPLAY1
MOVF TECPUL,W ;PASO EL VALOR DE TECPUL A W
MOVWF DIGI2 ;PASO W A DIGI2
RETURN
;*********************************************SUBRUTINA PARA DISPLAY 3*********************************************************
DISPLAY3 CALL RETARDO1
CLRF TECPUL ;BORRO TECPUL
CALL LEETEC ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
MOVF TECPUL,W ;MUEVO EL VALOR DE TECPUL A W
XORLW .0 ;VERIFICO SI TECPUL ES CERO
BTFSC STATUS,Z ;VERIFICO SI Z=0
GOTO DISPLAY3 ;SI NO ES CERO VUELVO A DISPLAY1
MOVF TECPUL,W ;PASO EL VALOR DE TECPUL A W
MOVWF DIGI3 ;PASO W A DIGI3
RETURN
;*********************************************SUBRUTINA PARA DISPLAY 4*********************************************************
DISPLAY4 CALL RETARDO1
CLRF TECPUL ;BORRO TECPUL
CALL LEETEC ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
MOVF TECPUL,W ;MUEVO EL VALOR DE TECPUL A W
XORLW .0 ;VERIFICO SI TECPUL ES CERO
BTFSC STATUS,Z ;VERIFICO SI Z=0
GOTO DISPLAY4 ;SI NO ES CERO VUELVO A DISPLAY1
MOVF TECPUL,W ;PASO EL VALOR DE TECPUL A W
MOVWF DIGI4 ;PASO W A DIGI4
RETURN
;*********************************************SUBRUTINA GRABACION DIGITO 1 (GD1)***********************************************
GD1 BSF STATUS,RP1
BCF STATUS,RP0 ;BANCO2
MOVLW 0X00 ;MUEVO A W LA DIRECCION DE MEMORI A GRABAR
MOVWF EEADR ;MUEVO LA DIRECION 0X01 A EEADR
MOVF DIGI1,W ;MUEVO DIGI1 A W
MOVWF EEDATA ;DIGI1 A EEDATA
BSF STATUS,RP0 ;BANCO3
BCF EECON1,EEPGD
BSF EECON1,WREN ;HABILITO ESCRITURA
BCF INTCON,GIE ;DESHABILITO TODAS LAS INTERUPCIONES
MOVLW H'55' ;REQUERIDO
MOVWF EECON2 ;REQUERIDO
MOVLW H'AA' ;REQUERIDO
MOVWF EECON2 ;REQUERIDO
BSF EECON1,WR ;DESHABILITO ESCRITURA
VERIF1 BTFSC EECON1,WR
GOTO VERIF1
BCF EECON1,WREN
BCF STATUS,RP1
BCF STATUS,RP0
;*********************************************SUBRUTINA GRABACION DIGITO 2 (GD2)***********************************************
BSF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X01
MOVWF EEADR
MOVF DIGI2,W
MOVWF EEDATA
BSF STATUS,RP0
BCF EECON1,EEPGD
BSF EECON1,WREN
BCF INTCON,GIE
MOVLW H'55'
MOVWF EECON2
MOVLW H'AA'
MOVWF EECON2
BSF EECON1,WR
VERIF2 BTFSC EECON1,WR
GOTO VERIF2
BCF EECON1,WREN
BCF STATUS,RP1
BCF STATUS,RP0
;*********************************************SUBRUTINA GRABACION DIGITO 3 (GD3)***********************************************
BSF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X02
MOVWF EEADR
MOVF DIGI3,W
MOVWF EEDATA
BSF STATUS,RP0
BCF EECON1,EEPGD
BSF EECON1,WREN
BCF INTCON,GIE
MOVLW H'55'
MOVWF EECON2
MOVLW H'AA'
MOVWF EECON2
BSF EECON1,WR
VERIF3 BTFSC EECON1,WR
GOTO VERIF3
BCF EECON1,WREN
BCF STATUS,RP1
BCF STATUS,RP0
;*********************************************SUBRUTINA GRABACION DIGITO 4 (GD4)***********************************************
BSF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X03
MOVWF EEADR
MOVF DIGI4,W
MOVWF EEDATA
BSF STATUS,RP0
BCF EECON1,EEPGD
BSF EECON1,WREN
BCF INTCON,GIE
MOVLW H'55'
MOVWF EECON2
MOVLW H'AA'
MOVWF EECON2
BSF EECON1,WR
VERIF4 BTFSC EECON1,WR
GOTO VERIF4
BCF EECON1,WREN
BCF STATUS,RP1
BCF STATUS,RP0
RETURN
;*********************************************SUBRUTINA RECUPERACION DIGITO1 (RECUP1)******************************************
RECUP1 BSF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X00
MOVWF EEADR
BSF STATUS,RP0
BCF EECON1,EEPGD
BSF EECON1,RD
BCF STATUS,RP0
MOVF EEDATA,W
BCF STATUS,RP1
BCF STATUS,RP0
MOVWF DIGI1
RETURN
;*********************************************SUBRUTINA RECUPERACION DIGITO2 (RECUP2)******************************************
RECUP2 BSF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X01
MOVWF EEADR
BSF STATUS,RP0
BCF EECON1,EEPGD
BSF EECON1,RD
BCF STATUS,RP0
MOVF EEDATA,W
BCF STATUS,RP1
BCF STATUS,RP0
MOVWF DIGI2
RETURN
;*********************************************SUBRUTINA RECUPERACION DIGITO3 (RECUP3)******************************************
RECUP3 BSF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X02
MOVWF EEADR
BSF STATUS,RP0
BCF EECON1,EEPGD
BSF EECON1,RD
BCF STATUS,RP0
MOVF EEDATA,W
BCF STATUS,RP1
BCF STATUS,RP0
MOVWF DIGI3
RETURN
;*********************************************SUBRUTINA RECUPERACION DIGITO4 (RECUP4)******************************************
RECUP4 BSF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X03
MOVWF EEADR
BSF STATUS,RP0
BCF EECON1,EEPGD
BSF EECON1,RD
BCF STATUS,RP0
MOVF EEDATA,W
BCF STATUS,RP1
BCF STATUS,RP0
MOVWF DIGI4
RETURN
;*****************************************SUBRUTINA BIN A BCD 10 BIT***********************************************************
STAR CLRF HSD
CLRF VSD
CALL BINBCD
OUT BTFSC ADRESA,0
CALL PRIM
BTFSC ADRESA,1
CALL SEGU
RETURN
BINBCD MOVF ADRES,W
CLRF MSD
MOVWF LSD
GTENTH MOVLW 0X0A
SUBWF LSD,W
BTFSS STATUS,C
GOTO OVER
MOVWF LSD
INCF MSD,F
GOTO GTENTH
OVER
TENTH MOVLW 0X0A
SUBWF MSD,W
BTFSS STATUS,C
RETLW 0
MOVWF MSD
INCF VSD,F
GOTO TENTH
PRIM MOVF LSD,W
ADDLW 0X06
MOVWF LSD
CALL ADJDEC
MOVF MSD,W
ADDLW 0X05
MOVWF MSD
CALL ADJDEC
MOVF VSD,W
ADDLW 0X02
MOVWF VSD
RETURN
SEGU MOVF LSD,W
ADDLW 0X02
MOVWF LSD
CALL ADJDEC
MOVF MSD,W
ADDLW 0X01
MOVWF MSD
CALL ADJDEC
MOVF VSD,W
ADDLW 0X05
MOVWF VSD
CALL ADJDEC
RETURN
ADJDEC MOVLW 0X0A
SUBWF LSD,0
BTFSS STATUS,C
GOTO DEC
MOVLW 0X06
ADDWF LSD,1
MOVLW 0X0F
ANDWF LSD,1
INCF MSD,1
DEC MOVLW 0X0A
SUBWF MSD,0
BTFSS STATUS,C
GOTO CEN
MOVLW 0X06
ADDWF MSD,1
MOVLW 0X0F
ANDWF MSD,1
INCF VSD,1
CEN MOVLW 0X0A
SUBWF VSD,0
BTFSS STATUS,C
GOTO MIL
MOVLW 0X06
ADDWF VSD,1
MOVLW 0X0F
ANDWF VSD,1
INCF HSD,1
MIL RETURN
;*************************************SUBRUTINA LECTURA ENTRADA ANALOGICA A0***************************************************
MEDIR MOVLW B'10000001'
MOVWF ADCON0 ;SELECCIONO RA0
MOVLW .75 ;RETARDO NECESARIO ANTES DE LA CONVERSION
MOVWF REG5
MEDIR1 NOP
DECFSZ REG5,F
GOTO MEDIR1
BSF ADCON,GO ;COMIENZA LA CONVERSION
NOP
MEDIR2 BTFSC ADCON,GO ;¿ES EL FIN DE LA CONVERSION?
GOTO MEDIR2
MOVF ADRESH,W
MOVWF ADRESA
BANCO1
MOVF ADRESL,W
BANCO0
MOVWF ADRES
RETURN
;************************************************INICIALIZACION****************************************************************
INIPIC BANCO1
MOVLW B'10110100'
MOVWF ADCON1 ;CONFIGURO A0, A1 Y A3 COMO ENTRADAS ANALOGICAS
MOVLW B'001011'
MOVWF TRISA ;CONFIGURO EL PUERTO A
MOVLW B'11000000'
MOVWF TRISB ;CONFIGURO EL PUERTO B COMO SALIDA (B7 Y B6 ENTRADAS)
MOVLW B'00000000'
MOVWF TRISC ;CONFIGURO EL PUERTO C COMO SALIDA
MOVLW B'00000000'
MOVWF TRISD ;CONFIGURO EL PUERTO D COMO SALIDA
MOVLW B'000'
MOVWF TRISE ;CONFIGURO EL PUERTO E COMO SALIDA
MOVLW B'00000000'
MOVWF INTCON ;DESHABILITO LAS INTERRUPCIONES
BANCO0
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
RETURN
;**************************************************PROGRAMA PRINCIPAL**********************************************************
INICIO CALL INIPIC ;LLAMO A LA RUTINA DE INICIALIZACION
CALL DISPLAY1 ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY1
CALL DISPLAY2 ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY2
CALL DISPLAY3 ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY3
CALL DISPLAY4 ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY4
HHH CALL MUESTRO
GOTO HHH
END