;teclado matricial y display de 7seg con pic 16f84
LIST P=16F84A
INCLUDE "P16F84A.INC"
__CONFIG _CP_ON & _PWRTE_ON & _XT_OSC & _WDT_OFF ;PALABRA DE CONFIGURACION (FUSES)
ERRORLEVEL -302 ;PARA Q NO SALGA EL MENSAJE 302 EN LA VENTANA OUTPUT
RADIX HEX ;PARA Q .10 = D'10'
;DECLARACION DE VARIABLES
CBLOCK 0C ;MACRO PARA MENCIONAR LOS REGISTROS DE PROPOSITO GENERAL
MEMORIA
REG1
REG2
REG3
ENDC ; FIN DE ESTA MACRO
ORG 0
GOTO INICIO
ORG 5
RETARDO MOVLW .9
MOVWF REG1
DEC3 MOVLW .9
MOVWF REG2
DEC2 MOVLW .5
MOVWF REG3
DEC1 DECFSZ REG3,1
GOTO DEC1
DECFSZ REG2,1
GOTO DEC2
DECFSZ REG1,1
GOTO DEC3
RETURN
;CONFIGURACION DE PUERTOS
INICIO BSF STATUS,RP0
MOVLW 0XF0
MOVWF TRISB
;RB0 SALIDA = DISPARO BASE BC548
;RB1 SALIDA = COLUMNA1
;RB2 SALIDA = COLUMNA2
;RB3 SALIDA = COLUMNA3
;RB4 ENTRADA = FILA1
;RB5 ENTRADA = FILA2
;RB6 ENTRADA = FILA3
;RB7 ENTRADA = FILA4
CLRF TRISA
;RB0 SALIDA = BCD A
;RB1 SALIDA = BCD B
;RB2 SALIDA = BCD C
;RB3 SALIDA = BCD D
;RB4 SALIDA = DISPARO BASE BC548
MOVLW 0X07
MOVWF OPTION_REG
;HABILITO PULL-UP DEL PORTB(RB4-RB7)
BCF STATUS,RP0
CLRF PORTA
CLRF PORTB
COLUMNA MOVLW 0X0F
MOVWF PORTB
BCF PORTB,1
BTFSS PORTB,4
GOTO UNO
BTFSS PORTB,5
GOTO CUATRO
BTFSS PORTB,6
GOTO SIETE
;BTFSS PORTB,7
;GOTO _*_
MOVLW 0X0F
MOVWF PORTB
BCF PORTB,2
BTFSS PORTB,4
GOTO DOS
BTFSS PORTB,5
GOTO CINCO
BTFSS PORTB,6
GOTO OCHO
BTFSS PORTB,7
GOTO CERO
MOVLW 0X0F
MOVWF PORTB
BCF PORTB,3
BTFSS PORTB,4
GOTO TRES
BTFSS PORTB,5
GOTO SEIS;_*_
BTFSS PORTB,6
GOTO NUEVE
;BTFSS PORTB,7
;GOTO _#_
GOTO COLUMNA
UNO MOVLW b'0001'
GOTO MOSTRAR
CUATRO MOVLW b'0100'
GOTO MOSTRAR
SIETE MOVLW b'0111'
GOTO MOSTRAR
DOS MOVLW b'0010'
GOTO MOSTRAR
CINCO MOVLW b'0101'
GOTO MOSTRAR
OCHO MOVLW b'1000'
GOTO MOSTRAR
CERO MOVLW 0
GOTO MOSTRAR
TRES MOVLW b'0011'
GOTO MOSTRAR
SEIS MOVLW b'0110'
GOTO MOSTRAR
NUEVE MOVLW b'1001'
GOTO MOSTRAR
MOSTRAR MOVWF PORTA
BSF PORTA,4;DISPARO DE LA BASE DEL BC548
BSF PORTB,0;DISPARO DE LA BASE DEL BC548
CALL RETARDO
GOTO COLUMNA
END