;
;PROPIETARIO: RUBEN DARIO FIGUEREDO
;
;FECHA: 10 DE MARZO DE 2016 15:49
;PROFESOR: FORO TODO PIC
;VERSION DEFINITIVA: MICRO 16F877A
;GRABAR CON: WDT= OFF
; POWER UP TIMER= OFF
; BROWN OUT DETECT= OFF
; CODE PROTECT= ON
;**************************************************************************
list p=16f877a
#include <p16f877a.inc>
#define FOSC D'4000000'
;**************************************************************************************************************
;FUSIBLES DE PROGRAMACIÓN, EVITA TENER QUE ESCRIBIRLOS CADA VEZ QUE SE EJECUTA EL PROGRAMA WINPICPROG O IC-PROG
;*************************************************************************************************************
__CONFIG _BODEN_OFF & _CP_OFF & _WRT_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC & _DEBUG_OFF & _CPD_OFF & _LVP_OFF
;*************************************************************************************************************
CBLOCK 0X20
TEMP1
TEMP2
W_TEMP
STATUS_TEMP
PCLATH_TEMP
ENDC
;*****************************************************************************
ORG 000H ;VECTOR DE RESET
GOTO SETUP
ORG 0X04 ;VECTOR DE INTERRUPCION
;**********************************************************************************************
; CONFIGURACION DE PUERTOS
;**********************************************************************************************
SETUP
BANKSEL TRISA ;SUBO A BANCO1
MOVLW B'00000110' ;1 input, 0 output
MOVWF TRISA ;DESCARGO EN TRISA
MOVLW B'00000000' ;1 input, 0 output
MOVWF TRISB ;DESCARGO EN TRISB
MOVLW B'00000000' ;1 input, 0 output
MOVWF TRISC ;DESCARGO EN TRISD
MOVLW B'00000000' ;1 input, 0 output
MOVWF TRISD ;DESCARGO EN TRISE
MOVLW B'00000000' ;1 input, 0 output
MOVWF TRISE
MOVLW .7
MOVWF ADCON1
BANKSEL PORTA ;BAJO A BANCO 0
CLRF PORTA ;LIMPIO PORTA
CLRF PORTB ;LIMPIO PORTB
CLRF PORTC ;LIMPIO PORTC
CLRF PORTD ;LIMPIO PORTD
CLRF PORTE ;LIMPIO PORTE
;****************************************************************************************************
; CONFIGURACION DE INTEERRUPCIONES
;****************************************************************************************************
CONF_INTERRUPCION
BSF INTCON,RBIE ; HABILITAR INTERRUPCION RBIE
BCF INTCON,RBIF ; LIMPIAR LA BANDEERA DE INTERRUPCION
BSF INTCON,GIE ; HABILITAR INTERRUPCION
;******************************************************************************************************
; RUTINA PRINCIPAL PRENDE UN LED Y MUESTRA UN MENSAJE
;******************************************************************************************************
PRINCIPAL
;Aca crear el codigo del LED
GOTO PRINCIPAL
;*****************************************************************************************
; RUTINA DE SERVICIO DE INTERRUCION
;*****************************************************************************************
ISR
; Aca arreglar todo.
BCF INTCON,GIE ; DESHABLITAR INTERRUPCIONES
;CHEQUEO BOTONES
BTFSS MENU
BCF LED
CALL DEMORA
CALL PRINCIPAL
SALIDA_ISR
BCF INTCON,RBIF ; LIMPIA LA BANDERA DE INTERRUPCION
BSF INTCON,GIE ; HABILITAR INTERRUPCIONES
RETFIE ; REGRESAR DE LA INTERRUPCION
DEMORA
MOVLW .255 ;CARGO 255 A W
MOVWF TEMP1 ;DESCARGO 4 EN GRAL1
BN MOVLW .255 ;CARGO 255 A W
MOVWF TEMP2 ;DESCARGO EN GRAL2
NM NOP ;NOP, UN CICLO DE MÁQUINA, UN BYTE
DECFSZ TEMP2 ;DECREMENTO GRAL2, SALTO SI ES CERO
GOTO NM ;VOY A NM
DECFSZ TEMP1 ;DECREMENTO GRAL1 SALTO SI ES CERO
GOTO BN ;VOY A BN
RETURN ;RETORNO
END