Problema con programa teclado matricial pic16f886

Hola chicos estoy haciendo una practica y pues verán intento hace que un teclado matricial con pushbottom me genere números del 1 al 16 en en display pero solo eh logrado hasta el nueve tengo duda pues intente una subrutina time 3 para que se pase al otro display uso el compilador mplab pic 16f886 no se exactamente en que estoy mal les dejo el programa para que checen y si encuentran el error díganme por favor gracias por cierto les dejo el diagrama en isis para que sepan que hice es un pequeño detalle no se por que me marca errores den la parte de
DIEZ (por ejemplo)
MOVLW D'5'
Aquí me marca en error en todas del 10 al 15 MOVWF OX23

También les dejo el archivo en MPLAB

.........................
Código:
list        p=16f886    ; list directive to define processor
    #include    <p16f886.inc>   ; processor specific variable definitions

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

    __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
    __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V


RESET_VECTOR    CODE    0x0000 ; processor reset vector
    nop
    goto    start              ; go to beginning of program

INT_VECTOR      CODE    0x0004 ; interrupt vector location


start

    MOVLW 0X20
    MOVWF STATUS
    CLRF TRISA
    MOVLW B'11110000'
    MOVWF TRISB
    CLRF TRISC
    MOVLW 0X60
    MOVWF STATUS
    CLRF ANSEL
    CLRF ANSELH
    CLRF STATUS

    PROG
    
    MOVLW B'11111110'
    MOVWF PORTB
    CALL PREG
    MOVLW B'11111101'
    MOVWF PORTB
    CALL PREG1
    MOVLW B'11111011'
    MOVWF PORTB
    CALL PREG2    
    MOVLW B'11110111'
    CALL PREG3    
    MOVLW B'11101111'
    CALL PREG4
    MOVLW B'11101111'


    GOTO PROG
    

MAIN_PROG      
    TIME
    MOVLW D'2'
    MOVWF 0X21
    TIME1
    MOVLW D'100'
    MOVWF 0X22
    TIME2 NOP
    NOP
    NOP
    DECFSZ 0X22
    GOTO TIME2
    DECFSZ 0X21
    GOTO TIME1
    RETURN

    TIME3
    MOVLW D'100'
    MOVWF 0X25
    TIME4 NOP
    NOP
    NOP
    DECFSZ 0X25
    GOTO TIME4
    RETURN
    
    PREG
    BTFSS PORTB,4
    CALL TRES
    BTFSS PORTB,5
    CALL DOS
    BTFSS PORTB,6
    CALL UNO
    BTFSS PORTB,7
    CALL CERO
    RETURN 

    
    PREG1
    BTFSS PORTB,4
    CALL SIETE
    BTFSS PORTB,5
    CALL SEIS    
    BTFSS PORTB,6
    CALL CINCO
    BTFSS PORTB,7
    CALL CUATRO
    RETURN

    PREG2
    BTFSS PORTB,4
    CALL ONCE
    BTFSS PORTB,5
    CALL DIEZ
    BTFSS PORTB,6
    CALL NUEVE
    BTFSS PORTB,7
    CALL OCHO
    RETURN
    
    PREG3
    BTFSS PORTB,4
    CALL TRECE
    BTFSS PORTB,5
    CALL DOCE
    BTFSS PORTB,6
    CALL ONCE
    BTFSS PORTB,7
    CALL DIEZ
    RETURN

    
    PREG4
    BTFSS PORTB,4
    CALL QUINCE
    BTFSS PORTB,5
    CALL CATORCE
    RETURN

    CERO
    MOVLW B'00111111'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN

        UNO
    MOVLW B'00000110'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN
    
        DOS
    MOVLW B'01011011'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN
    
    TRES    
    MOVLW B'01001111'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN
    
    CUATRO
    MOVLW B'01100110'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN

    CINCO
    MOVLW B'01101101'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN

    SEIS
    MOVLW B'01111101'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN

    SIETE
    MOVLW B'00000111'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN

    OCHO
    MOVLW B'01111111'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN

    NUEVE
    MOVLW B'01101111'
    MOVWF PORTA
    MOVLW B'00000010'
    MOVWF PORTC
    CALL TIME
    RETURN
    
    DIEZ
    MOVLW D'5'
    MOVWF OX23    
    DIEZ1
    MOVLW B'00100000'
    MOVWF PORTA
    MOVLW B'11000000'
    MOVWF PORTC
    CALL TIME3
    MOVLW B'0001000'
    MOVWF PORTA
    MOVLW B'11111100'
    MOVWF PORTC
    CALL TIME3
    DECFSZ 0X23
    GOTO DIEZ1    
    RETURN

    ONCE
    MOVLW D'5'
    MOVWF OX22
    ONCE1
    MOVLW B'00100000'
    MOVWF PORTA
    MOVLW B'11000000'
    MOVWF PORTC
    CALL TIME3
    MOVLW B'0001000'
    MOVWF PORTA
    MOVLW B'11000000'
    MOVWF PORTC
    CALL TIME3
    DECFSZ 0X23
    GOTO ONCE1    
    RETURN
    

    DOCE
    MOVLW D'5'
    MOVWF OX22
    DOCE1
    MOVLW B'00100000'
    MOVWF PORTA
    MOVLW B'11000000'
    MOVWF PORTC
    CALL TIME3
    MOVLW B'0001000'
    MOVWF PORTA
    MOVLW B'10110110'
    MOVWF PORTC
    CALL TIME3
    DECFSZ 0X23
    GOTO DOCE1    
    RETURN
    
    TRECE
    MOVLW D'5'
    MOVWF OX22    
    TRECE1
    MOVLW B'00100000'
    MOVWF PORTA
    MOVLW B'11000000'
    MOVWF PORTC
    CALL TIME3
    MOVLW B'0001000'
    MOVWF PORTA
    MOVLW B'11100110'
    MOVWF PORTC
    CALL TIME3
    DECFSZ 0X23
    GOTO TRECE1    
    RETURN
    

    CATORCE
    MOVLW D'5'
    MOVWF OX22    
    CATORCE1
    MOVLW B'00100000'
    MOVWF PORTA
    MOVLW B'11000000'
    MOVWF PORTC
    CALL TIME3
    MOVLW B'0001000'
    MOVWF PORTA
    MOVLW B'01101110'
    MOVWF PORTC
    CALL TIME3
    DECFSZ 0X23
    GOTO CATORCE1    
    RETURN

    QUINCE
    MOVLW D'5'
    MOVWF OX22
    QUINCE1
    MOVLW B'00100000'
    MOVWF PORTA
    MOVLW B'11000000'
    MOVWF PORTC
    CALL TIME3
    MOVLW B'0001000'
    MOVWF PORTA
    MOVLW B'01101110'
    MOVWF PORTC
    CALL TIME3
    DECFSZ 0X23
    GOTO QUINCE1    
    RETURN


    END
 

Adjuntos

  • teclado matricial.jpg
    teclado matricial.jpg
    124.6 KB · Visitas: 15
  • tecladomatricial4x4.rar
    14.7 KB · Visitas: 10
  • tecladomatrical4x4MPLAB.rar
    16.6 KB · Visitas: 8
Última edición:
Hola trokbknm, te comento que la fuente del error en MOVWF OX23 es porque O != 0 ---> MOVWF 0X23.
Si te interesa adjunto una sugerencia al programa que tienes.
 

Adjuntos

  • teclado4x4.rar
    67.1 KB · Visitas: 8
Atrás
Arriba