0% encontró este documento útil (0 votos)
196 vistas6 páginas

Contador/Decontador PIC16F88 Ensamblador

Este documento describe un contador y decontador que muestra números de 0 a 9 en un display de 7 segmentos utilizando un PIC 16F88. Explica la conexión de los pines del PIC y proporciona el código en ensamblador para implementar la lógica del contador y decontador controlado por un pulsador.

Cargado por

Algún Sujeto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
196 vistas6 páginas

Contador/Decontador PIC16F88 Ensamblador

Este documento describe un contador y decontador que muestra números de 0 a 9 en un display de 7 segmentos utilizando un PIC 16F88. Explica la conexión de los pines del PIC y proporciona el código en ensamblador para implementar la lógica del contador y decontador controlado por un pulsador.

Cargado por

Algún Sujeto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PIC 16F88 CONTADOR, DECONTADOR PULSADOR ENSAMBLADOR

En este primer apartado vamos a realizar un contador con un pic 16f88 mediante el cual
visualizamos en un display de 7 segmentos un numero de 0 a 9 o si pulsamos el botón un
decremento de 9 a 0.

la conexión de los pines del pic es la siguiente;

aquí dejo el código usado en ensamblador:

;Pedro Luis Martinez

; todos los derechos reservados

; *********************************************

LIST P=16F88

INCLUDE <[Link]>

__CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF &
_LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC

__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

; _CP_OFF: Protección de código DESACTIVADO.

; _DEBUG_OFF: Debug en circuito DESACTIVADO.

; _WRT_PROTECT_OFF: Protección a escritura en memoria de programa DESACTIVADO.

; _CPD_OFF: Protección de código de datos DESACTIVADO.

; _LVP_OFF: Programación en baja tensión DESACTIVADO.

; _BODEN_OFF: Reset por Brown-out DESACTIVADO.

; _MCLRE_ON: Reset por pin externo ACTIVADO.

; _PWRTE_ON: Retraso al reset ACTIVADO.

; _WDT_OFF: Watchdog DESACTIVADO.

; _XT_OSC: Oscilador externo del tipo XT.


; _IESO_OFF: Modo de intercambio de externo a interno DESACTIVADO.

; _FCMEN_OFF: Monitor de CLK DESACTIVADO.

;********************************************************************************
******************

AUX EQU H'20'; VARIABLE PARA RETARDO 1 SEGUNDO

AUX2 EQU H'22'; VARIABLE PARA RETARDO 1 SEGUNDO

AUX3 EQU H'23'; VARIABLE PARA RETARDO 1 SEGUNDO

INDICE EQU H'21'

ORG 0

; CONFIGURACIÓN

BSF STATUS,5 ; CAMBIO AL BANCO 1

BCF STATUS,6

CLRF TRISB ; PUERTO B COMO SALIDAS

BSF TRISA,0 ; DEFINIR COMO ENTRADA

CLRF ANSEL

BCF STATUS,5 ; CAMBIO AL BANCO 0

; EJECUCIÓN

; *********************************************

MOVLW b'11111111'

MOVWF PORTB ; CON ESTE MODULO QUE QUE COMPROBAMOS ES

CALL DELAY1S ; COMPROBAR QUE EL DISPLAY FUNCIONA CORRECTAMENTE

CLRF INDICE

; *********************************************

; COMPROBAR BOTON

; *********************************************

BOTON ; SE COMPRUEBA SI EL PULSADOR PULSADO O NO


CALL TABLA ; ME DEVUELVE EL VALOR EN W

MOVWF PORTB

CALL DELAY1S

BTFSS PORTA,0

GOTO ASCENDENTE ; SI EL PULSADOR ESTA APAGADO INCREMENTA LA CUENTA

GOTO DESCENDENTE ; SI EL PULSADOR ESTA ENENCIDO DECREMENTA LA CUENTA

; *********************************************

; ALGORITMO

; *********************************************

ASCENDENTE

;------------------------------------------------

INCF INDICE,F ;BUCLE QUE INCREMENTA 1 A 1 LA POSICION DE LA TABLA

MOVLW D'10'

SUBWF INDICE,0

BTFSS STATUS,Z

GOTO BOTON

PONER0 CLRF INDICE

GOTO BOTON

;------------------------------------------------

DESCENDENTE

;------------------------------------------------

DECF INDICE,F ;BUCLE QUE DECREMENTA 1 A 1 LA POSICION DE LA TABLA

MOVLW D'255' ;255 - 1 = 0


SUBWF INDICE,0

BTFSS STATUS,Z

GOTO BOTON

PONER9 MOVLW 9 ;CUANDO HA LLEGADO A 0 LO QUE HACEMOS ES PONER 9

MOVWF INDICE ;LO GUARDAMOS EN INDICE Y EJECUTAMOS DE NUEVO

GOTO BOTON

;------------------------------------------------

; *********************************************

TABLA

; *********************************************

MOVF INDICE,W

ADDWF PCL,F

; .GFEDCBA

retlw b'00111111';Devolver 0 en display 7 seg

retlw b'00000110';Devolver 1 en display 7 seg

retlw b'01011011';Devolver 2 en display 7 seg

retlw b'01001111';Devolver 3 en display 7 seg

retlw b'01100110';Devolver 4 en display 7 seg

retlw b'01101101';Devolver 5 en display 7 seg

retlw b'01111100';Devolver 6 en display 7 seg

retlw b'00000111';Devolver 7 en display 7 seg


retlw b'01111111';Devolver 8 en display 7 seg

retlw b'01100111';Devolver 9 en display 7 seg

CLRF INDICE

GOTO TABLA

; *********************************************

; DELAY 1 SEGUNDO

; *********************************************

DELAY1S movlw d'11' ;4+ 300*Z

movwf AUX3

DELAY2 decfsz AUX3

goto DELAY100

INC2 movlw d'7' ; 3+3x

movwf AUX

decfsz AUX

goto $-1

return

DELAY100 movlw d'191' ;3XY + 6X +3 + 2

movwf AUX

DELAY1 movlw d'172' ;Y

movwf AUX2

decfsz AUX2

goto $-1

goto DEC

DEC decfsz AUX


goto DELAY1

goto INC

INC movlw d'95' ; 3+3x

movwf AUX2

decfsz AUX2

goto $-1

nop

goto DELAY2

; *********************************************

END

También podría gustarte