Está en la página 1de 2

#include <xc.

h>
#include <pic18f4550.h>
#include "LCD.h"

#define _XTAL_FREQ 20000000

#define _0G 500


#define _30G 833
#define _60G 1166
#define _120G 1833
#define _150G 2166
#define _180G 2500

unsigned int angulo ;

void main(void) {

T1CONbits.T1RD16=0;//2 OPERACIONES DE LECTURA DE 8 BITS


T1CONbits.T1RUN=0;//HABILITAR MODO DE RELOJ EXTERNO
T1CONbits.T1CKPS0=1;//PRESCALER=8
T1CONbits.T1CKPS1=1;//PRESCALER=8
T1CONbits.T1OSCEN=1;//ACTIVAR EL OSCILADOR EXTERNO
T1CONbits.T1SYNC=0;//SINCRONIZACIÓN MODO DE BAJO CONSUMO
T1CONbits.TMR1CS=0;//SELECCIONA EL OSCILADOR EXTERNO
T1CONbits.TMR1ON=1;//ACTIVAR EL CONTEO DEL TIMER

//CONFIGURAR INFLUENCIA DEL MÓDULO CCP


T3CONbits.T3CCP1=0; //TIMER 1 ES LA FUENTE DE RELOJ
T3CONbits.T3CCP2=0; //TIMER 1 ES LA FUENTE DE RELOJ

//LECTURA DE DATOS
TMR1L=0; //LECTURA DE PARTE BAJA
TMR1H=0; //LECTURA DE PARTE ALTA

//CONFIGURACIÓN DEL MODULO CCP


CCP1CON=0b00000010; //HABILITAR EL MODULO CCP1 EN MODO COMPARACIÓN
CCPR1=2500; //VALOR DE COMPARACIÓN (CADA 2500x8 = 20,000 us)

//
PIE1bits.CCP1IE=1;//HABILITAR INTERRUPCIÓN POR COMPARACIÓN
PIE1bits.TMR1IE=1;//HABILITAR INTERRUPCIÓN POR DESBORDAMIENTO
INTCONbits.GIE=1;//HABILITAR INTERRUPCIONES GENERALES
INTCONbits.PEIE=1;//HABILITAR INTERRUPCIONES DE PERIFERICOS

TRISA=0; //CONFIGURAR PUERTO A COMO SALIDA

LATAbits.LATA2=1; //GENERADOR DE PULSO

while(1){

if(LATBbits.LATB0==1){
angulo =_30G;
__delay_ms(2000);

}
if(LATBbits.LATB1==1){
angulo =_60G;
__delay_ms(2000);

}
if(LATBbits.LATB2==1){
angulo =_120G;
__delay_ms(2000);

}
if(LATBbits.LATB3==1){
angulo =_150G;
__delay_ms(2000);

}
return;

void __interrupt() INTERRUPCION (void){

if (PIR1bits.CCP1IF==1){//OCURRE EL EVENTO DE CONPARACIÓN


TMR1L=0; //LECTURA DE PARTE BAJA
TMR1H=0; //LECTURA DE PARTE ALTA

LATAbits.LATA2=~LATAbits.LATA2;

if(LATAbits.LATA2==1){
CCPR1=angulo;
}
else{
CCPR1=20000-angulo;
}

PIR1bits.CCP1IF=0; //RESTABLECER EL VALOR DE BANDERA


}
if (PIR1bits.TMR1IF==1){//OCURRE UN DESBORDAMIENTO

PIR1bits.TMR1IF=0; //RESTABLECE EL VALOR DE


}
return;
}

También podría gustarte