Está en la página 1de 7

“Año de la universalización de la salud”

Universidad Nacional de Huancavelica


Facultad de Ingeniería de Electrónica – Sistemas
Escuela Profesional de Ingeniería Electrónica

PROGRAMA DECODIFICADOR DE 7 SEGMENTOS Y EL DE


INTERRUPCION MPLAB

Asignatura: Microcontroladores

Docente: Mg. Emersson Luis Montañez Rodriguez

Alumno: Vilcahuaman Jesus Miguel

Ciclo: Séptimo

Semestre: 2020 – I

Pampas – Tayacaja

2020
Programa de display número 13:

LIST P=16F84A

#include <P16F84A.inc>

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

;**** Definicion de variables ****

Unidad equ 0x0C

Decena equ 0x0D

Centena equ 0x0E

Contador1 equ 0x0F

Contador2 equ 0x10

Contador equ 0x11

MuestroU equ 2

MuestroD equ 1

MuestroC equ 0

;**** Inicio del Micro ****

org 0x00

goto Inicio

;**** Tabla de conversion BCD a 7 Segmentos ****

org 0x05

BCD7SEG

addwf PCL,1

DT 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F

;**** Configuracion de puertos ****


Inicio

bsf STATUS,RP0

clrf TRISA

clrf TRISB

bcf STATUS,RP0

clrf PORTA

clrf Unidad

clrf Decena

clrf Centena

goto Actualizo_Display

;**** Testeo de Pulsador ****

Bucle

movlw d'3'

movwf Unidad

movlw d'1'

movwf Decena

btfss STATUS,Z

goto Actualizo_Display

clrf Unidad

movlw d'1'

movwf Decena

btfss STATUS,Z

goto Actualizo_Display

clrf Decena

incf Centena,1

movlw d'10'

subwf Centena,0

btfss STATUS,Z

goto Actualizo_Display

clrf Centena

;**** Se multiplexan los Display ****


Actualizo_Display

movlw d'20'

movwf Contador

Refresco

movfw Unidad

call BCD7SEG

bcf PORTA,MuestroC

movwf PORTB

bsf PORTA,MuestroU

call Demora_5ms

movfw Decena

call BCD7SEG

bcf PORTA,MuestroU

movwf PORTB

bsf PORTA,MuestroD

call Demora_5ms

movfw Centena

call BCD7SEG

bcf PORTA,MuestroD

movwf PORTB

bsf PORTA,MuestroC

call Demora_5ms

decfsz Contador,1

goto Refresco

goto Bucle

;**** Demora ****

Demora_5ms

movlw 0xFF

movwf Contador1

Repeticion1
movlw 0x05

movwf Contador2

Repeticion2

decfsz Contador2,1

goto Repeticion2

decfsz Contador1,1

goto Repeticion1

return

end

Programa de interrupción:

LIST P=16F84A

#include <p16f84a.inc> ; incluye libreria

__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _CP_OFF; configuración

;definir variables

CBLOCK 0x0C

Reg

ENDC

;valores

Tiempo1 EQU D'196' ; 196*256= 50176us= 50ms

Tiempo2 EQU D'10' ; 50ms*10=500ms

Tiempo3 EQU D'6' ; 50ms*6=300ms

#DEFINE LED PORTB,3

;codigo

ORG 0

GOTO INICIO

ORG 4

GOTO TMR0_INT
INICIO

BSF STATUS, RP0

BCF LED

MOVLW B'00000111'; Valor de W 256

MOVWF OPTION_REG; guarda reg

BCF STATUS, RP0

MOVLW Tiempo1

MOVWF TMR0

MOVLW Tiempo2

MOVWF Reg

MOVLW B'1010000'

MOVWF INTCON

Start

GOTO $

;INTerrupción

TMR0_INT

MOVLW Tiempo1

MOVWF TMR0

DECFSZ Reg,F

GOTO FIN

BTFSC LED

GOTO encendido

apagado

BSF LED

MOVLW Tiempo3

MOVWF Reg

encendido

BSF LED

MOVLW Tiempo2

variación

MOVWF Reg
FIN

BCF INTCON, T0IF

RETFIE

END

También podría gustarte