ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

PRÁCTICA ALARMA DESCENDENTE PROGRAMABLE.

valgesExamen27 de Octubre de 2013

14.470 Palabras (58 Páginas)252 Visitas

Página 1 de 58

TAREA 15. PRÁCTICA ALARMA DESCENDENTE PROGRAMABLE.

Implementación:

Para lograr la implementación de una ALARMA DESCENDENTE PROGRAMABLE debemos de manejar varios puertos de entrada como salida, de la misma forma para crear el circuito y visualizar los valores necesitamos del uso de displays de cátodo común como el uso de latchs(74LS373), a través de señales de entrada podríamos controlar los valores de diferentes variables e irlas decrementando hasta que lleve un valor 0 y avise cuando llegue a este valor con ayuda de un buzzer.

Para realizar las funciones mencionadas necesitamos programar el PIC16F877A con el siguiente programa a partir de la siguiente lista de funciones.

B0=botón de encendido ó apagado

B1=botón selección de unidades(Segundos/Minutos).

B2= botón de correr ó parar.

B3=botón de aumento.

B4=botón de aumento.

B5=Buzzer.

Por lo tanto a partir de la lista de funciones podemos escribir el siguiente código en MPLAB, obteniendo:

list p=16f877a ;selección de dispositivO

ORG 0X00 ;SELECCIONAMOS EL ORIGEN

#INCLUDE<P16F877A.INC> ;INCLUIMOS LAS BIBLIOTECAS

VALOR EQU 0X20 ;CREAMOS LA VARIBALE VALOR

VAL2 EQU 0X21 ;CREAMOS LA VARIBALE VAL2

VAL3 EQU 0X22 ;CREAMOS LA VARIBALE VAL3

CONTADOR EQU 0X23 ;CREAMOS LA VARIBALE CONTADOR

SUMA2 EQU 0X24

SUMA3 EQU 0X25 ;CREAMOS LA VARIABLE NUMERO

SUMA EQU 0X26 ;CREAMOS LA VARIABLE SUMA

SUMA4 EQU 0X27 ;CREAMOS LA VARIBALE SUMA4

__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _BOREN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF;CONFIGURAMOS EL PIC PARA SU CORRECTO FUNCIONAMIENTO

BSF STATUS,0x05 ;Se cambio un bit del registro status para cambiar del banco 0 al 1

CLRF TRISD ;Limpiamos trisd

CLRF TRISC ;CONFIGURAMOS EL TRISC COMO SALIDAS

MOVLW B'11011111'

MOVWF TRISB ;CONFIGURAMOS TRISB COMO ENTRADAS

BCF STATUS,0x05 ;Regresamos al banco cero

GOTO RETARDO ;VAMOS A LA SUBRUTINA RETARDO

LUT ADDWF PCL,1 ;CREAMOS LA SUBRUTINA LUT

RETLW B'00111111';0

RETLW B'00000110';1

RETLW B'01011011';2

RETLW B'01001111';3

RETLW B'01100110';4

RETLW B'01101101';5

RETLW B'01111101';6

RETLW B'00100111';7

RETLW B'01111111';8

RETLW B'01100111';9

RETARDO GOTO FOR25 ;SIRVE PARA EVITAR EFECTO REBOTE EN PUSH BOTON

CONTINUARFOR25

APAGARENCENDER BTFSS PORTB,0 ;CHECAMOS EL BIT0 DLE PORTB PARA COMPROBAR SI ESTA PRENDIDO O APAGADO EL CIRCUITO

GOTO APAGAR ;SI ES 0 APAGADMOS EL CIRCUITO

GOTO ENCENDER ;SI ES 1 ENCENDEMOS EL CIRCUITO

APAGAR MOVLW B'00001111' ;EN ESTA SUBRUTINA APAGAMOS EL CIRCUITO

MOVWF PORTC

MOVLW 0X00

MOVWF PORTD

MOVLW B'00000000'

MOVWF PORTC

CLRF SUMA

CLRF SUMA2

GOTO RETARDO ;REGRESAMOS AL RETARDO

ENCENDER GOTO EFECTOREBOTE2 ;EVITAMOS EL EFECTO REBOTE

CONTINUARREBOTE2 BTFSC PORTB,2

GOTO CORRER ;SI ESTA PRENDIDO EL B2 DE PORTB VAMOS A CORRER

GOTO PARAR

PARAR BTFSS PORTB,1 ;SI ESTA APAGADO VAMOS A PARAR

GOTO CHECARBIT

INCF CONTADOR,1

CHECARBIT BTFSS CONTADOR,0 ;CHECAMOS QUE DESEA FIJAR MINUTOS O SEGUNDOS

GOTO CONTADOR0

GOTO CONTADOR1

CONTADOR0 BTFSS CONTADOR,1

GOTO CONTADOR00

GOTO CONTADOR10

CONTADOR1 BTFSS CONTADOR,1

GOTO CONTADOR01

GOTO CONTADOR11

CONTADOR10 BTFSS CONTADOR,2

GOTO SEGUNDO2;CONTADOR010

MOVLW 0X00;CONTADOR110

MOVWF CONTADOR

GOTO APAGARENCENDER

CONTADOR01 BTFSS CONTADOR,2

GOTO SEGUNDO1;CONTADOR001

MOVLW 0X00;CONTADOR101

MOVWF CONTADOR

GOTO APAGARENCENDER

CONTADOR11 BTFSS CONTADOR,2

GOTO MINUTO1;CONTADOR011

MOVLW 0X00 ;CONTADOR111

MOVWF CONTADOR

GOTO APAGARENCENDER

CONTADOR00 BTFSS CONTADOR,2

GOTO APAGARENCENDER;CONTADOR000

GOTO MINUTO2;CONTADOR100

;ESTA PARTE FIJAREMOS EL TIEMPO A PARTIR DE LA DECISION DEL USUARIO

SEGUNDO1 GOTO EFECTOREBOTE ;EVITAMOS EFECTO REBOTE

CONTINUARREBOTE BTFSS PORTB,3 ;REGRESAMOS DONDE LO LLAMAMOS

GOTO RESTAR ;SI NO ESCOGIO NADA COMPROBAMOS EL BOTON RESTAR

GOTO SUMAR ;SI ESOGIO SUMAR VAMOS A INCREMENTAR EL VALOR

SUMAR

BTFSS SUMA,3

GOTO PROCESO2

BTFSS SUMA,0

GOTO PROCESO2

GOTO VOLVERCERO

PROCESO2 INCF SUMA,1 ;DECREMENTAMOS EL VALOR DE SUMA

MOVLW B'00000001' ;COMPROBAMOS SI DESEA SUMAR EN SEGUNDO1, POR LO CUAL MOVEREMOS EL VALOR DE SEGUNDO1

MOVWF PORTC ;CONFIGURAMOS EL VALOR QUE SE VERA EN EL DISPLAY

MOVFW SUMA ;Y VAMOS A LA TABLA LUT PARA PONER EL VALOR

CALL LUT

MOVWF PORTD ;LO COLOCAMOS EN EL DISPLAY

MOVLW 0X00 ;FIJAMOS EL VALOR EN EL DISPLAY

MOVWF PORTC ;GUARDAMOS EL VALOR ESCOGIDO

GOTO APAGARENCENDER

VOLVERCERO MOVLW B'00000001' ;COMPROBAMOS SI DESEA SUMAR EN SEGUNDO1, POR LO CUAL MOVEREMOS EL VALOR DE SEGUNDO1

MOVWF PORTC ;CONFIGURAMOS EL VALOR QUE SE VERA EN EL DISPLAY

MOVLW 0X00

MOVWF SUMA

MOVFW SUMA ;Y VAMOS A LA TABLA LUT PARA PONER EL VALOR

CALL LUT

MOVWF PORTD ;LO COLOCAMOS EN EL DISPLAY

MOVLW 0X00 ;FIJAMOS EL VALOR EN EL DISPLAY

MOVWF PORTC ;GUARDAMOS EL VALOR ESCOGIDO

MOVLW 0X00

MOVWF SUMA

GOTO APAGARENCENDER ;RECTIFICAMOS SI DESEA TERMINAR EL FIJAR TIEMPO

RESTAR BTFSS PORTB,4

GOTO APAGARENCENDER

GOTO SEGUIRRESTANDO

SEGUIRRESTANDO

BTFSC SUMA,0

GOTO PROCESO

BTFSC SUMA,1

GOTO PROCESO

BTFSC SUMA,2

GOTO PROCESO

BTFSC SUMA,3

GOTO PROCESO

GOTO RESTABLECERSUMA

PROCESO DECF SUMA,1 ;DECREMENTAMOS EL VALOR DE SUMA

MOVLW B'00000001' ;COMPROBAMOS SI DESEA SUMAR EN SEGUNDO1, POR LO CUAL MOVEREMOS EL VALOR DE SEGUNDO1

MOVWF PORTC ;CONFIGURAMOS EL VALOR QUE SE VERA EN EL DISPLAY

MOVFW SUMA ;Y VAMOS A LA TABLA LUT PARA PONER EL VALOR

CALL LUT

MOVWF PORTD ;LO COLOCAMOS EN EL DISPLAY

MOVLW 0X00 ;FIJAMOS EL VALOR EN EL DISPLAY

MOVWF PORTC ;GUARDAMOS EL VALOR ESCOGIDO

GOTO APAGARENCENDER

RESTABLECERSUMA MOVLW B'00000001' ;COMPROBAMOS SI DESEA SUMAR EN SEGUNDO1, POR LO CUAL MOVEREMOS EL VALOR DE SEGUNDO1

MOVWF PORTC ;CONFIGURAMOS EL VALOR QUE SE VERA EN EL DISPLAY

MOVLW 0X09

MOVWF SUMA

...

Descargar como (para miembros actualizados) txt (34 Kb)
Leer 57 páginas más »
Disponible sólo en Clubensayos.com