PRÁCTICA ALARMA DESCENDENTE PROGRAMABLE.
Enviado por valges • 27 de Octubre de 2013 • Examen • 14.470 Palabras (58 Páginas) • 234 Visitas
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
...