domingo, 1 de marzo de 2015

Indicador de cédula ascendente/descendente con PIC16F84 por Carlos Toapanta



Indicador de cédula ascendente/descendente con PIC16F84 por Carlos Toapanta


El proyecto presentado en este espacio sirve para observar el manejo del PIC16F84 trabajando en lenguaje assembler por medio del MPLAB. Este microcontrolador es uno de los más simples del mercado pero no por eso se lo va a menospreciar. El proyecto es uno de los más simples y consiste en dos pulsadores con los cuales se puede mostrar una serie de números en este caso los de una cédula, con el primer botón aparece cada número en forma ascendente y con el segundo botón carga los números desde el final y van apareciendo de forma descendente.


Materiales:
·        1 PIC16F84
·        2 pulsadores normalmente abiertos
·        2 resistencias de 10 kΩ
·        7 resistencias de 330 Ω
·        1 display de 7 segmentos ánodo común
·        1 decodificador 74LS47
·        Fuente de 5 V


Circuito:

Código de programación:


; ------------------------------------------------------------------------------
;|TITULO: CEDULA
;|;|DESCRIPCION: ESTE PROGRAMA ES UN SIMPLE INDICADOR DE NUMERO DE CEDULA EN UN |
;|DISPLAY DE 7 SEGMENTOS Y DOS PULSADORES |
; ----------------------------------------------------------------------------
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST p=16f84A
INCLUDE <P16F84.INC>
;------------------------------------------------------------------------------
;DEFINICION DE VARIABLES
PULSADOR1 EQU 0X00
PULSADOR2 EQU 0X01
DISPLAYA EQU 0X00
DISPLAYB EQU 0X01
DISPLAYC EQU 0X02
DISPLAYD EQU 0X03
;------------------------------------------------------------------------------
;DEFINICION DE ENTRADAS Y SALIDAS
ORG 0X00
BSF STATUS,RP0
BSF TRISA,PULSADOR1;ENTRADA 0
BSF TRISA,PULSADOR2;ENTRADA 1
BCF TRISB,DISPLAYA; SALIDA 0
BCF TRISB,DISPLAYB; SALIDA 1
BCF TRISB,DISPLAYC; SALIDA 2
BCF TRISB,DISPLAYD; SALIDA 3
BCF STATUS,RP0
BSF PORTB,DISPLAYA
BSF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BSF PORTB,DISPLAYD
;-------------------------------------------------------------------------------
PULSADORES
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO PULSADORES
ASCENDENTE
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO ASCENDENTE
BSF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP1
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM2
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP1
NUM2
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM2
BSF PORTB,DISPLAYA
BSF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP2
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM3
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP2
NUM3
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM3
BCF PORTB,DISPLAYA
BSF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP3
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM4
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP3
NUM4
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM4
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP4
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM5
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP4
NUM5
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM5
BSF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP5
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM6
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP5
NUM6
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM6
BCF PORTB,DISPLAYA
BSF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP6
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM7
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP6
NUM7
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM7
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BSF PORTB,DISPLAYD
COMP7
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM8
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP7
NUM8
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM8
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP8
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM9
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP8
NUM9
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM9
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
COMP9
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM10
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP9
NUM10
BTFSS PORTA,PULSADOR1 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO NUM10
BSF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD;
COMP10
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO NUM10
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DESCENDENTE
GOTO COMP10
;-----------------------------------------------------------------------------------------
DESCENDENTE
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DESCENDENTE
BSF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD10
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES9
GOTO CD10
DES9
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES9
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD9
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES8
GOTO CD9
DES8
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES8
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD8
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES7
GOTO CD8
DES7
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES7
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BSF PORTB,DISPLAYD
CD7
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES6
GOTO CD7
DES6
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES6
BCF PORTB,DISPLAYA
BSF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD6
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES5
GOTO CD6
DES5
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES5
BSF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD5
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES4
GOTO CD5
DES4
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES4
BCF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD4
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES3
GOTO CD4
DES3
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES3
BCF PORTB,DISPLAYA
BSF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD3
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES2
GOTO CD3
DES2
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES2
BSF PORTB,DISPLAYA
BSF PORTB,DISPLAYB
BSF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD2
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO DES1
GOTO CD2
DES1
BTFSS PORTA,PULSADOR2 ;COMPRUEBA SI SE SUELTA EL PULSADOR
GOTO DES1
BSF PORTB,DISPLAYA
BCF PORTB,DISPLAYB
BCF PORTB,DISPLAYC
BCF PORTB,DISPLAYD
CD1
BTFSS PORTA, PULSADOR1 ;COMPRUEBA SI ACTIVAN PULSADOR 1
GOTO ASCENDENTE
BTFSS PORTA, PULSADOR2 ; COMPRUEBA SI ACTIVAN PULSADOR 2
GOTO CD1
GOTO CD1
END


El número de cedula que nos va a mostrar es el 1724528045, este número puede ser cambiado por cualquier otro modificando dentro de cada subrutina. Además tiene implementado un antirebote para poder identificar cuando se suelta el botón y continuar con el programa.


Aqui tenemos el archivo de descarga que tiene los archivos del MPLAB 8.56 y el archivo de simulacion en proteus 8.1:
http://adf.ly/15lHnM
No olviden que para descargar deben esperar 5 segundos de la publicidad y a continuación aparecerá nuestro enlace a Mega

No hay comentarios.:

Publicar un comentario