Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- */
- #include <xc.h>
- #include <stdint.h>
- #include <stdio.h>
- #include <stdbool.h>
- // Variables Global y Constantes********************************************
- #define _XTAL_FREQ 4000000
- #define CONSTANT1 0xF3 //
- #define CONSTANT2 100 //
- #define CONSTANT3 900 //
- uint16_t var1[4] = {0,0,0,0}; //
- uint8_t var2 = 0; //
- uint16_t var3 = 0; //
- uint8_t var4 = 0; //
- uint8_t var5[100]; //
- uint8_t var6 = 0; //
- uint8_t var7 = 0; //
- #pragma config WDTE=OFF //WDT Disabled
- /*Prototipos*/
- void Function1(unsigned char *texto, unsigned char longitud);
- void Setup (void);
- //********************** Funciones extras ********************************
- void Function1(unsigned char *texto, unsigned char longitud) //
- {
- //el Segundo parámetro podría eliminarse por longitud=sizeof(texto);
- for (unsigned char i = 0; i < longitud; i++)
- var5[i] = *(texto + i); //
- var5[longitud] = 0x0A; //
- var5[longitud+1] = 0x0D; //
- var6 = 0; //
- var7 = longitud+1; //
- PIE3bits.TXIE = 1; //
- }
- void Setup (void)
- {
- //Oscilador interno configurado para
- OSCCON1 = 0x60;
- OSCCON3 = 0x00;
- OSCEN = 0x00;
- OSCFRQ = 0x02; //
- OSCTUNE = 0x00;
- /** Puerto A:
- LATA = 0x00;
- TRISA = 0x10;
- ANSELA = 0x10;
- WPUA = 0x00;
- ODCONA = 0x00;
- //Puerto C:
- LATC = 0x00;
- TRISC = 0xFE;
- ANSELC = 0xFC;
- WPUC = 0x00;
- ODCONC = 0x00;
- // Rx y Tx PPS: Tx en RC0 y Rx en RC1*********************************************
- RC0PPS = 0x10; //RC0->EUSART:TX;
- RXPPSbits.RXPPS=0x11;//RC1->EUSART:RX;
- //
- T0CON1 = 0x4C; //
- TMR0H = CONSTANT1; //
- TMR0L = 0x00; //
- PIR0bits.TMR0IF = 0;//
- PIE0bits.TMR0IE = 0;//
- T0CON0 = 0x00; //
- //ADC Configuración ****************************************************
- ADCLK = 0x03;
- ADCON0 = 0x04;
- ADCON2bits.ADMD = 0x0;//
- ADREF = 0x00; //
- ADPCH = 0x04; //
- ADACQ = 0; //
- ADACT = 0x02; //
- ADCON0bits.ADON=1;
- PIR1bits.ADIF = 0; //
- //EUSART ***************************************************************
- PIE3bits.RCIE = 0; //
- PIE3bits.TXIE = 0;
- BAUD1CON = 0x08; //
- RC1STA = 0x90; //
- TX1STA = 0x24; //
- //
- SP1BRGL = 0x67; //
- SP1BRGH = 0x00; //
- }
- void __interrupt() RAIs (void) //Habrá interrupciones por:
- {
- unsigned char caracter = 0;
- uint8_t i=0;
- // interrupt handler
- if(INTCONbits.PEIE == 1)
- {
- if(PIE3bits.RCIE == 1 && PIR3bits.RCIF == 1) //
- {
- PIE3bits.RCIE == 0; //leemos char y almacenamos en carácter
- if (OERR) // check for Error
- {
- CREN = 0; //Si error -> Reset
- CREN = 1; //Si error -> Reset
- }
- while(!RCIF); //Espera a que el buffer de RX esté libre
- caracter = RC1REG; //Se recibe el carácter desde buffer
- switch (caracter)
- {
- case '1':
- Function1("Modo captura", 12);
- PIR0bits.TMR0IF= 0; //
- PIR1bits.ADIF = 0; //
- PIE1bits.ADIE = 1; //
- T0CON0bits.T0EN= 1; //
- break;
- case '2':
- Function1("Modo apagado", 12);
- PIE0bits.TMR0IE=0; //
- T0CON0bits.T0EN=0; //
- break;
- }
- PIE3bits.RCIE == 1; //
- }
- else if ((PIE3bits.TXIE == 1) && (PIR3bits.TXIF == 1))//
- {
- PIE3bits.TXIE = 0;
- TX1REG = var5[var6]; //
- var6++; //
- if (var7 > var6)
- {
- PIE3bits.TXIE = 1;
- }
- }
- else if (PIE1bits.ADIE == 1 && PIR1bits.ADIF == 1) //
- {
- PIR1bits.ADIF = 0; //
- var1[var2] = (ADRESH << 8) + ADRESL;//
- var2++; //
- if (var2>3) //
- var2 = 0; //
- var3 = 0; //
- for (int i = 0; i<4; i++)
- var3 += var1[i]; //
- var3 = var3 >> 2; //
- } // del else if
- } // del primer if (PEIE)
- } // de la función RAI()
- /* Main application********************************************************/
- void main(void)
- {
- Setup(); //
- PIE3bits.TXIE = 0; //
- PIE3bits.RCIE = 1; //
- INTCONbits.GIE = 1; //
- INTCONbits.PEIE = 1; //
- Function1("Configuracion OK", 16); //
- while (1)
- {
- if (var3 != 0) //
- {
- if (var3 < CONSTANT2) //
- {
- Function1("Alarma: muy baja", 16);
- LATA=0x01;
- }
- else if (var3 > CONSTANT3) //
- {
- Function1("Alarma: muy alta", 16);
- LATA=0x04;
- }
- else if ((var3<CONSTANT3) && (var3>CONSTANT2)) //
- {
- Function1("En rango", 8);
- LATA=0x02;
- }
- var3 = 0; //
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement