Autor Tema: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D  (Leído 8001 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cdaiag

  • PIC10
  • *
  • Mensajes: 18
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #15 en: 07 de Marzo de 2015, 22:59:14 »
Yo simule tu BCD al cual le agregue la llamada a la tabla y funciona perfecto...

Código: ASM
  1. TABLA      ADDWF   PCL,F
  2.                ; GFBADEPC
  3.          RETLW   B'01111101'      ;0
  4.          RETLW   B'00100001'      ;1
  5.          RETLW   B'10111100'      ;2
  6.          RETLW   B'10111001'      ;3
  7.          RETLW   B'11100001'      ;4
  8.          RETLW   B'11011001'      ;5
  9.          RETLW   B'11011101'      ;6
  10.          RETLW   B'00110001'      ;7
  11.          RETLW   B'11111101'      ;8 = 0xFD ese binario
  12.          RETLW   B'11110001'      ;9
  13.  
  14.  
  15. MAIN
  16.     ; AQUI CONVERSION BCD
  17.     MOVLW 0x08
  18.     MOVWF ADRESB
  19.     MOVLW 0x00
  20.     MOVWF ADRESA
  21.         CALL STAR   ;; LLamada a BCD pero si te fijas arriba solo puse el valor 0x008, dando por resultado LSD = 0x8 y HSD=VSD=MSD=0x0
  22.     ; FIN CONVERSION BCD
  23.  
  24.     ;MUESTRO, en realidad lo guardo en un registro, fue para poder debuggearlo
  25.  
  26.     BANKSEL PORTA
  27.     MOVF LSD,W    ; Muevo el 0x8 a W
  28.     CALL TABLA      ; Llamo a la tabla
  29.     MOVWF TEMP   ; En TEMP me queda guardado el valor 1111 1101 o que es igual a 0xFD
  30.         GOTO MAIN

Por lo tanto funciona.

Que tal buenas noches, realicé algunas modificaciones no muy importantes y ahora la tabla funciona perfectamente, en la rutina de lectura de teclado puse los códigos iguales al del 4511 y los toma perfecto menos el B'0000'  que es el cero en el 4511 este no lo reconoce.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #16 en: 08 de Marzo de 2015, 00:05:38 »
Si pero recorda que en tu anterior codigo tenias como 0x00 cuando no se presionaba nada.. Puede que eso te afecte.

Tambien tu teclado tiene 12 teclas ( 4x3 ) mientras que la tabla que esta ahi solo tiene del 0 al 9... si podes poner el codigo mejor. por que no se que modificacioes le hiciste.

Desconectado cdaiag

  • PIC10
  • *
  • Mensajes: 18
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #17 en: 08 de Marzo de 2015, 00:15:59 »
Si pero recorda que en tu anterior codigo tenias como 0x00 cuando no se presionaba nada.. Puede que eso te afecte.

Tambien tu teclado tiene 12 teclas ( 4x3 ) mientras que la tabla que esta ahi solo tiene del 0 al 9... si podes poner el codigo mejor. por que no se que modificacioes le hiciste.

Te paso el codigo

;*****************************************************************************************************************************
;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'0005'               ;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

;************************************************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
                        
;*********************************************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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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'0001'            ;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'0010'            ;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'0011'            ;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'0100'            ;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'0101'            ;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'0110'            ;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'0111'            ;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'1000'            ;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'1001'            ;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'1001'            ;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'0000'               ;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'0000'            ;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      ADCON0,GO         ;COMIENZA LA CONVERSION
         NOP
MEDIR2      BTFSC   ADCON0,GO         ;¿ES EL FIN DE LA CONVERSION?
         GOTO   MEDIR2
         MOVF   ADRESH,W
         MOVWF   ADRESA
         
         BANCO1
         MOVF   ADRESL,W
         BANCO0
         MOVWF   ADRES
         RETURN         







         
         

      
         END

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #18 en: 08 de Marzo de 2015, 01:11:16 »
Claro tu problema es que luego haces una comprobacion asi:

Código: ASM
  1. MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  2.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  3.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0

Entonces para intentar no tocar todo el codigo... simplemente cambia

LEE9 a  B'1010'   (Esta por que LEE8 tiene el mismo numero )
LEE10 a  B'1011'
LEE11 a  B'1100'

Y para que la tabla siga funcionando agregale nuevas entradas asi funciona tanto para el codigo BCD, como para el de tu teclado

Código: ASM
  1. TABLA  
  2.          ADDWF   PCL,F
  3.                ; GFBADEPC
  4.          RETLW   B'01111101'      ;0  
  5.          RETLW   B'00100001'      ;1  
  6.          RETLW   B'10111100'      ;2  
  7.          RETLW   B'10111001'      ;3  
  8.          RETLW   B'11100001'      ;4  
  9.          RETLW   B'11011001'      ;5  
  10.          RETLW   B'11011101'      ;6  
  11.          RETLW   B'00110001'      ;7  
  12.          RETLW   B'11111101'      ;8  
  13.          RETLW   B'11110001'      ;9
  14.          ;Lo del teclado
  15.          RETLW   B'11011101'      ;10 Caso que entre a LEE9  (Aca tenes que modificar los valores de binario segun corresponda )
  16.          RETLW   B'00110001'      ;11  Caso que entre a LEE10  
  17.          RETLW   B'11111101'      ;12  Caso que entre a LEE11

Podes fijarte la primera vez que pasaste el programa ahi estan los valores en binario que usabas.

Desconectado cdaiag

  • PIC10
  • *
  • Mensajes: 18
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #19 en: 08 de Marzo de 2015, 01:31:11 »
Claro tu problema es que luego haces una comprobacion asi:

Código: ASM
  1. MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  2.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  3.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0

Entonces para intentar no tocar todo el codigo... simplemente cambia

LEE9 a  B'1010'   (Esta por que LEE8 tiene el mismo numero )
LEE10 a  B'1011'
LEE11 a  B'1100'




Y para que la tabla siga funcionando agregale nuevas entradas asi funciona tanto para el codigo BCD, como para el de tu teclado

Código: ASM
  1. TABLA  
  2.          ADDWF   PCL,F
  3.                ; GFBADEPC
  4.          RETLW   B'01111101'      ;0  
  5.          RETLW   B'00100001'      ;1  
  6.          RETLW   B'10111100'      ;2  
  7.          RETLW   B'10111001'      ;3  
  8.          RETLW   B'11100001'      ;4  
  9.          RETLW   B'11011001'      ;5  
  10.          RETLW   B'11011101'      ;6  
  11.          RETLW   B'00110001'      ;7  
  12.          RETLW   B'11111101'      ;8  
  13.          RETLW   B'11110001'      ;9
  14.          ;Lo del teclado
  15.          RETLW   B'11011101'      ;10 Caso que entre a LEE9  (Aca tenes que modificar los valores de binario segun corresponda )
  16.          RETLW   B'00110001'      ;11  Caso que entre a LEE10  
  17.          RETLW   B'11111101'      ;12  Caso que entre a LEE11

Podes fijarte la primera vez que pasaste el programa ahi estan los valores en binario que usabas.
Lo probe no me funcionó el cero no lo muestra no se realmente porque

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #20 en: 08 de Marzo de 2015, 01:47:28 »
Debuggealo en el MPLAB... asi vas a ver cual es tu problema.

Desconectado cdaiag

  • PIC10
  • *
  • Mensajes: 18
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #21 en: 08 de Marzo de 2015, 01:49:22 »
Debuggealo en el MPLAB... asi vas a ver cual es tu problema.

Ok

Desconectado cdaiag

  • PIC10
  • *
  • Mensajes: 18
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #22 en: 08 de Marzo de 2015, 01:55:44 »
Debuggealo en el MPLAB... asi vas a ver cual es tu problema.

Ok

Simular no lo puedo simular porque el grabador que utilizo no es compatible con el MPlab veo de encontrarle solución

Gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #23 en: 08 de Marzo de 2015, 02:32:34 »
No hace falta, lo podes hacer tranquilamente desde el MPLAB sin necesidad de pasar a fisico.
Podes asignarle valores a los puertos como si fuera el caso o directamente modificar algun salto como si se presiono esa tecla y con unos cuantos breakpoints podes ver como quedan los registros, tambien podes hacer le paso a paso cuando llama a la tabla.

Desconectado cdaiag

  • PIC10
  • *
  • Mensajes: 18
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #24 en: 08 de Marzo de 2015, 21:00:17 »
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 ):

Código: ASM
  1. BCD7SEG:                        ; retlw b'gfedcba'  para display catodo comun
  2.         addwf   PCL,1           ; Se incrementa el contador del programa.-
  3.         retlw   b'0111111'      ; 0    
  4.         retlw   b'0000110'      ; 1    
  5.         retlw   b'1011011'      ; 2    
  6.         retlw   b'1001111'      ; 3    
  7.         retlw   b'1100110'      ; 4    
  8.         retlw   b'1101101'      ; 5    
  9.         retlw   b'1111101'      ; 6    
  10.         retlw   b'0000111'      ; 7    
  11.         retlw   b'1111111'      ; 8    
  12.         retlw   b'1101111'      ; 9
  13.         ;Aca seguiria para los valores de 10 a 15, podrias ponerle todos 0 por las dudas



         
         

      
         END


Realice unos cambios saque la operacion xor y ahora la tabla funciona perfecto pero voy a tener que cambiar la forma de leer el teclado y mostrarlo porque los tiempos para ingresar los números no me dan te paso el codigo.

;*****************************************************************************************************************************
;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   
TECLA1   EQU   H'30'
TECLA2   EQU   H'31'
TECLA3   EQU   H'32'
TECLA4   EQU   H'33'

;*****************************************************CONSTANTES***************************************************************
VALOR1   EQU   .74                     ;VALORES PARA EL RETARDO
VALOR2   EQU   .2                     ;VALORES PARA EL RETARDO
VALOR3   EQU   .200                  ;VALORES PARA EL RETARDO1
VALOR4   EQU   .20                     ;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'0005'               ;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
   
;************************************************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   TECLADO            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
HHH         CALL   MUESTRO
         GOTO   HHH
                        
;*********************************************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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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
         CALL   TABLA
         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
         BTFSC   COL1            ;COL1=0?
         GOTO   LEE1            ;NO ES 0 VOY A LEE1
         MOVLW   B'0001'            ;Nº 1 A W FILA 1 COLUMNA1
         MOVWF   TECPUL            ;MUEVO Nº1 A TECPUL

LEE1      CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         BTFSC   COL2            ;COL2=0?
         GOTO    LEE2            ;NO ES 0 VOY A LEE2
         MOVLW   B'0010'            ;Nº 2 A W FILA1 COLUMNA2
         MOVWF   TECPUL            ;MUEVO Nº2 A TECPUL

LEE2      CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO   
         BTFSC   COL3            ;COL3=0?
         GOTO   LEE3            ;NO ES CERO VOY A LEE3
         MOVLW   B'0011'            ;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
         BTFSC   COL1            ;COL1=0?
         GOTO   LEE4            ;NO ES 0 VOY A LEE4
         MOVLW   B'0100'            ;Nº 4 A W FILA2 COLUMNA1
         MOVWF   TECPUL            ;MUEVO Nº 4 A TECPUL

LEE4      CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         BTFSC   COL2            ;COL2=0?
         GOTO   LEE5            ;NO ES 0 VOY A LEE5
         MOVLW   B'0101'            ;Nº 5 A W FILA2 COLUMNA2
         MOVWF   TECPUL            ;MUEVO Nº 5 A TECPUL

LEE5      CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO   
         BTFSC   COL3            ;COL3=0?
         GOTO   LEE6            ;NO ES 0 VOY A LEE6
         MOVLW   B'0110'            ;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   
         BTFSC   COL1            ;COL1=0?
         GOTO   LEE7            ;NO ES 0 VOY A LEE7
         MOVLW   B'0111'            ;Nº 7 A W FILA3 COLUMNA1
         MOVWF   TECPUL            ;MUEVO Nº 7 A TECPUL      

LEE7      CALL    RETARDO
         CALL    RETARDO   
         CALL    RETARDO
         CALL    RETARDO
         BTFSC   COL2            ;COL2=0?
         GOTO   LEE8            ;NO ES 0 VOY A LEE8
         MOVLW   B'1000'            ;Nº 8 A W FILA3 COLUMNA2
         MOVWF   TECPUL            ;MUEVO Nº 8 A TECPUL

LEE8      CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO   
         BTFSC   COL3            ;COL3=0?
         GOTO   LEE9            ;NO ES 0 VOY A LEE9
         MOVLW   B'1001'            ;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
         BTFSC   COL1            ;COL2=0?
         GOTO   LEE10            ;NO ES 0 VOY A LEE10
         MOVLW   B'1000'            ;LETRA P A W FILA4 COLUMNA1
         MOVWF   TECPUL            ;MUEVO P A TECPUL

LEE10      CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         BTFSC   COL2            ;COL2=0?
         GOTO   LEE11            ;NO ES 0 VOY A LEE11
         MOVLW   B'0000'            ;Nº 0 A W FILA4 COLUMNA2
         MOVWF   TECPUL            ;Nº 0 A TECPUL

LEE11      CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         CALL    RETARDO
         BTFSC   COL3            ;COL3=0?
         GOTO   LEE12            ;NO ES 0 VOY A LEE12
         MOVLW   B'1000'            ;LETRA H A W FILA4 COLUMNA3
         MOVWF   TECPUL            ;LETRA H A TECPUL


LEE12      BCF    FIL4
         BANCO1
         COL1S
         COL2S
         COL3S
         BANCO0
         RETURN
         
      
;*********************************************SUBRUTINA LECTURA DE TECLADO*********************************************************
TECLADO
         CALL   RETARDO1      
         CALL   RETARDO1
         CALL   RETARDO1      
         CALL   RETARDO1
         CLRF   TECPUL            ;BORRO TECPUL
         CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
         MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
         MOVWF   DIGI1            ;PASO W A DIGI1
      
      

   
         CALL   RETARDO1      
         CALL   RETARDO1
         CALL   RETARDO1      
         CALL   RETARDO1
         CLRF   TECPUL            ;BORRO TECPUL
         CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
         MOVF   TECPUL,W
         MOVWF   DIGI2
      
         
         CALL   RETARDO1      
         CALL   RETARDO1
         CALL   RETARDO1      
         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
         MOVWF   DIGI3
      
         
      
   
         CALL   RETARDO1      
         CALL   RETARDO1
         CALL   RETARDO1      
         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
         MOVWF   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      ADCON0,GO         ;COMIENZA LA CONVERSION
         NOP
MEDIR2      BTFSC   ADCON0,GO         ;¿ES EL FIN DE LA CONVERSION?
         GOTO   MEDIR2
         MOVF   ADRESH,W
         MOVWF   ADRESA
         
         BANCO1
         MOVF   ADRESL,W
         BANCO0
         MOVWF   ADRES
         RETURN         







         
         

      
         END

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #25 en: 08 de Marzo de 2015, 21:16:28 »
Luego lo veo al codigo, realmente no hacia falta cambiar nada.

Con respecto al foro, por que sino se crean mensajes muy largos:

No cites mis respuestas a no ser que sea algo puntual, ejemplo una frase que quieras responder, abajo tenes el boton de responder y no crae una "cita" o quote.

Para poner el codigo cuando estas escribiendo hay un botoncito con el numeral # si haces click ahi dice algo asi (code)(/code)  pero con corchetes [ y ], pones tu condigo entre medio de esos 2 code.. (code)  Aca tu codigo (/code). Esto para la proxima ves que necesites poner el codigo.


EDIT ya lo vi:

Bueno parece que no me estas leyendo bien lo que pongo. Te dije que para cambiar lo minimo del programa deberias de agregar 3 lineas y modificar 4 valores en binario, y ya con eso funcionaba. No entiendo por que te complicaste tanto borrando bastante parte del codigo ( A pesar que es super extenso sin sentido alguno como ya dije ). El tener 2 codigos de muestreo hace que uno no llame a la tabla y ahi podia haber estado tu error. Es algo sin sentido repetir 2 veces el mismo codigo.

Código: ASM
  1. ;*****************************************************************************************************************************
  2. ;ESTE PROGRAMA MANEJA UN TECLADO DE 4 FILAS Y TRES COLUMNAS MATRICIAL POR EL CUAL SE INGRESA UN VALOR Y LO MUESTRA EN CUATRO
  3. ;DISPLAYS DE 7 SEGMENTOS, TAMBIÉN MEDIANTE UN PULSADOR GRABA EL VALOR MOSTRADO EN LOS DISPLAY EN MEMORIA EPROM Y CON OTRO
  4. ;PULSADOR RECUPERA DICHO VALOR, LA PARTE DEL CONVERSOR A/D EN ESTE PROGRAMA NO FUNCIONA SOLAMENTE FIGURAN LAS SUBRUTINAS
  5. ;*****************************************************************************************************************************
  6.  
  7.          LIST     P= 16F874A
  8.          INCLUDE "P16F874A.INC"                                                          
  9. ;*****************************************************VARIABLES****************************************************************
  10. REG1   EQU   H'20'                  ;VARIABLE PARA SUBRUTINA DE RETARDO
  11. REG2   EQU   H'21'                  ;VARIABLE PARA SUBRUTINA DE RETARDO
  12. DIGI1   EQU   H'22'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 1
  13. DIGI2   EQU   H'23'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 2
  14. DIGI3   EQU   H'24'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 3  
  15. DIGI4   EQU   H'25'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 4
  16. TECPUL   EQU   H'26'                  ;VARIABLE PARA ALMACENAR EL VALOR DE LA TECLA PULSADA
  17. REG3   EQU   H'27'                  ;VARIABLE PARA SUBRUTINA DE RETARDO1
  18. REG4   EQU   H'28'                  ;VARIABLE PARA SUBRUTINA DE RETARDO1
  19. REG5   EQU   H'29'                  ;VARIABLE PARA SUBRUTINA DE RETARDO CONVERSOR A/D  
  20. LSD      EQU   H'2A'                  ;VARIABLE PARA SUBRUTINA BINBCD
  21. MSD      EQU   H'2B'                  ;VARIABLE PARA SUBRUTINA BINBCD  
  22. VSD      EQU   H'2C'                  ;VARIABLE PARA SUBRUTINA BINBCD        
  23. HSD      EQU   H'2D'                  ;VARIABLE PARA SUBRUTINA BINBCD  
  24. ADRESA   EQU   H'2E'                  ;VALOR ALTO DE LA CONVERSION=ADRESH
  25. ADRES   EQU   H'2F'                  ;VALOR BAJO DE LA CONVERSION=ADRESL  
  26.  
  27.    
  28.  
  29. ;*****************************************************CONSTANTES***************************************************************
  30. VALOR1   EQU   .74                     ;VALORES PARA EL RETARDO
  31. VALOR2   EQU   .2                     ;VALORES PARA EL RETARDO
  32. VALOR3   EQU   .150                  ;VALORES PARA EL RETARDO1
  33. VALOR4   EQU   .4                     ;VALORES PARA EL RETARDO1
  34. ;*****************************************************DEFINICIONES*************************************************************
  35.  
  36.          #DEFINE BANCO0      BCF      STATUS,RP0
  37.          #DEFINE BANCO1      BSF      STATUS,RP0  
  38. ;***************************************************OTRAS DEFINICIONES********************************************************
  39.  
  40.          #DEFINE TRD1   PORTD,7      ;DEFINO LA SALIDA DE TRD1
  41.          #DEFINE TRD2   PORTD,6      ;DEFINO LA SALIDA DE TRD2        
  42.          #DEFINE TRD3   PORTD,5      ;DEFINO LA SALIDA DE TRD3      
  43.          #DEFINE TRD4   PORTD,4      ;DEFINO LA SALIDA DE TRD4
  44.  
  45.      
  46.          #DEFINE LED1   PORTB,5      ;DEFINO LED PRUEBA
  47.          #DEFINE GRABO   PORTB,7      ;DEFINO PULSADOR CONVERSOR ANALOGICO DIGITAL
  48.          #DEFINE LED2   PORTB,4      ;DEFINO LED PRUEBA
  49.          #DEFINE RECU   PORTB,6      ;DEFINO PULSADOR GRABAR
  50.          
  51.  
  52.          #DEFINE COL1   PORTE,0      ;DEFINO COLUMNA TECLADO
  53.          #DEFINE COL2   PORTE,1      ;DEFINO COLUMNA TECLADO  
  54.          #DEFINE COL3   PORTE,2      ;DEFINO COLUMNA TECLADO
  55.  
  56.          #DEFINE FIL1   PORTD,0      ;DEFINO TECLADO FILAS
  57.          #DEFINE FIL2   PORTD,1      ;DEFINO TECLADO FILAS
  58.          #DEFINE FIL3   PORTD,2      ;DEFINO TECLADO FILAS
  59.          #DEFINE FIL4   PORTD,3      ;DEFINO TECLADO FILAS
  60.  
  61.          #DEFINE COL1E   BSF   TRISE,0   ;DEFINO COL1 COMO ENTRADA
  62.          #DEFINE COL1S   BCF   TRISE,0   ;DEFINO COL1 COMO SALIDA
  63.  
  64.          
  65.          #DEFINE COL2E   BSF   TRISE,1   ;DEFINO COL2 COMO ENTRADA  
  66.          #DEFINE COL2S   BCF   TRISE,1 ;DEFINO COL2 COMO SALIDA
  67.    
  68.          #DEFINE COL3E   BSF   TRISE,2   ;DEFINO COL3 COMO ENTRADA  
  69.          #DEFINE COL3S   BCF   TRISE,2   ;DEFINO COL3 COMO SALIDA
  70.  
  71.            
  72. ;********************************************************PROGRAMA*************************************************************
  73.  
  74.          ORG      H'0000'  
  75.          GOTO    INICIO               ;IR AL INICIO DEL PROGRAMA
  76.  
  77.          ORG      H'0005'               ;ATENCION A LAS INTERUPCIONES
  78.          RETFIE
  79.  
  80. ;*********************************SUBRUTINA TABLA CONVERSION BCD A 7 SEGMENTOS*************************************************
  81. TABLA  
  82.          ADDWF   PCL,F
  83.                ; GFBADEPC
  84.          RETLW   B'01111101'      ;0  
  85.          RETLW   B'00100001'      ;1  
  86.          RETLW   B'10111100'      ;2  
  87.          RETLW   B'10111001'      ;3  
  88.          RETLW   B'11100001'      ;4  
  89.          RETLW   B'11011001'      ;5  
  90.          RETLW   B'11011101'      ;6  
  91.          RETLW   B'00110001'      ;7  
  92.          RETLW   B'11111101'      ;8  
  93.          RETLW   B'11110001'      ;9
  94.          ;Lo del teclado
  95.          RETLW   B'11110100'      ;10 Caso que entre a LEE9  (Aca tenes que modificar los valores de binario segun corresponda )
  96.          RETLW   B'01111101'      ;11  Caso que entre a LEE10  
  97.          RETLW   B'11100101'      ;12  Caso que entre a LEE11
  98.  
  99. ;************************************************INICIALIZACION****************************************************************
  100.  
  101.  
  102. INIPIC      BANCO1
  103.  
  104.          MOVLW  B'10110100'    
  105.          MOVWF  ADCON1            ;CONFIGURO A0, A1 Y A3 COMO ENTRADAS ANALOGICAS
  106.          MOVLW  B'001011'    
  107.          MOVWF  TRISA            ;CONFIGURO EL PUERTO A
  108.  
  109.          MOVLW  B'11000000'
  110.          MOVWF  TRISB            ;CONFIGURO EL PUERTO B COMO SALIDA (B7 Y B6 ENTRADAS)
  111.  
  112.          MOVLW  B'00000000'
  113.          MOVWF  TRISC            ;CONFIGURO EL PUERTO C COMO SALIDA
  114.  
  115.          MOVLW  B'00000000'
  116.          MOVWF  TRISD            ;CONFIGURO EL PUERTO D COMO SALIDA
  117.  
  118.          MOVLW  B'000'
  119.          MOVWF  TRISE            ;CONFIGURO EL PUERTO E COMO SALIDA
  120.  
  121.      
  122.          MOVLW  B'00000000'
  123.          MOVWF  INTCON            ;DESHABILITO LAS INTERRUPCIONES
  124.  
  125.    
  126.  
  127.          BANCO0
  128.  
  129.          CLRF   PORTA
  130.          CLRF   PORTB
  131.          CLRF    PORTC
  132.          CLRF   PORTD
  133.          CLRF   PORTE
  134.          RETURN
  135.  
  136. ;**************************************************PROGRAMA PRINCIPAL**********************************************************
  137.  
  138. INICIO      CALL   INIPIC            ;LLAMO A LA RUTINA DE INICIALIZACION
  139.  
  140.          CALL   DISPLAY1         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY1
  141.          CALL   DISPLAY2         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY2
  142.          CALL   DISPLAY3         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY3  
  143.          CALL   DISPLAY4         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY4
  144. HHH         CALL   MUESTRO
  145.          GOTO   HHH
  146.                        
  147. ;*********************************************SUBRUTINA DE RETARDO*************************************************************
  148. RETARDO      MOVLW   VALOR1
  149.          MOVWF   REG1
  150.          MOVLW   VALOR2  
  151.          MOVWF   REG2
  152. LOOP      DECFSZ   REG1,F
  153.          GOTO   LOOP
  154.          DECFSZ   REG2,F
  155.          GOTO   LOOP
  156.          RETURN  
  157.  
  158. ;*********************************************SUBRUTINA DE RETARDO1*************************************************************
  159. RETARDO1   MOVLW   VALOR3
  160.          MOVWF   REG3
  161.          MOVLW   VALOR4  
  162.          MOVWF   REG4
  163. LOOP1      DECFSZ   REG1,F
  164.          GOTO   LOOP1
  165.          DECFSZ   REG2,F
  166.          GOTO   LOOP
  167.          RETURN  
  168. ;***********************************************SUBRUTINA DE MUESTREO*********************************************************
  169. MUESTRO      
  170. H         MOVF   DIGI1,W            ;MUEVO EL VALOR DE DIGI1 A W
  171.          CALL   TABLA
  172.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  173.          BSF      TRD1  
  174.          BCF      TRD2
  175.          BCF      TRD3
  176.          BCF      TRD4
  177.          CALL   RETARDO
  178.      
  179.  
  180.          MOVF   DIGI2,W            ;MUEVO EL VALOR DE DIGI2 A W
  181.          CALL   TABLA
  182.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  183.          BCF      TRD1  
  184.          BSF      TRD2
  185.          BCF      TRD3
  186.          BCF      TRD4
  187.          CALL   RETARDO
  188.  
  189.          MOVF   DIGI3,W            ;MUEVO EL VALOR DE DIGI3 A W
  190.          CALL   TABLA
  191.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  192.          BCF      TRD1  
  193.          BCF      TRD2
  194.          BSF      TRD3
  195.          BCF      TRD4
  196.          CALL   RETARDO
  197.          
  198.  
  199.          MOVF   DIGI4,W            ;MUEVO EL VALOR DE DIGI4 A W
  200.          CALL   TABLA
  201.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  202.          BCF      TRD1  
  203.          BCF      TRD2
  204.          BCF      TRD3
  205.          BSF      TRD4
  206.          CALL   RETARDO
  207.          BTFSC   GRABO
  208.          GOTO   AAA
  209.          CALL   GD1
  210.          BSF      LED1
  211. AAA         BTFSC   RECU
  212.          GOTO   H
  213.          GOTO   RECUPE
  214.          RETURN
  215. ;*********************************************RECUPERACION DE VALORES***********************************************************
  216.  
  217. RECUPE  
  218.      
  219.          CLRF   DIGI1
  220.          CLRF   DIGI2
  221.          CLRF   DIGI3
  222.          CLRF   DIGI4
  223.          CALL   RECUP1
  224.          CALL   RECUP2
  225.          CALL   RECUP3
  226.          CALL   RECUP4
  227.          CALL   MUESTRO1
  228.  
  229. ;***********************************************SUBRUTINA DE MUESTREO VALOR RECUPERADO*********************************************
  230. MUESTRO1  
  231. X2      
  232.          MOVF   DIGI1,W            ;MUEVO EL VALOR DE DIGI1 A W
  233.          CALL   TABLA
  234.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  235.          BSF      TRD1  
  236.          BCF      TRD2
  237.          BCF      TRD3
  238.          BCF      TRD4
  239.          CALL   RETARDO
  240.      
  241.  
  242.          MOVF   DIGI2,W            ;MUEVO EL VALOR DE DIGI2 A W
  243.          CALL   TABLA
  244.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  245.          BCF      TRD1  
  246.          BSF      TRD2
  247.          BCF      TRD3
  248.          BCF      TRD4
  249.          CALL   RETARDO
  250.  
  251.          MOVF   DIGI3,W            ;MUEVO EL VALOR DE DIGI3 A W
  252.          CALL   TABLA
  253.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  254.          BCF      TRD1  
  255.          BCF      TRD2
  256.          BSF      TRD3
  257.          BCF      TRD4
  258.          CALL   RETARDO
  259.          
  260.  
  261.          MOVF   DIGI4,W            ;MUEVO EL VALOR DE DIGI4 A W
  262.          CALL   TABLA
  263.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  264.          BCF      TRD1  
  265.          BCF      TRD2
  266.          BCF      TRD3
  267.          BSF      TRD4
  268.          CALL   RETARDO
  269.          GOTO   X2
  270.          RETURN
  271. ;******************************************SUBRUTINA DE LECTURA DE TECLADO *****************************************************
  272. LEETEC            BANCO1            ;PASO AL BANCO CERO PARA CONFIGURAR
  273.                COL1E            ;CONFIGURO COL1 COMO ENTRADA
  274.                COL2E            ;CONFIGURO COL2 COMO ENTRADA
  275.                COL3E            ;CONFIGURO COL3 COMO ENTRADA
  276.                  
  277.                BANCO0            ;PASAO AL BANCO CERO
  278.          CLRF   TECPUL            ;LIMPIO LA VARIABLE TECPUL
  279.          BSF      FIL1            ;PONGO A 1 FIL1
  280.          BCF      FIL2            ;PONGO A 0 FIL2
  281.          BCF      FIL3            ;PONGO A 0 FIL3  
  282.          BCF     FIL4            ;PONGO A 0 FIL4
  283.          CALL    RETARDO
  284.          CALL    RETARDO
  285.          CALL   RETARDO
  286.          CALL    RETARDO
  287.          CALL   RETARDO
  288.          CALL   RETARDO  
  289.          CALL   RETARDO
  290.          CALL   RETARDO
  291.          CALL   RETARDO
  292.          CALL   RETARDO
  293.          BTFSC   COL1            ;COL1=0?
  294.          GOTO   LEE1            ;NO ES 0 VOY A LEE1
  295.          MOVLW   B'0001'            ;Nº 1 A W FILA 1 COLUMNA1
  296.          MOVWF   TECPUL            ;MUEVO Nº1 A TECPUL
  297.  
  298. LEE1      CALL    RETARDO
  299.          CALL    RETARDO
  300.          CALL   RETARDO
  301.          CALL    RETARDO
  302.          CALL   RETARDO  
  303.          CALL   RETARDO
  304.          CALL   RETARDO
  305.          CALL   RETARDO
  306.          CALL   RETARDO
  307.          CALL   RETARDO  
  308.          BTFSC   COL2            ;COL2=0?
  309.          GOTO    LEE2            ;NO ES 0 VOY A LEE2
  310.          MOVLW   B'0010'            ;Nº 2 A W FILA1 COLUMNA2
  311.          MOVWF   TECPUL            ;MUEVO Nº2 A TECPUL
  312.  
  313. LEE2      CALL    RETARDO
  314.          CALL    RETARDO
  315.          CALL   RETARDO
  316.          CALL    RETARDO
  317.          CALL   RETARDO  
  318.          CALL   RETARDO
  319.          CALL   RETARDO
  320.          CALL   RETARDO
  321.          CALL   RETARDO
  322.          CALL   RETARDO
  323.          BTFSC   COL3            ;COL3=0?
  324.          GOTO   LEE3            ;NO ES CERO VOY A LEE3
  325.          MOVLW   B'0011'            ;Nº 3 A W FILA1 COLUMNA 3
  326.          MOVWF   TECPUL            ;MUEVO Nº 3 A TECPUL      
  327.  
  328. LEE3      BCF      FIL1
  329.          BSF      FIL2
  330.          CALL    RETARDO
  331.          CALL    RETARDO
  332.          CALL   RETARDO
  333.          CALL    RETARDO
  334.          CALL   RETARDO  
  335.          CALL   RETARDO  
  336.          CALL   RETARDO
  337.          CALL   RETARDO
  338.          CALL   RETARDO
  339.          CALL   RETARDO
  340.          BTFSC   COL1            ;COL1=0?
  341.          GOTO   LEE4            ;NO ES 0 VOY A LEE4
  342.          MOVLW   B'0100'            ;Nº 4 A W FILA2 COLUMNA1
  343.          MOVWF   TECPUL            ;MUEVO Nº 4 A TECPUL
  344.  
  345. LEE4      CALL    RETARDO
  346.          CALL    RETARDO
  347.          CALL   RETARDO
  348.          CALL    RETARDO
  349.          CALL   RETARDO  
  350.          CALL   RETARDO
  351.          CALL   RETARDO
  352.          CALL   RETARDO  
  353.          CALL   RETARDO
  354.          CALL   RETARDO
  355.          BTFSC   COL2            ;COL2=0?
  356.          GOTO   LEE5            ;NO ES 0 VOY A LEE5
  357.          MOVLW   B'0101'            ;Nº 5 A W FILA2 COLUMNA2
  358.          MOVWF   TECPUL            ;MUEVO Nº 5 A TECPUL
  359.  
  360. LEE5      CALL    RETARDO
  361.          CALL    RETARDO
  362.          CALL   RETARDO
  363.          CALL    RETARDO
  364.          CALL   RETARDO  
  365.          CALL   RETARDO  
  366.          CALL   RETARDO  
  367.          CALL   RETARDO
  368.          CALL   RETARDO
  369.          CALL   RETARDO
  370.          BTFSC   COL3            ;COL3=0?
  371.          GOTO   LEE6            ;NO ES 0 VOY A LEE6
  372.          MOVLW   B'0110'            ;Nº 6 A W FILA2 COLUMNA3
  373.          MOVWF   TECPUL            ;MUEVO Nº 6 A TECPUL
  374.  
  375.  
  376. LEE6      BCF      FIL2  
  377.          BSF      FIL3
  378.          CALL    RETARDO
  379.          CALL    RETARDO
  380.          CALL   RETARDO
  381.          CALL    RETARDO
  382.          CALL   RETARDO  
  383.          CALL   RETARDO  
  384.          CALL   RETARDO  
  385.          CALL   RETARDO
  386.          CALL   RETARDO
  387.          CALL   RETARDO
  388.          BTFSC   COL1            ;COL1=0?
  389.          GOTO   LEE7            ;NO ES 0 VOY A LEE7
  390.          MOVLW   B'0111'            ;Nº 7 A W FILA3 COLUMNA1
  391.          MOVWF   TECPUL            ;MUEVO Nº 7 A TECPUL      
  392.  
  393. LEE7      CALL    RETARDO
  394.          CALL    RETARDO
  395.          CALL   RETARDO
  396.          CALL    RETARDO
  397.          CALL   RETARDO  
  398.          CALL   RETARDO  
  399.          CALL   RETARDO  
  400.          CALL   RETARDO
  401.          CALL   RETARDO
  402.          CALL   RETARDO
  403.          BTFSC   COL2            ;COL2=0?
  404.          GOTO   LEE8            ;NO ES 0 VOY A LEE8
  405.          MOVLW   B'1000'            ;Nº 8 A W FILA3 COLUMNA2
  406.          MOVWF   TECPUL            ;MUEVO Nº 8 A TECPUL
  407.  
  408. LEE8      CALL    RETARDO
  409.          CALL    RETARDO
  410.          CALL   RETARDO
  411.          CALL    RETARDO
  412.          CALL   RETARDO  
  413.          CALL   RETARDO  
  414.          CALL   RETARDO  
  415.          CALL   RETARDO
  416.          CALL   RETARDO
  417.          CALL   RETARDO  
  418.          BTFSC   COL3            ;COL3=0?
  419.          GOTO   LEE9            ;NO ES 0 VOY A LEE9
  420.          MOVLW   B'1001'            ;Nº 9 A W FILA3 COLUMNA3
  421.          MOVWF   TECPUL            ;MUEVO Nº 9 A TECPUL
  422.  
  423.  
  424. LEE9      BCF      FIL3
  425.          BSF      FIL4
  426.          CALL    RETARDO
  427.          CALL    RETARDO
  428.          CALL   RETARDO
  429.          CALL    RETARDO
  430.          CALL   RETARDO  
  431.          CALL   RETARDO  
  432.          CALL   RETARDO  
  433.          CALL   RETARDO  
  434.          CALL   RETARDO
  435.          CALL   RETARDO  
  436.          BTFSC   COL1            ;COL2=0?
  437.          GOTO   LEE10            ;NO ES 0 VOY A LEE10
  438.          MOVLW   B'1010'            ;LETRA P A W FILA4 COLUMNA1
  439.          MOVWF   TECPUL            ;MUEVO P A TECPUL
  440.  
  441. LEE10      CALL    RETARDO
  442.          CALL    RETARDO
  443.          CALL   RETARDO
  444.          CALL    RETARDO
  445.          CALL   RETARDO  
  446.          CALL   RETARDO  
  447.          CALL   RETARDO  
  448.          CALL   RETARDO
  449.          CALL   RETARDO
  450.          CALL   RETARDO  
  451.          BTFSC   COL2            ;COL2=0?
  452.          GOTO   LEE11            ;NO ES 0 VOY A LEE11
  453.          MOVLW   B'1011'               ;Nº 0 A W FILA4 COLUMNA2
  454.          MOVWF   TECPUL            ;Nº 0 A TECPUL
  455.  
  456. LEE11      CALL    RETARDO
  457.          CALL    RETARDO
  458.          CALL   RETARDO
  459.          CALL    RETARDO
  460.          CALL   RETARDO  
  461.          CALL   RETARDO  
  462.          CALL   RETARDO  
  463.          CALL   RETARDO
  464.          CALL   RETARDO
  465.          CALL   RETARDO  
  466.          BTFSC   COL3            ;COL3=0?
  467.          GOTO   LEE12            ;NO ES 0 VOY A LEE12
  468.          MOVLW   B'1100'            ;LETRA H A W FILA4 COLUMNA3
  469.          MOVWF   TECPUL            ;LETRA H A TECPUL
  470.  
  471.  
  472. LEE12      BCF    FIL4
  473.          BANCO1
  474.          COL1S
  475.          COL2S
  476.          COL3S
  477.          BANCO0
  478.          RETURN
  479.          
  480.      
  481. ;*********************************************SUBRUTINA PARA DISPLAY 1*********************************************************
  482. DISPLAY1   CALL   RETARDO1
  483.                
  484.      
  485.          CLRF   TECPUL            ;BORRO TECPUL
  486.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  487.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  488.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  489.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  490.          GOTO   DISPLAY1         ;SI NO ES CERO VUELVO A DISPLAY1
  491.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  492.          MOVWF   DIGI1            ;PASO W A DIGI1
  493.          RETURN
  494.  
  495. ;*********************************************SUBRUTINA PARA DISPLAY 2*********************************************************
  496. DISPLAY2   CALL   RETARDO1
  497.      
  498.  
  499.  
  500.          CLRF   TECPUL            ;BORRO TECPUL
  501.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  502.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  503.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  504.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  505.          GOTO   DISPLAY2         ;SI NO ES CERO VUELVO A DISPLAY1
  506.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  507.          MOVWF   DIGI2            ;PASO W A DIGI2
  508.          RETURN
  509. ;*********************************************SUBRUTINA PARA DISPLAY 3*********************************************************
  510.  
  511. DISPLAY3   CALL   RETARDO1
  512.      
  513.  
  514.          CLRF   TECPUL            ;BORRO TECPUL
  515.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  516.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  517.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  518.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  519.          GOTO   DISPLAY3         ;SI NO ES CERO VUELVO A DISPLAY1
  520.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  521.          MOVWF   DIGI3            ;PASO W A DIGI3
  522.          RETURN
  523.  
  524. ;*********************************************SUBRUTINA PARA DISPLAY 4*********************************************************
  525.  
  526. DISPLAY4   CALL   RETARDO1
  527.          
  528.  
  529.  
  530.          CLRF   TECPUL            ;BORRO TECPUL
  531.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  532.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  533.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  534.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  535.          GOTO   DISPLAY4         ;SI NO ES CERO VUELVO A DISPLAY1
  536.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  537.          MOVWF   DIGI4            ;PASO W A DIGI4
  538.          RETURN
  539.  
  540. ;*********************************************SUBRUTINA GRABACION DIGITO 1 (GD1)***********************************************
  541.  
  542. GD1         BSF      STATUS,RP1
  543.          BCF      STATUS,RP0         ;BANCO2
  544.          MOVLW   0X00            ;MUEVO A W LA DIRECCION DE MEMORI A GRABAR
  545.          MOVWF   EEADR            ;MUEVO LA DIRECION 0X01 A EEADR
  546.          MOVF   DIGI1,W            ;MUEVO DIGI1 A W
  547.          MOVWF   EEDATA            ;DIGI1 A EEDATA
  548.          BSF      STATUS,RP0         ;BANCO3
  549.          BCF      EECON1,EEPGD      
  550.          BSF      EECON1,WREN         ;HABILITO ESCRITURA
  551.          BCF      INTCON,GIE         ;DESHABILITO TODAS LAS INTERUPCIONES
  552.          MOVLW   H'55'            ;REQUERIDO
  553.          MOVWF   EECON2            ;REQUERIDO
  554.          MOVLW   H'AA'            ;REQUERIDO
  555.          MOVWF   EECON2            ;REQUERIDO
  556.          BSF      EECON1,WR         ;DESHABILITO ESCRITURA
  557. VERIF1      BTFSC   EECON1,WR
  558.          GOTO   VERIF1
  559.          BCF      EECON1,WREN
  560.          BCF      STATUS,RP1
  561.          BCF      STATUS,RP0  
  562.    
  563.  
  564. ;*********************************************SUBRUTINA GRABACION DIGITO 2 (GD2)***********************************************
  565.  
  566.          BSF      STATUS,RP1
  567.          BCF      STATUS,RP0
  568.          MOVLW   0X01
  569.          MOVWF   EEADR
  570.          MOVF   DIGI2,W
  571.          MOVWF   EEDATA
  572.          BSF      STATUS,RP0
  573.          BCF      EECON1,EEPGD
  574.          BSF      EECON1,WREN
  575.          BCF      INTCON,GIE
  576.          MOVLW   H'55'
  577.          MOVWF   EECON2
  578.          MOVLW   H'AA'
  579.          MOVWF   EECON2
  580.          BSF      EECON1,WR
  581. VERIF2      BTFSC   EECON1,WR
  582.          GOTO   VERIF2
  583.          BCF      EECON1,WREN
  584.          BCF      STATUS,RP1
  585.          BCF      STATUS,RP0  
  586.      
  587.  
  588. ;*********************************************SUBRUTINA GRABACION DIGITO 3 (GD3)***********************************************
  589.  
  590.          BSF      STATUS,RP1
  591.          BCF      STATUS,RP0
  592.          MOVLW   0X02
  593.          MOVWF   EEADR
  594.          MOVF   DIGI3,W
  595.          MOVWF   EEDATA
  596.          BSF      STATUS,RP0
  597.          BCF      EECON1,EEPGD
  598.          BSF      EECON1,WREN
  599.          BCF      INTCON,GIE
  600.          MOVLW   H'55'
  601.          MOVWF   EECON2
  602.          MOVLW   H'AA'
  603.          MOVWF   EECON2
  604.          BSF      EECON1,WR
  605. VERIF3      BTFSC   EECON1,WR
  606.          GOTO   VERIF3
  607.          BCF      EECON1,WREN
  608.          BCF      STATUS,RP1
  609.          BCF      STATUS,RP0  
  610.          
  611.  
  612. ;*********************************************SUBRUTINA GRABACION DIGITO 4 (GD4)***********************************************
  613.  
  614.          BSF      STATUS,RP1
  615.          BCF      STATUS,RP0
  616.          MOVLW   0X03
  617.          MOVWF   EEADR
  618.          MOVF   DIGI4,W
  619.          MOVWF   EEDATA
  620.          BSF      STATUS,RP0
  621.          BCF      EECON1,EEPGD
  622.          BSF      EECON1,WREN
  623.          BCF      INTCON,GIE
  624.          MOVLW   H'55'
  625.          MOVWF   EECON2
  626.          MOVLW   H'AA'
  627.          MOVWF   EECON2
  628.          BSF      EECON1,WR
  629. VERIF4      BTFSC   EECON1,WR
  630.          GOTO   VERIF4
  631.          BCF      EECON1,WREN
  632.          BCF      STATUS,RP1
  633.          BCF      STATUS,RP0
  634.          RETURN
  635.  
  636. ;*********************************************SUBRUTINA RECUPERACION DIGITO1 (RECUP1)******************************************
  637.  
  638. RECUP1      BSF      STATUS,RP1
  639.          BCF      STATUS,RP0
  640.          MOVLW   0X00
  641.          MOVWF   EEADR
  642.          BSF      STATUS,RP0
  643.          BCF      EECON1,EEPGD
  644.          BSF      EECON1,RD
  645.          BCF      STATUS,RP0
  646.          MOVF   EEDATA,W
  647.          BCF      STATUS,RP1
  648.          BCF      STATUS,RP0
  649.          MOVWF   DIGI1
  650.          RETURN  
  651.  
  652. ;*********************************************SUBRUTINA RECUPERACION DIGITO2 (RECUP2)******************************************
  653.  
  654. RECUP2      BSF      STATUS,RP1
  655.          BCF      STATUS,RP0
  656.          MOVLW   0X01
  657.          MOVWF   EEADR
  658.          BSF      STATUS,RP0
  659.          BCF      EECON1,EEPGD
  660.          BSF      EECON1,RD
  661.          BCF      STATUS,RP0
  662.          MOVF   EEDATA,W
  663.          BCF      STATUS,RP1
  664.          BCF      STATUS,RP0
  665.          MOVWF   DIGI2
  666.          RETURN  
  667.  
  668. ;*********************************************SUBRUTINA RECUPERACION DIGITO3 (RECUP3)******************************************
  669.  
  670. RECUP3      BSF      STATUS,RP1
  671.          BCF      STATUS,RP0
  672.          MOVLW   0X02
  673.          MOVWF   EEADR
  674.          BSF      STATUS,RP0
  675.          BCF      EECON1,EEPGD
  676.          BSF      EECON1,RD
  677.          BCF      STATUS,RP0
  678.          MOVF   EEDATA,W
  679.          BCF      STATUS,RP1
  680.          BCF      STATUS,RP0
  681.          MOVWF   DIGI3
  682.          RETURN  
  683.  
  684. ;*********************************************SUBRUTINA RECUPERACION DIGITO4 (RECUP4)******************************************
  685.  
  686. RECUP4      BSF      STATUS,RP1
  687.          BCF      STATUS,RP0
  688.          MOVLW   0X03
  689.          MOVWF   EEADR
  690.          BSF      STATUS,RP0
  691.          BCF      EECON1,EEPGD
  692.          BSF      EECON1,RD
  693.          BCF      STATUS,RP0
  694.          MOVF   EEDATA,W
  695.          BCF      STATUS,RP1
  696.          BCF      STATUS,RP0
  697.          MOVWF   DIGI4
  698.          RETURN
  699.  
  700. ;*****************************************SUBRUTINA BIN A BCD 10 BIT***********************************************************
  701.  
  702. STAR      CLRF   HSD
  703.          CLRF   VSD
  704.          CALL   BINBCD
  705. OUT         BTFSC   ADRESA,0
  706.          CALL   PRIM
  707.          BTFSC   ADRESA,1
  708.          CALL   SEGU
  709.          RETURN
  710.  
  711. BINBCD      MOVF   ADRES,W
  712.          CLRF   MSD
  713.          MOVWF   LSD
  714. GTENTH      MOVLW   0X0A
  715.          SUBWF   LSD,W
  716.          BTFSS   STATUS,C
  717.          GOTO   OVER
  718.          MOVWF   LSD
  719.          INCF   MSD,F
  720.          GOTO   GTENTH
  721. OVER
  722. TENTH      MOVLW   0X0A
  723.          SUBWF   MSD,W
  724.          BTFSS   STATUS,C
  725.          RETLW   0
  726.          MOVWF   MSD
  727.          INCF   VSD,F
  728.          GOTO   TENTH
  729. PRIM      MOVF   LSD,W
  730.          ADDLW   0X06
  731.          MOVWF   LSD
  732.          CALL   ADJDEC
  733.          MOVF   MSD,W
  734.          ADDLW   0X05
  735.          MOVWF   MSD
  736.          CALL   ADJDEC
  737.          MOVF   VSD,W
  738.          ADDLW   0X02
  739.          MOVWF   VSD
  740.          RETURN
  741.  
  742. SEGU      MOVF   LSD,W
  743.          ADDLW   0X02
  744.          MOVWF   LSD
  745.          CALL   ADJDEC
  746.          MOVF   MSD,W
  747.          ADDLW   0X01
  748.          MOVWF   MSD
  749.          CALL   ADJDEC
  750.          MOVF   VSD,W
  751.          ADDLW   0X05
  752.          MOVWF   VSD
  753.          CALL   ADJDEC
  754.          RETURN
  755.  
  756. ADJDEC      MOVLW   0X0A
  757.          SUBWF   LSD,0
  758.          BTFSS   STATUS,C
  759.          GOTO   DEC
  760.          MOVLW   0X06
  761.          ADDWF   LSD,1
  762.          MOVLW   0X0F
  763.          ANDWF   LSD,1
  764.          INCF   MSD,1
  765.  
  766. DEC         MOVLW   0X0A
  767.          SUBWF   MSD,0
  768.          BTFSS   STATUS,C
  769.          GOTO   CEN
  770.          MOVLW   0X06
  771.          ADDWF   MSD,1
  772.          MOVLW   0X0F
  773.          ANDWF   MSD,1
  774.          INCF   VSD,1
  775.  
  776. CEN         MOVLW   0X0A
  777.          SUBWF   VSD,0
  778.          BTFSS   STATUS,C
  779.          GOTO   MIL
  780.          MOVLW   0X06
  781.          ADDWF   VSD,1
  782.          MOVLW   0X0F
  783.          ANDWF   VSD,1
  784.          INCF   HSD,1
  785.  
  786. MIL         RETURN
  787.  
  788.  
  789.    
  790. ;*************************************SUBRUTINA LECTURA ENTRADA ANALOGICA A0***************************************************
  791.  
  792. MEDIR      MOVLW   B'10000001'
  793.          MOVWF   ADCON0            ;SELECCIONO RA0
  794.          MOVLW   .75               ;RETARDO NECESARIO ANTES DE LA CONVERSION
  795.          MOVWF   REG5
  796. MEDIR1      NOP
  797.          DECFSZ   REG5,F
  798.          GOTO   MEDIR1
  799.          BSF      ADCON0,GO         ;COMIENZA LA CONVERSION
  800.          NOP
  801. MEDIR2      BTFSC   ADCON0,GO         ;¿ES EL FIN DE LA CONVERSION?
  802.          GOTO   MEDIR2
  803.          MOVF   ADRESH,W
  804.          MOVWF   ADRESA
  805.          
  806.          BANCO1
  807.          MOVF   ADRESL,W
  808.          BANCO0
  809.          MOVWF   ADRES
  810.          RETURN        
  811.  
  812.  
  813.          END

Con respecto al programa te vuelvo a repetir estas haciendo algo de 5000 lineas cuando con 500 lo haces. Se vuelve mas legible y simple.
Actualmente creo que estoy mas que seguro que ya no recordas que hace exactamente cada parte de tu codigo. Ni como se maneja, ni que variables de entrada tiene y cuales variables salen de cada subrutina.
Lo peor aun es que noto un error que nombre en unos de mis primeras respuestas, lo cual lo hace aun mas ilogico que todo esto funcione.

De todas formas intente usar tu programa por que asi te entendes vos. Vos veras como mejorarlo en su debido tiempo.

PD: Para las teclas que estan al lado del 0 , directamente le puse que produzcan la misma salida que tenia tu PRIMER programa display. Si deseas cambiarlo, solo cambias los valores de la tabla. PERO NO DEL 8, sino del 10 y 12!!!! ( el 11 corresponde al boton "0" )

« Última modificación: 09 de Marzo de 2015, 04:17:09 por KILLERJC »

Desconectado cdaiag

  • PIC10
  • *
  • Mensajes: 18
Re: Mostrar en cuatro display de 7 segmentos el resultado del conversor A/D
« Respuesta #26 en: 16 de Marzo de 2015, 19:35:29 »
Luego lo veo al codigo, realmente no hacia falta cambiar nada.

Con respecto al foro, por que sino se crean mensajes muy largos:

No cites mis respuestas a no ser que sea algo puntual, ejemplo una frase que quieras responder, abajo tenes el boton de responder y no crae una "cita" o quote.

Para poner el codigo cuando estas escribiendo hay un botoncito con el numeral # si haces click ahi dice algo asi (code)(/code)  pero con corchetes [ y ], pones tu condigo entre medio de esos 2 code.. (code)  Aca tu codigo (/code). Esto para la proxima ves que necesites poner el codigo.

Estoy trabajando para mejorarlo
EDIT ya lo vi:

Bueno parece que no me estas leyendo bien lo que pongo. Te dije que para cambiar lo minimo del programa deberias de agregar 3 lineas y modificar 4 valores en binario, y ya con eso funcionaba. No entiendo por que te complicaste tanto borrando bastante parte del codigo ( A pesar que es super extenso sin sentido alguno como ya dije ). El tener 2 codigos de muestreo hace que uno no llame a la tabla y ahi podia haber estado tu error. Es algo sin sentido repetir 2 veces el mismo codigo.

Código: ASM
  1. ;*****************************************************************************************************************************
  2. ;ESTE PROGRAMA MANEJA UN TECLADO DE 4 FILAS Y TRES COLUMNAS MATRICIAL POR EL CUAL SE INGRESA UN VALOR Y LO MUESTRA EN CUATRO
  3. ;DISPLAYS DE 7 SEGMENTOS, TAMBIÉN MEDIANTE UN PULSADOR GRABA EL VALOR MOSTRADO EN LOS DISPLAY EN MEMORIA EPROM Y CON OTRO
  4. ;PULSADOR RECUPERA DICHO VALOR, LA PARTE DEL CONVERSOR A/D EN ESTE PROGRAMA NO FUNCIONA SOLAMENTE FIGURAN LAS SUBRUTINAS
  5. ;*****************************************************************************************************************************
  6.  
  7.          LIST     P= 16F874A
  8.          INCLUDE "P16F874A.INC"                                                          
  9. ;*****************************************************VARIABLES****************************************************************
  10. REG1   EQU   H'20'                  ;VARIABLE PARA SUBRUTINA DE RETARDO
  11. REG2   EQU   H'21'                  ;VARIABLE PARA SUBRUTINA DE RETARDO
  12. DIGI1   EQU   H'22'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 1
  13. DIGI2   EQU   H'23'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 2
  14. DIGI3   EQU   H'24'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 3  
  15. DIGI4   EQU   H'25'                  ;VARIABLE PARA ALMACENAR EL VALOR DE DIGITO 4
  16. TECPUL   EQU   H'26'                  ;VARIABLE PARA ALMACENAR EL VALOR DE LA TECLA PULSADA
  17. REG3   EQU   H'27'                  ;VARIABLE PARA SUBRUTINA DE RETARDO1
  18. REG4   EQU   H'28'                  ;VARIABLE PARA SUBRUTINA DE RETARDO1
  19. REG5   EQU   H'29'                  ;VARIABLE PARA SUBRUTINA DE RETARDO CONVERSOR A/D  
  20. LSD      EQU   H'2A'                  ;VARIABLE PARA SUBRUTINA BINBCD
  21. MSD      EQU   H'2B'                  ;VARIABLE PARA SUBRUTINA BINBCD  
  22. VSD      EQU   H'2C'                  ;VARIABLE PARA SUBRUTINA BINBCD        
  23. HSD      EQU   H'2D'                  ;VARIABLE PARA SUBRUTINA BINBCD  
  24. ADRESA   EQU   H'2E'                  ;VALOR ALTO DE LA CONVERSION=ADRESH
  25. ADRES   EQU   H'2F'                  ;VALOR BAJO DE LA CONVERSION=ADRESL  
  26.  
  27.    
  28.  
  29. ;*****************************************************CONSTANTES***************************************************************
  30. VALOR1   EQU   .74                     ;VALORES PARA EL RETARDO
  31. VALOR2   EQU   .2                     ;VALORES PARA EL RETARDO
  32. VALOR3   EQU   .150                  ;VALORES PARA EL RETARDO1
  33. VALOR4   EQU   .4                     ;VALORES PARA EL RETARDO1
  34. ;*****************************************************DEFINICIONES*************************************************************
  35.  
  36.          #DEFINE BANCO0      BCF      STATUS,RP0
  37.          #DEFINE BANCO1      BSF      STATUS,RP0  
  38. ;***************************************************OTRAS DEFINICIONES********************************************************
  39.  
  40.          #DEFINE TRD1   PORTD,7      ;DEFINO LA SALIDA DE TRD1
  41.          #DEFINE TRD2   PORTD,6      ;DEFINO LA SALIDA DE TRD2        
  42.          #DEFINE TRD3   PORTD,5      ;DEFINO LA SALIDA DE TRD3      
  43.          #DEFINE TRD4   PORTD,4      ;DEFINO LA SALIDA DE TRD4
  44.  
  45.      
  46.          #DEFINE LED1   PORTB,5      ;DEFINO LED PRUEBA
  47.          #DEFINE GRABO   PORTB,7      ;DEFINO PULSADOR CONVERSOR ANALOGICO DIGITAL
  48.          #DEFINE LED2   PORTB,4      ;DEFINO LED PRUEBA
  49.          #DEFINE RECU   PORTB,6      ;DEFINO PULSADOR GRABAR
  50.          
  51.  
  52.          #DEFINE COL1   PORTE,0      ;DEFINO COLUMNA TECLADO
  53.          #DEFINE COL2   PORTE,1      ;DEFINO COLUMNA TECLADO  
  54.          #DEFINE COL3   PORTE,2      ;DEFINO COLUMNA TECLADO
  55.  
  56.          #DEFINE FIL1   PORTD,0      ;DEFINO TECLADO FILAS
  57.          #DEFINE FIL2   PORTD,1      ;DEFINO TECLADO FILAS
  58.          #DEFINE FIL3   PORTD,2      ;DEFINO TECLADO FILAS
  59.          #DEFINE FIL4   PORTD,3      ;DEFINO TECLADO FILAS
  60.  
  61.          #DEFINE COL1E   BSF   TRISE,0   ;DEFINO COL1 COMO ENTRADA
  62.          #DEFINE COL1S   BCF   TRISE,0   ;DEFINO COL1 COMO SALIDA
  63.  
  64.          
  65.          #DEFINE COL2E   BSF   TRISE,1   ;DEFINO COL2 COMO ENTRADA  
  66.          #DEFINE COL2S   BCF   TRISE,1 ;DEFINO COL2 COMO SALIDA
  67.    
  68.          #DEFINE COL3E   BSF   TRISE,2   ;DEFINO COL3 COMO ENTRADA  
  69.          #DEFINE COL3S   BCF   TRISE,2   ;DEFINO COL3 COMO SALIDA
  70.  
  71.            
  72. ;********************************************************PROGRAMA*************************************************************
  73.  
  74.          ORG      H'0000'  
  75.          GOTO    INICIO               ;IR AL INICIO DEL PROGRAMA
  76.  
  77.          ORG      H'0005'               ;ATENCION A LAS INTERUPCIONES
  78.          RETFIE
  79.  
  80. ;*********************************SUBRUTINA TABLA CONVERSION BCD A 7 SEGMENTOS*************************************************
  81. TABLA  
  82.          ADDWF   PCL,F
  83.                ; GFBADEPC
  84.          RETLW   B'01111101'      ;0  
  85.          RETLW   B'00100001'      ;1  
  86.          RETLW   B'10111100'      ;2  
  87.          RETLW   B'10111001'      ;3  
  88.          RETLW   B'11100001'      ;4  
  89.          RETLW   B'11011001'      ;5  
  90.          RETLW   B'11011101'      ;6  
  91.          RETLW   B'00110001'      ;7  
  92.          RETLW   B'11111101'      ;8  
  93.          RETLW   B'11110001'      ;9
  94.          ;Lo del teclado
  95.          RETLW   B'11110100'      ;10 Caso que entre a LEE9  (Aca tenes que modificar los valores de binario segun corresponda )
  96.          RETLW   B'01111101'      ;11  Caso que entre a LEE10  
  97.          RETLW   B'11100101'      ;12  Caso que entre a LEE11
  98.  
  99. ;************************************************INICIALIZACION****************************************************************
  100.  
  101.  
  102. INIPIC      BANCO1
  103.  
  104.          MOVLW  B'10110100'    
  105.          MOVWF  ADCON1            ;CONFIGURO A0, A1 Y A3 COMO ENTRADAS ANALOGICAS
  106.          MOVLW  B'001011'    
  107.          MOVWF  TRISA            ;CONFIGURO EL PUERTO A
  108.  
  109.          MOVLW  B'11000000'
  110.          MOVWF  TRISB            ;CONFIGURO EL PUERTO B COMO SALIDA (B7 Y B6 ENTRADAS)
  111.  
  112.          MOVLW  B'00000000'
  113.          MOVWF  TRISC            ;CONFIGURO EL PUERTO C COMO SALIDA
  114.  
  115.          MOVLW  B'00000000'
  116.          MOVWF  TRISD            ;CONFIGURO EL PUERTO D COMO SALIDA
  117.  
  118.          MOVLW  B'000'
  119.          MOVWF  TRISE            ;CONFIGURO EL PUERTO E COMO SALIDA
  120.  
  121.      
  122.          MOVLW  B'00000000'
  123.          MOVWF  INTCON            ;DESHABILITO LAS INTERRUPCIONES
  124.  
  125.    
  126.  
  127.          BANCO0
  128.  
  129.          CLRF   PORTA
  130.          CLRF   PORTB
  131.          CLRF    PORTC
  132.          CLRF   PORTD
  133.          CLRF   PORTE
  134.          RETURN
  135.  
  136. ;**************************************************PROGRAMA PRINCIPAL**********************************************************
  137.  
  138. INICIO      CALL   INIPIC            ;LLAMO A LA RUTINA DE INICIALIZACION
  139.  
  140.          CALL   DISPLAY1         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY1
  141.          CALL   DISPLAY2         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY2
  142.          CALL   DISPLAY3         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY3  
  143.          CALL   DISPLAY4         ;LLAMO A LA SUBRUTINA DE LECTURA DE DISPLAY4
  144. HHH         CALL   MUESTRO
  145.          GOTO   HHH
  146.                        
  147. ;*********************************************SUBRUTINA DE RETARDO*************************************************************
  148. RETARDO      MOVLW   VALOR1
  149.          MOVWF   REG1
  150.          MOVLW   VALOR2  
  151.          MOVWF   REG2
  152. LOOP      DECFSZ   REG1,F
  153.          GOTO   LOOP
  154.          DECFSZ   REG2,F
  155.          GOTO   LOOP
  156.          RETURN  
  157.  
  158. ;*********************************************SUBRUTINA DE RETARDO1*************************************************************
  159. RETARDO1   MOVLW   VALOR3
  160.          MOVWF   REG3
  161.          MOVLW   VALOR4  
  162.          MOVWF   REG4
  163. LOOP1      DECFSZ   REG1,F
  164.          GOTO   LOOP1
  165.          DECFSZ   REG2,F
  166.          GOTO   LOOP
  167.          RETURN  
  168. ;***********************************************SUBRUTINA DE MUESTREO*********************************************************
  169. MUESTRO      
  170. H         MOVF   DIGI1,W            ;MUEVO EL VALOR DE DIGI1 A W
  171.          CALL   TABLA
  172.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  173.          BSF      TRD1  
  174.          BCF      TRD2
  175.          BCF      TRD3
  176.          BCF      TRD4
  177.          CALL   RETARDO
  178.      
  179.  
  180.          MOVF   DIGI2,W            ;MUEVO EL VALOR DE DIGI2 A W
  181.          CALL   TABLA
  182.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  183.          BCF      TRD1  
  184.          BSF      TRD2
  185.          BCF      TRD3
  186.          BCF      TRD4
  187.          CALL   RETARDO
  188.  
  189.          MOVF   DIGI3,W            ;MUEVO EL VALOR DE DIGI3 A W
  190.          CALL   TABLA
  191.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  192.          BCF      TRD1  
  193.          BCF      TRD2
  194.          BSF      TRD3
  195.          BCF      TRD4
  196.          CALL   RETARDO
  197.          
  198.  
  199.          MOVF   DIGI4,W            ;MUEVO EL VALOR DE DIGI4 A W
  200.          CALL   TABLA
  201.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  202.          BCF      TRD1  
  203.          BCF      TRD2
  204.          BCF      TRD3
  205.          BSF      TRD4
  206.          CALL   RETARDO
  207.          BTFSC   GRABO
  208.          GOTO   AAA
  209.          CALL   GD1
  210.          BSF      LED1
  211. AAA         BTFSC   RECU
  212.          GOTO   H
  213.          GOTO   RECUPE
  214.          RETURN
  215. ;*********************************************RECUPERACION DE VALORES***********************************************************
  216.  
  217. RECUPE  
  218.      
  219.          CLRF   DIGI1
  220.          CLRF   DIGI2
  221.          CLRF   DIGI3
  222.          CLRF   DIGI4
  223.          CALL   RECUP1
  224.          CALL   RECUP2
  225.          CALL   RECUP3
  226.          CALL   RECUP4
  227.          CALL   MUESTRO1
  228.  
  229. ;***********************************************SUBRUTINA DE MUESTREO VALOR RECUPERADO*********************************************
  230. MUESTRO1  
  231. X2      
  232.          MOVF   DIGI1,W            ;MUEVO EL VALOR DE DIGI1 A W
  233.          CALL   TABLA
  234.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  235.          BSF      TRD1  
  236.          BCF      TRD2
  237.          BCF      TRD3
  238.          BCF      TRD4
  239.          CALL   RETARDO
  240.      
  241.  
  242.          MOVF   DIGI2,W            ;MUEVO EL VALOR DE DIGI2 A W
  243.          CALL   TABLA
  244.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  245.          BCF      TRD1  
  246.          BSF      TRD2
  247.          BCF      TRD3
  248.          BCF      TRD4
  249.          CALL   RETARDO
  250.  
  251.          MOVF   DIGI3,W            ;MUEVO EL VALOR DE DIGI3 A W
  252.          CALL   TABLA
  253.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  254.          BCF      TRD1  
  255.          BCF      TRD2
  256.          BSF      TRD3
  257.          BCF      TRD4
  258.          CALL   RETARDO
  259.          
  260.  
  261.          MOVF   DIGI4,W            ;MUEVO EL VALOR DE DIGI4 A W
  262.          CALL   TABLA
  263.          MOVWF   PORTC            ;MUEVO W AL PORT D PARA VISUALIZARLO
  264.          BCF      TRD1  
  265.          BCF      TRD2
  266.          BCF      TRD3
  267.          BSF      TRD4
  268.          CALL   RETARDO
  269.          GOTO   X2
  270.          RETURN
  271. ;******************************************SUBRUTINA DE LECTURA DE TECLADO *****************************************************
  272. LEETEC            BANCO1            ;PASO AL BANCO CERO PARA CONFIGURAR
  273.                COL1E            ;CONFIGURO COL1 COMO ENTRADA
  274.                COL2E            ;CONFIGURO COL2 COMO ENTRADA
  275.                COL3E            ;CONFIGURO COL3 COMO ENTRADA
  276.                  
  277.                BANCO0            ;PASAO AL BANCO CERO
  278.          CLRF   TECPUL            ;LIMPIO LA VARIABLE TECPUL
  279.          BSF      FIL1            ;PONGO A 1 FIL1
  280.          BCF      FIL2            ;PONGO A 0 FIL2
  281.          BCF      FIL3            ;PONGO A 0 FIL3  
  282.          BCF     FIL4            ;PONGO A 0 FIL4
  283.          CALL    RETARDO
  284.          CALL    RETARDO
  285.          CALL   RETARDO
  286.          CALL    RETARDO
  287.          CALL   RETARDO
  288.          CALL   RETARDO  
  289.          CALL   RETARDO
  290.          CALL   RETARDO
  291.          CALL   RETARDO
  292.          CALL   RETARDO
  293.          BTFSC   COL1            ;COL1=0?
  294.          GOTO   LEE1            ;NO ES 0 VOY A LEE1
  295.          MOVLW   B'0001'            ;Nº 1 A W FILA 1 COLUMNA1
  296.          MOVWF   TECPUL            ;MUEVO Nº1 A TECPUL
  297.  
  298. LEE1      CALL    RETARDO
  299.          CALL    RETARDO
  300.          CALL   RETARDO
  301.          CALL    RETARDO
  302.          CALL   RETARDO  
  303.          CALL   RETARDO
  304.          CALL   RETARDO
  305.          CALL   RETARDO
  306.          CALL   RETARDO
  307.          CALL   RETARDO  
  308.          BTFSC   COL2            ;COL2=0?
  309.          GOTO    LEE2            ;NO ES 0 VOY A LEE2
  310.          MOVLW   B'0010'            ;Nº 2 A W FILA1 COLUMNA2
  311.          MOVWF   TECPUL            ;MUEVO Nº2 A TECPUL
  312.  
  313. LEE2      CALL    RETARDO
  314.          CALL    RETARDO
  315.          CALL   RETARDO
  316.          CALL    RETARDO
  317.          CALL   RETARDO  
  318.          CALL   RETARDO
  319.          CALL   RETARDO
  320.          CALL   RETARDO
  321.          CALL   RETARDO
  322.          CALL   RETARDO
  323.          BTFSC   COL3            ;COL3=0?
  324.          GOTO   LEE3            ;NO ES CERO VOY A LEE3
  325.          MOVLW   B'0011'            ;Nº 3 A W FILA1 COLUMNA 3
  326.          MOVWF   TECPUL            ;MUEVO Nº 3 A TECPUL      
  327.  
  328. LEE3      BCF      FIL1
  329.          BSF      FIL2
  330.          CALL    RETARDO
  331.          CALL    RETARDO
  332.          CALL   RETARDO
  333.          CALL    RETARDO
  334.          CALL   RETARDO  
  335.          CALL   RETARDO  
  336.          CALL   RETARDO
  337.          CALL   RETARDO
  338.          CALL   RETARDO
  339.          CALL   RETARDO
  340.          BTFSC   COL1            ;COL1=0?
  341.          GOTO   LEE4            ;NO ES 0 VOY A LEE4
  342.          MOVLW   B'0100'            ;Nº 4 A W FILA2 COLUMNA1
  343.          MOVWF   TECPUL            ;MUEVO Nº 4 A TECPUL
  344.  
  345. LEE4      CALL    RETARDO
  346.          CALL    RETARDO
  347.          CALL   RETARDO
  348.          CALL    RETARDO
  349.          CALL   RETARDO  
  350.          CALL   RETARDO
  351.          CALL   RETARDO
  352.          CALL   RETARDO  
  353.          CALL   RETARDO
  354.          CALL   RETARDO
  355.          BTFSC   COL2            ;COL2=0?
  356.          GOTO   LEE5            ;NO ES 0 VOY A LEE5
  357.          MOVLW   B'0101'            ;Nº 5 A W FILA2 COLUMNA2
  358.          MOVWF   TECPUL            ;MUEVO Nº 5 A TECPUL
  359.  
  360. LEE5      CALL    RETARDO
  361.          CALL    RETARDO
  362.          CALL   RETARDO
  363.          CALL    RETARDO
  364.          CALL   RETARDO  
  365.          CALL   RETARDO  
  366.          CALL   RETARDO  
  367.          CALL   RETARDO
  368.          CALL   RETARDO
  369.          CALL   RETARDO
  370.          BTFSC   COL3            ;COL3=0?
  371.          GOTO   LEE6            ;NO ES 0 VOY A LEE6
  372.          MOVLW   B'0110'            ;Nº 6 A W FILA2 COLUMNA3
  373.          MOVWF   TECPUL            ;MUEVO Nº 6 A TECPUL
  374.  
  375.  
  376. LEE6      BCF      FIL2  
  377.          BSF      FIL3
  378.          CALL    RETARDO
  379.          CALL    RETARDO
  380.          CALL   RETARDO
  381.          CALL    RETARDO
  382.          CALL   RETARDO  
  383.          CALL   RETARDO  
  384.          CALL   RETARDO  
  385.          CALL   RETARDO
  386.          CALL   RETARDO
  387.          CALL   RETARDO
  388.          BTFSC   COL1            ;COL1=0?
  389.          GOTO   LEE7            ;NO ES 0 VOY A LEE7
  390.          MOVLW   B'0111'            ;Nº 7 A W FILA3 COLUMNA1
  391.          MOVWF   TECPUL            ;MUEVO Nº 7 A TECPUL      
  392.  
  393. LEE7      CALL    RETARDO
  394.          CALL    RETARDO
  395.          CALL   RETARDO
  396.          CALL    RETARDO
  397.          CALL   RETARDO  
  398.          CALL   RETARDO  
  399.          CALL   RETARDO  
  400.          CALL   RETARDO
  401.          CALL   RETARDO
  402.          CALL   RETARDO
  403.          BTFSC   COL2            ;COL2=0?
  404.          GOTO   LEE8            ;NO ES 0 VOY A LEE8
  405.          MOVLW   B'1000'            ;Nº 8 A W FILA3 COLUMNA2
  406.          MOVWF   TECPUL            ;MUEVO Nº 8 A TECPUL
  407.  
  408. LEE8      CALL    RETARDO
  409.          CALL    RETARDO
  410.          CALL   RETARDO
  411.          CALL    RETARDO
  412.          CALL   RETARDO  
  413.          CALL   RETARDO  
  414.          CALL   RETARDO  
  415.          CALL   RETARDO
  416.          CALL   RETARDO
  417.          CALL   RETARDO  
  418.          BTFSC   COL3            ;COL3=0?
  419.          GOTO   LEE9            ;NO ES 0 VOY A LEE9
  420.          MOVLW   B'1001'            ;Nº 9 A W FILA3 COLUMNA3
  421.          MOVWF   TECPUL            ;MUEVO Nº 9 A TECPUL
  422.  
  423.  
  424. LEE9      BCF      FIL3
  425.          BSF      FIL4
  426.          CALL    RETARDO
  427.          CALL    RETARDO
  428.          CALL   RETARDO
  429.          CALL    RETARDO
  430.          CALL   RETARDO  
  431.          CALL   RETARDO  
  432.          CALL   RETARDO  
  433.          CALL   RETARDO  
  434.          CALL   RETARDO
  435.          CALL   RETARDO  
  436.          BTFSC   COL1            ;COL2=0?
  437.          GOTO   LEE10            ;NO ES 0 VOY A LEE10
  438.          MOVLW   B'1010'            ;LETRA P A W FILA4 COLUMNA1
  439.          MOVWF   TECPUL            ;MUEVO P A TECPUL
  440.  
  441. LEE10      CALL    RETARDO
  442.          CALL    RETARDO
  443.          CALL   RETARDO
  444.          CALL    RETARDO
  445.          CALL   RETARDO  
  446.          CALL   RETARDO  
  447.          CALL   RETARDO  
  448.          CALL   RETARDO
  449.          CALL   RETARDO
  450.          CALL   RETARDO  
  451.          BTFSC   COL2            ;COL2=0?
  452.          GOTO   LEE11            ;NO ES 0 VOY A LEE11
  453.          MOVLW   B'1011'               ;Nº 0 A W FILA4 COLUMNA2
  454.          MOVWF   TECPUL            ;Nº 0 A TECPUL
  455.  
  456. LEE11      CALL    RETARDO
  457.          CALL    RETARDO
  458.          CALL   RETARDO
  459.          CALL    RETARDO
  460.          CALL   RETARDO  
  461.          CALL   RETARDO  
  462.          CALL   RETARDO  
  463.          CALL   RETARDO
  464.          CALL   RETARDO
  465.          CALL   RETARDO  
  466.          BTFSC   COL3            ;COL3=0?
  467.          GOTO   LEE12            ;NO ES 0 VOY A LEE12
  468.          MOVLW   B'1100'            ;LETRA H A W FILA4 COLUMNA3
  469.          MOVWF   TECPUL            ;LETRA H A TECPUL
  470.  
  471.  
  472. LEE12      BCF    FIL4
  473.          BANCO1
  474.          COL1S
  475.          COL2S
  476.          COL3S
  477.          BANCO0
  478.          RETURN
  479.          
  480.      
  481. ;*********************************************SUBRUTINA PARA DISPLAY 1*********************************************************
  482. DISPLAY1   CALL   RETARDO1
  483.                
  484.      
  485.          CLRF   TECPUL            ;BORRO TECPUL
  486.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  487.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  488.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  489.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  490.          GOTO   DISPLAY1         ;SI NO ES CERO VUELVO A DISPLAY1
  491.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  492.          MOVWF   DIGI1            ;PASO W A DIGI1
  493.          RETURN
  494.  
  495. ;*********************************************SUBRUTINA PARA DISPLAY 2*********************************************************
  496. DISPLAY2   CALL   RETARDO1
  497.      
  498.  
  499.  
  500.          CLRF   TECPUL            ;BORRO TECPUL
  501.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  502.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  503.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  504.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  505.          GOTO   DISPLAY2         ;SI NO ES CERO VUELVO A DISPLAY1
  506.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  507.          MOVWF   DIGI2            ;PASO W A DIGI2
  508.          RETURN
  509. ;*********************************************SUBRUTINA PARA DISPLAY 3*********************************************************
  510.  
  511. DISPLAY3   CALL   RETARDO1
  512.      
  513.  
  514.          CLRF   TECPUL            ;BORRO TECPUL
  515.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  516.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  517.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  518.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  519.          GOTO   DISPLAY3         ;SI NO ES CERO VUELVO A DISPLAY1
  520.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  521.          MOVWF   DIGI3            ;PASO W A DIGI3
  522.          RETURN
  523.  
  524. ;*********************************************SUBRUTINA PARA DISPLAY 4*********************************************************
  525.  
  526. DISPLAY4   CALL   RETARDO1
  527.          
  528.  
  529.  
  530.          CLRF   TECPUL            ;BORRO TECPUL
  531.          CALL   LEETEC            ;LLAMO A LA SUBRUTINA DE LECTURA DE TECLADO
  532.          MOVF   TECPUL,W         ;MUEVO EL VALOR DE TECPUL A W
  533.          XORLW   .0               ;VERIFICO SI TECPUL ES CERO  
  534.          BTFSC   STATUS,Z         ;VERIFICO SI Z=0
  535.          GOTO   DISPLAY4         ;SI NO ES CERO VUELVO A DISPLAY1
  536.          MOVF   TECPUL,W         ;PASO EL VALOR DE TECPUL A W
  537.          MOVWF   DIGI4            ;PASO W A DIGI4
  538.          RETURN
  539.  
  540. ;*********************************************SUBRUTINA GRABACION DIGITO 1 (GD1)***********************************************
  541.  
  542. GD1         BSF      STATUS,RP1
  543.          BCF      STATUS,RP0         ;BANCO2
  544.          MOVLW   0X00            ;MUEVO A W LA DIRECCION DE MEMORI A GRABAR
  545.          MOVWF   EEADR            ;MUEVO LA DIRECION 0X01 A EEADR
  546.          MOVF   DIGI1,W            ;MUEVO DIGI1 A W
  547.          MOVWF   EEDATA            ;DIGI1 A EEDATA
  548.          BSF      STATUS,RP0         ;BANCO3
  549.          BCF      EECON1,EEPGD      
  550.          BSF      EECON1,WREN         ;HABILITO ESCRITURA
  551.          BCF      INTCON,GIE         ;DESHABILITO TODAS LAS INTERUPCIONES
  552.          MOVLW   H'55'            ;REQUERIDO
  553.          MOVWF   EECON2            ;REQUERIDO
  554.          MOVLW   H'AA'            ;REQUERIDO
  555.          MOVWF   EECON2            ;REQUERIDO
  556.          BSF      EECON1,WR         ;DESHABILITO ESCRITURA
  557. VERIF1      BTFSC   EECON1,WR
  558.          GOTO   VERIF1
  559.          BCF      EECON1,WREN
  560.          BCF      STATUS,RP1
  561.          BCF      STATUS,RP0  
  562.    
  563.  
  564. ;*********************************************SUBRUTINA GRABACION DIGITO 2 (GD2)***********************************************
  565.  
  566.          BSF      STATUS,RP1
  567.          BCF      STATUS,RP0
  568.          MOVLW   0X01
  569.          MOVWF   EEADR
  570.          MOVF   DIGI2,W
  571.          MOVWF   EEDATA
  572.          BSF      STATUS,RP0
  573.          BCF      EECON1,EEPGD
  574.          BSF      EECON1,WREN
  575.          BCF      INTCON,GIE
  576.          MOVLW   H'55'
  577.          MOVWF   EECON2
  578.          MOVLW   H'AA'
  579.          MOVWF   EECON2
  580.          BSF      EECON1,WR
  581. VERIF2      BTFSC   EECON1,WR
  582.          GOTO   VERIF2
  583.          BCF      EECON1,WREN
  584.          BCF      STATUS,RP1
  585.          BCF      STATUS,RP0  
  586.      
  587.  
  588. ;*********************************************SUBRUTINA GRABACION DIGITO 3 (GD3)***********************************************
  589.  
  590.          BSF      STATUS,RP1
  591.          BCF      STATUS,RP0
  592.          MOVLW   0X02
  593.          MOVWF   EEADR
  594.          MOVF   DIGI3,W
  595.          MOVWF   EEDATA
  596.          BSF      STATUS,RP0
  597.          BCF      EECON1,EEPGD
  598.          BSF      EECON1,WREN
  599.          BCF      INTCON,GIE
  600.          MOVLW   H'55'
  601.          MOVWF   EECON2
  602.          MOVLW   H'AA'
  603.          MOVWF   EECON2
  604.          BSF      EECON1,WR
  605. VERIF3      BTFSC   EECON1,WR
  606.          GOTO   VERIF3
  607.          BCF      EECON1,WREN
  608.          BCF      STATUS,RP1
  609.          BCF      STATUS,RP0  
  610.          
  611.  
  612. ;*********************************************SUBRUTINA GRABACION DIGITO 4 (GD4)***********************************************
  613.  
  614.          BSF      STATUS,RP1
  615.          BCF      STATUS,RP0
  616.          MOVLW   0X03
  617.          MOVWF   EEADR
  618.          MOVF   DIGI4,W
  619.          MOVWF   EEDATA
  620.          BSF      STATUS,RP0
  621.          BCF      EECON1,EEPGD
  622.          BSF      EECON1,WREN
  623.          BCF      INTCON,GIE
  624.          MOVLW   H'55'
  625.          MOVWF   EECON2
  626.          MOVLW   H'AA'
  627.          MOVWF   EECON2
  628.          BSF      EECON1,WR
  629. VERIF4      BTFSC   EECON1,WR
  630.          GOTO   VERIF4
  631.          BCF      EECON1,WREN
  632.          BCF      STATUS,RP1
  633.          BCF      STATUS,RP0
  634.          RETURN
  635.  
  636. ;*********************************************SUBRUTINA RECUPERACION DIGITO1 (RECUP1)******************************************
  637.  
  638. RECUP1      BSF      STATUS,RP1
  639.          BCF      STATUS,RP0
  640.          MOVLW   0X00
  641.          MOVWF   EEADR
  642.          BSF      STATUS,RP0
  643.          BCF      EECON1,EEPGD
  644.          BSF      EECON1,RD
  645.          BCF      STATUS,RP0
  646.          MOVF   EEDATA,W
  647.          BCF      STATUS,RP1
  648.          BCF      STATUS,RP0
  649.          MOVWF   DIGI1
  650.          RETURN  
  651.  
  652. ;*********************************************SUBRUTINA RECUPERACION DIGITO2 (RECUP2)******************************************
  653.  
  654. RECUP2      BSF      STATUS,RP1
  655.          BCF      STATUS,RP0
  656.          MOVLW   0X01
  657.          MOVWF   EEADR
  658.          BSF      STATUS,RP0
  659.          BCF      EECON1,EEPGD
  660.          BSF      EECON1,RD
  661.          BCF      STATUS,RP0
  662.          MOVF   EEDATA,W
  663.          BCF      STATUS,RP1
  664.          BCF      STATUS,RP0
  665.          MOVWF   DIGI2
  666.          RETURN  
  667.  
  668. ;*********************************************SUBRUTINA RECUPERACION DIGITO3 (RECUP3)******************************************
  669.  
  670. RECUP3      BSF      STATUS,RP1
  671.          BCF      STATUS,RP0
  672.          MOVLW   0X02
  673.          MOVWF   EEADR
  674.          BSF      STATUS,RP0
  675.          BCF      EECON1,EEPGD
  676.          BSF      EECON1,RD
  677.          BCF      STATUS,RP0
  678.          MOVF   EEDATA,W
  679.          BCF      STATUS,RP1
  680.          BCF      STATUS,RP0
  681.          MOVWF   DIGI3
  682.          RETURN  
  683.  
  684. ;*********************************************SUBRUTINA RECUPERACION DIGITO4 (RECUP4)******************************************
  685.  
  686. RECUP4      BSF      STATUS,RP1
  687.          BCF      STATUS,RP0
  688.          MOVLW   0X03
  689.          MOVWF   EEADR
  690.          BSF      STATUS,RP0
  691.          BCF      EECON1,EEPGD
  692.          BSF      EECON1,RD
  693.          BCF      STATUS,RP0
  694.          MOVF   EEDATA,W
  695.          BCF      STATUS,RP1
  696.          BCF      STATUS,RP0
  697.          MOVWF   DIGI4
  698.          RETURN
  699.  
  700. ;*****************************************SUBRUTINA BIN A BCD 10 BIT***********************************************************
  701.  
  702. STAR      CLRF   HSD
  703.          CLRF   VSD
  704.          CALL   BINBCD
  705. OUT         BTFSC   ADRESA,0
  706.          CALL   PRIM
  707.          BTFSC   ADRESA,1
  708.          CALL   SEGU
  709.          RETURN
  710.  
  711. BINBCD      MOVF   ADRES,W
  712.          CLRF   MSD
  713.          MOVWF   LSD
  714. GTENTH      MOVLW   0X0A
  715.          SUBWF   LSD,W
  716.          BTFSS   STATUS,C
  717.          GOTO   OVER
  718.          MOVWF   LSD
  719.          INCF   MSD,F
  720.          GOTO   GTENTH
  721. OVER
  722. TENTH      MOVLW   0X0A
  723.          SUBWF   MSD,W
  724.          BTFSS   STATUS,C
  725.          RETLW   0
  726.          MOVWF   MSD
  727.          INCF   VSD,F
  728.          GOTO   TENTH
  729. PRIM      MOVF   LSD,W
  730.          ADDLW   0X06
  731.          MOVWF   LSD
  732.          CALL   ADJDEC
  733.          MOVF   MSD,W
  734.          ADDLW   0X05
  735.          MOVWF   MSD
  736.          CALL   ADJDEC
  737.          MOVF   VSD,W
  738.          ADDLW   0X02
  739.          MOVWF   VSD
  740.          RETURN
  741.  
  742. SEGU      MOVF   LSD,W
  743.          ADDLW   0X02
  744.          MOVWF   LSD
  745.          CALL   ADJDEC
  746.          MOVF   MSD,W
  747.          ADDLW   0X01
  748.          MOVWF   MSD
  749.          CALL   ADJDEC
  750.          MOVF   VSD,W
  751.          ADDLW   0X05
  752.          MOVWF   VSD
  753.          CALL   ADJDEC
  754.          RETURN
  755.  
  756. ADJDEC      MOVLW   0X0A
  757.          SUBWF   LSD,0
  758.          BTFSS   STATUS,C
  759.          GOTO   DEC
  760.          MOVLW   0X06
  761.          ADDWF   LSD,1
  762.          MOVLW   0X0F
  763.          ANDWF   LSD,1
  764.          INCF   MSD,1
  765.  
  766. DEC         MOVLW   0X0A
  767.          SUBWF   MSD,0
  768.          BTFSS   STATUS,C
  769.          GOTO   CEN
  770.          MOVLW   0X06
  771.          ADDWF   MSD,1
  772.          MOVLW   0X0F
  773.          ANDWF   MSD,1
  774.          INCF   VSD,1
  775.  
  776. CEN         MOVLW   0X0A
  777.          SUBWF   VSD,0
  778.          BTFSS   STATUS,C
  779.          GOTO   MIL
  780.          MOVLW   0X06
  781.          ADDWF   VSD,1
  782.          MOVLW   0X0F
  783.          ANDWF   VSD,1
  784.          INCF   HSD,1
  785.  
  786. MIL         RETURN
  787.  
  788.  
  789.    
  790. ;*************************************SUBRUTINA LECTURA ENTRADA ANALOGICA A0***************************************************
  791.  
  792. MEDIR      MOVLW   B'10000001'
  793.          MOVWF   ADCON0            ;SELECCIONO RA0
  794.          MOVLW   .75               ;RETARDO NECESARIO ANTES DE LA CONVERSION
  795.          MOVWF   REG5
  796. MEDIR1      NOP
  797.          DECFSZ   REG5,F
  798.          GOTO   MEDIR1
  799.          BSF      ADCON0,GO         ;COMIENZA LA CONVERSION
  800.          NOP
  801. MEDIR2      BTFSC   ADCON0,GO         ;¿ES EL FIN DE LA CONVERSION?
  802.          GOTO   MEDIR2
  803.          MOVF   ADRESH,W
  804.          MOVWF   ADRESA
  805.          
  806.          BANCO1
  807.          MOVF   ADRESL,W
  808.          BANCO0
  809.          MOVWF   ADRES
  810.          RETURN        
  811.  
  812.  
  813.          END

Con respecto al programa te vuelvo a repetir estas haciendo algo de 5000 lineas cuando con 500 lo haces. Se vuelve mas legible y simple.
Actualmente creo que estoy mas que seguro que ya no recordas que hace exactamente cada parte de tu codigo. Ni como se maneja, ni que variables de entrada tiene y cuales variables salen de cada subrutina.
Lo peor aun es que noto un error que nombre en unos de mis primeras respuestas, lo cual lo hace aun mas ilogico que todo esto funcione.

De todas formas intente usar tu programa por que asi te entendes vos. Vos veras como mejorarlo en su debido tiempo.

PD: Para las teclas que estan al lado del 0 , directamente le puse que produzcan la misma salida que tenia tu PRIMER programa display. Si deseas cambiarlo, solo cambias los valores de la tabla. PERO NO DEL 8, sino del 10 y 12!!!! ( el 11 corresponde al boton "0" )