no se porq no ve sle codigo bueno aqui te le pongo
LIST P=16F84
RADIX HEX
INCLUDE <P16F84A.INC>
CBLOCK 0x0C
ENDC
#DEFINE LogingitudNumero1 (Numero1-FinNumero1)
#DEFINE LogingitudNumero2 (Numero2-FinNumero2)
#DEFINE LogingitudNumero3 (Numero3-FinNumero3)
#DEFINE Salida1 PORTA,1
#DEFINE Salida2 PORTA,3
#DEFINE Salida3 PORTA,4
ZONA*********************************************************************
ORG 0
GOTO INICIO
ORG 4
GOTO INTER
Mensajes
ADDWF PCL,F
Mensaje0
DT "Teclee Numero",0x00
Mensaje1
DT "Numero Correcto",0x00
Mensaje2
DT "Activao Salida1",0x00
Mensaje3
DT "Activao salida2",0x00
Mensaje4
DT "Activao salida3",0x00
Mensaje5
DT "Numero Incorrecto",0x00
LeeNumeros
ADDWF PCL,F
Numero1
DT 2h,3h
FinNumero1
Numero2
DT 5h,6h
FinNumero2
Numero3
DT 8h,9h
FinNumero3
FinNumeros
INICIO CALL LCD_Inicializa
bsf STATUS,RP0
bcf PORTA,1 ;Define como salida
bcf PORTA,3
bcf PORTA,4
bcf STATUS,RP0
CALL Teclado_Inicializa ;Configura Teclado
CALL InicializaTodo ;Inicializa los registros
movlw b'10001000' ;Habilita la Interrupcion RBI
movwf INTCON
bucle
sleep
goto bucle
;Subrutina Inter*********************************************************
CBLOCK
CONT1
CONT2
CONT3
GuardoTecla
ENDC
INTER CALL Teclado_LeeHex
movwf INDF ;Almacena el digito en la Ram
incf FSR,f ;Apunta hacia la siguiente direccion de ñla Ram
incf CONT1,f
movlw LongitudNumero1
subwf CONT1,W
incf FSR,f
incf CONT2,f
movlw LongitudNumero2
subwf CONT2,W
incf FSR,f
incf CONT3,f
movlw LongitudNumero3
subwf CONT3,W
btfss STATUS,C
GOTO INTER1
CALL LCD_Borra
clrf CONT1
clrf CONT2
clrf CONT3
movlw Tecla
movwf FSR
ComparaNumero1
movf INDF,W ;Lee el numero y lo guarda en la ram
movwf Tecla
movwf CONT1,w ;Apunta ala Rom
call Numero1
subwf GuardoTecla,w
btfss STATUS,Z
goto NumeroIncorrecto
incf FSR,f
incf CONT1,f
movlw LongitudNumero1
subwf CONT1,f
btfss STATUS,C
goto ComparaNumero1
movlw Mensaje1
CALL LCD_Mensaje
CALL LCD_Linea2
movlw Mensaje2
CALL LCD_Mensaje
bsf Salida1
goto Retardos
ComparaNumero2 movf INDF,W ;Lee el numero y lo guarda en la ram
movwf Tecla
movwf CONT2,w ;Apunta ala Rom
call Numero2
subwf GuardoTecla,w
btfss STATUS,Z
goto NumeroIncorrecto
incf FSR,f
incf CONT1,f
movlw LongitudNumero2
subwf CONT1,f
btfss STATUS,C
goto ComparaNumero2
movlw Mensaje1
CALL LCD_Mensaje
CALL LCD_Linea2
movlw Mensaje3
CALL LCD_Mensaje
bsf salida2
goto Retardos
ComparaNumero3 movf INDF,W ;Lee el numero y lo guarda en la ram
movwf Tecla
movwf CONT3,w ;Apunta ala Rom
call Numero3
subwf GuardoTecla,w
btfss STATUS,Z
goto NumeroIncorrecto
incf FSR,f
incf CONT1,f
movlw LongitudNumero3
subwf CONT1,f
btfss STATUS,C
goto ComparaNumero3
movlw Mensaje1
CALL LCD_Mensaje
CALL LCD_Linea2
movlw Mensaje4
CALL LCD_Mensaje
bsf Salida3
goto Retardos
NumeroIncorrecto movlw Mensaje5
CALL LCD_Mensaje
Retardo
call Retardo_4s
call Retardo_2s
InicializaTodo
bcf PORTA,1 ;Desactiva las salidas
bcf PORTA,3
bcf PORTA,4
crlf CONT1 ;Inicializa Contadores
crlf CONT2
crlf CONT3
movlw Tecla
movwf FSR
CALL LCD_Borra
movlw Mensaje0
CALL LCD_Mensaje
INTER1 CALL Teclado_EsperaDejePulsar
bcf INTCON,RBIF
retfie
;Subrutina "Teclado Inicializa"****************************************************
Teclado Inicializa
BSF STATUS,RP0
MOVLW B'11110000'
MOVWF PORTB
BCF OPTION_REG,NOT_RPBU
BCF STATUS,RP0
CALL Teclado_EsperaDejePulsar
;*********************Subrutina Teclado_EsperaDejePulsar***************************************
Teclado_Comprobacion EQU b'11110000'
Teclado_EsperaDejePulsar
movlw Teclado_comprobacion
movwf PORTB
;*******************Subrutina "Teclado_LeeHex"***********************************************
Teclado_LeeHex
CALL teclado_LeeOrdenTecla
BTFSS STATUS,C
GOTO Tecl_FinLeeHex
CALL teclado_ConvierteOrdenEnHex
BSF STATUS,C
;********************Subrrutina Teclado Lee Orden Tecla***************************************
Teclado_LeeOrdenTecla
clrf Tecl_TeclaOrden
movlw b'11111110'
Tecl_FinLeeHex
RETURN
Teclado_ConvierteOrdenEnHex
ADDWF PCL,F
DT 1h,2h,3h,0Fh
DT 4h,5h,6h,0Eh
DT 7h,8h,9h,0Dh
DT 0Ah,0h,0Bh,0Ch
INCLUDE <TECLADO.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <RETARDOS.INC>
CBLOCK
Num_Tecleado
ENDC
END