Ola a todos....tengo un problema kon un programa para teclado matricial....hice uno en C y no me resulto....asi ke trate de probar uno en asm que encontre para un 16f84....Mi pregunta es ke kosa le falta porke lo trate de kompilar en MPLAB y no peska.....no entiendo ke pasa ...aki el kode:
Codigo:
Contador1 EQU 0x0C ;//registro contador1
Contador2 EQU 0x0D ;//registro contador2
Contador3 EQU 0x0E ;//registro contador3
Tecla EQU 0x0F ;//Registro para numero tecla de 0-15
ORG 0x00 ;//Posicion Vector Reset
GOTO Inicializa ;//Programa comienza una posicion
ORG 0x05 ;//detras de vector de interrupcion
Inicializa BSF STATUS,RP0 ;//pagina 1
MOVLW 0b11110000 ;//Patron PUERTA B:PORTB.4-7 entradas Columnas,PORTB.0-3 salidas Filas
MOVWF TRISB ;//Programa Puerta B
BSF OPTION,RBPU ;//Habilita Pull-ups en entradas
BCF STATUS,RP0 ;//Vuelve a pagina 0
CLRF Contador1 ;//Contador1=0
CLRF Contador2 ;//Contador2=0
MOVLW 0x08 ;//Carga Contador3 para un retardo
MOVWF Contador3 ;//de 1/2 segundo
Principal CLRF Tecla ;//Tecla=0
INCF Tecla ;//Tecla=Tecla+1
MOVLW 0b1110 ;//saca 0 a Fila 1
MOVWF PORTB ;//por la Puerta B
NOP ;//espera estabilizacion
Chekeo_Col BTFSS PORTB,4 ;//Chekea primera Columna buscando 0
GOTO NTecla ;//si encuentra 0 muestra numero tecla pulsada
INCF Tecla ;//si no tecla pulsada incrementa numero tecla
BTFSS PORTB,5 ;//Chekea segunda Columna buscando 0
GOTO NTecla ;//si encuentra 0 muestra numero tecla pulsada
INCF Tecla ;//si no tecla pulsada incrementa numero tecla
BTFSS PORTB,6 ;//Chekea tercera Columna buscando 0
GOTO NTecla ;//si encuentra 0 muestra numero tecla pulsada
INCF Tecla ;//si no tecla pulsada incrementa numero tecla
BTFSS PORTB,7 ;//Chekea cuarta Columna buscando 0
GOTO NTecla ;//si encuentra 0 muestra numero tecla pulsada
INCF Tecla ;//si no tecla pulsada incrementa numero tecla
Ultima_tecl MOVLW 0x11 ;//Carga W kon el numero de Teclas+1
SUBWF Tecla,w ;//y lo kompara kon el valor actual de Tecla
BTFSC STATUS,Z ;//si Tecla+1=valor actual
GOTO Principal ;//No ha sido pulsada ninguna tecla
BSF C ;//Pone a 1 bit C
RLF PORTB ;//asi la Fila 1 pasa a 1 con la rotacion a izq
GOTO Chekeo_Col ;//y chekea la siguiente kolumna
NTecla BSF STATUS,RP0 ;//Selecciona pagina 1
CLRF TRISB ;//Configura Puerta B como salida
BCF STATUS,RP0 ;//vuelve a pagina 0
MOVF Tecla,w ;//Coloca valor de Tecla en W
MOVWF PORTB ;//y los saka en los led
Pausa DECFSZ Contador1 ;//Bucle anidado de 3 niveles
GOTO Pausa ;//aproximadamente 0.5 segundos
DECFSZ Contador2
GOTO Pausa
DECFSZ Contador3
GOTO Pausa
GOTO Inicializa ;//Fin.Reset Puerta B y contadores de pausa
ojala me ayuden ke kiero tener un poko de vakaciones...jaja...