;programa de teclado
LIST P=16F877A
INCLUDE "P16F877A.INC"
CUENTA EQU 20H
ANTERIOR EQU 21H
VALOR EQU 22H
VALOR1 EQU 23H
BANKSEL TRISA
MOVLW 0F0H
MOVWF TRISB
CLRF TRISC
BCF OPTION_REG,7
BANKSEL PORTC
CLRF PORTC
INICIO:
CLRF CUENTA
CALL BARRIDO
MOVLW .16
XORWF CUENTA,0
BTFSC STATUS,Z
GOTO INICIO
MOVF CUENTA,0
CALL TECLA
MOVWF PORTC
GOTO INICIO
BARRIDO:
MOVLW B'11110111'
REGRESO:
MOVWF PORTB
BTFSS PORTB,7
GOTO FIN_PULSO
INCF CUENTA,1
BTFSS PORTB,6
GOTO FIN_PULSO
INCF CUENTA,1
BTFSS PORTB,5
GOTO FIN_PULSO
INCF CUENTA,1
BTFSS PORTB,4
GOTO FIN_PULSO
INCF CUENTA,1
MOVLW .16
XORWF CUENTA,0
BTFSC STATUS,Z
RETURN
BSF STATUS,C
RRF PORTB,0
GOTO REGRESO
FIN_PULSO:
MOVF PORTB,0
MOVWF ANTERIOR
VOLVER:
MOVF PORTB,0
XORWF ANTERIOR,0
BTFSS STATUS,Z
RETURN
CALL RETARDO
GOTO VOLVER
RETARDO:
MOVLW .20
MOVWF VALOR
SALTO1:
MOVLW .249
MOVWF VALOR1
SALTO:
NOP
DECFSZ VALOR1,1
GOTO SALTO
DECFSZ VALOR,1
GOTO SALTO1
RETURN
TECLA:
ADDWF PCL,1
DT .7,.8,.9,0AH
DT .4,.5,.6,0BH
DT .1,.2,.3,0CH
DT 0FH,.0,0EH,0DH
END
No hay comentarios:
Publicar un comentario