Está en la página 1de 8

PREGUNTA NUMERO 2

XY=49

xTal=24MHz

Mensaje:#PC5#

Velocidad==(5)(11)(49)=2695

Velocidad minima =4800

U1BRG=(FCY/16*Baudios)-1

U1BRG=(24MHz/16*4800)-1

U1BRG=311

#include "reloj.h"

#include <libpic30.h>

#include <xc.h>

#include "p33FJ32GP204.h"

#include "config.h"

#include "xlcd.h"

#include <stdio.h>

void UART_init(void);

void WriteUART1(unsigned int data);

int main(void) {

UART_init();
while(1)

return 0;

void UART_init(void)

RPOR6=3;//Por RP12 sale el valor de TX

U1BRG=311; //baudrate=4800 baudios

U1MODEbits.PDSEL=0; // 8bits, no paridad

U1MODEbits.STSEL=0; // 1 bits de stop

U1MODEbits.UARTEN=1; // habilito UART

U1STAbits.UTXEN=1; //habilito TX

void WriteUART1(unsigned int data)

while(U1STAbits.UTXBF);

if(U1MODEbits.PDSEL==2)

{U1TXREG = data;}

else

{U1TXREG = data & 0x00ff;}

}
PREGUNTA NUMERO 3
#include "reloj.h"

#include <libpic30.h>

#include <xc.h>

#include "p33FJ32GP204.h"

#include "config.h"

#include "xlcd.h"

#include <stdio.h>

void UART_init(void);

void WriteUART1(unsigned int data);

void ADCinit(void);

void __attribute__((interrupt,auto_psv)) _U1RXInterrupt(void);

unsigned int DataRCV=0;

unsigned char FlagRX;

int main(void) {

char array[5];

int vol_dig;

float vol_an;
float temp;

ADPCFG=0xffff;

TRISB=0x00;

TRISC=0xff;

UART_init();

XLCDInit();

ADCinit();

putrsXLCD("BUENAS TARDES");

while(1)

AD1CON1bits.SAMP=1;

__delay_ms(10);

AD1CON1bits.SAMP=0;

while(!AD1CON1bits.DONE);

vol_dig=ADCBUF0;

vol_an=((5-0)/1023.0)*vol_dig;

temp=vol_an*100;

if(FlagRX==1)

{ //XLCDgotoXY(0,0);

if(DataRCV=='T' | DataRCV=='t' )

if(temp>30)

{XLCDgotoXY(0,0);

putrsXLCD("TEMPERATURA");

XLCDgotoXY(1,0);

putrsXLCD("ALTA");

if(temp<30)
{XLCDgotoXY(0,0);

putrsXLCD("TEMPERATURA");

XLCDgotoXY(1,0);

putrsXLCD("BAJA");

FlagRX=0;

__delay_ms(4000);

WriteCmdXLCD(CLEAR_XLCD);

return 0;

void UART_init(void)

RPINR18bits.U1RXR=20;

U1BRG=64;

U1MODEbits.PDSEL=0;

U1MODEbits.STSEL=0;

U1STAbits.URXISEL=0;

//configuración de interrupción:

IFS0bits.U1RXIF=0; //borro flag de RX

IEC0bits.U1RXIE=1; //habilito interrupción

IPC2bits.U1RXIP=7;
//habilito módulo UART:

U1MODEbits.UARTEN=1;

void __attribute__((interrupt,auto_psv)) _U1RXInterrupt(void)

{ FlagRX=1;

DataRCV=U1RXREG;

IFS0bits.U1RXIF=0;

void ADCinit(void)

{ AD1CON1bits.AD12B=0;

AD1CON2bits.VCFG=0;

ADPCFG=0xfffe;// AN0 es analógico

AD1CHS0bits.CH0SA=0x00;

AD1CHS0bits.CH0NA=0;

AD1CON3bits.ADCS=3;

AD1CON1bits.ASAM=0;

AD1CON1bits.SSRC=0;

AD1CON1bits.ADON=1;

void WriteUART1(unsigned int data)

while(U1STAbits.UTXBF);

if(U1MODEbits.PDSEL==2)

{U1TXREG = data;}

else

{U1TXREG = data & 0x00ff;}


}

void putrsUART1(const char *buffer)

while(*buffer)

WriteUART1(*buffer);

buffer++;

También podría gustarte