Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
----------Inicio do código----------
#include <htc.h>
#define _XTAL_FREQ 4000000
#define noite COUT
#define red GPIO5
#define green GPIO4
#define buzz GPIO2
__CONFIG (UNPROTECT & PWRTDIS & BORDIS & WDTDIS & MCLRDIS & INTIO);
bit check ()
{
v=0;
f=0;
for (cou nt=0; count<10; count++)
{
if (GPIO3) v=v+1; else f=f+1;
}
if (v>f) return 1; else return 0;
}
void main()
{
//comparador fi cou configurado assim: 0V = 0ºC, 4,6V=100ºC e 0V=0b e 5V=1023b
//
ANSEL=0b0000011; //porta GP0 e GP1 sao entradas analogicas
ADCON0=0b10000001; //justificado a direita, referencia interna (5v), 00 bits inuteis, 00 porta AN0, godone 0, A/D on
CMCON=0b0000010 0; //con figurar comparador porta cin- é GP1
TRISIO=0b001011; //GP1: comparador, GP0: entrada analogica, GP3: entrada digital
VRCON=0b10101000; //referen cia de tensão para o comparador 50%Vdd
OPTION=~GPPU;
GPIO=0; //T=°C-TensãoLM35 -LidoPeloPI C
tmax=565; //60ºC=2,76V=565b
tlow=424; //45ºC=2,07=424b
while (!check()) {;}
//gp3 deve ser pressionado por alguns milisegundos para o programa passar daqui
red=0;
green=1;
delay (5); // tentei funcionalizar o pisca pisca dos led's mas deu muito erro, entao desisti
red=1;
green=0;
delay (5);
green=0;
red=0;
while(1){
------Fim do Código-----
-----Inicio do Codigo-----
#include <htc.h>
#define _XTAL_FREQ 4000000
#define noite 1
#define red GPIO5
#define green GPIO4
#define buzz GPIO2
__CONFIG (UNPROTECT & PWRTDIS & BORDIS & WDTDIS & MCLRDIS & INTIO);
unsigned char n, count, sGP, v, f;
unsigned int T, tmax, tlow;
void delay (unsigned char t)
{
for (cou nt=0;cou nt=t;count++){__delay_ms(100 );}
}
bit check ()
{
v=0;
f=0;
for (cou nt=0; count<10; count++)
{
if (GPIO3) v=v+1; else f=f+1;
}
if (v>f) return 1; else return 0;
}
unsigned int simT ()
{
static unsigned char UpDwnFlag = 1;
static unsigned int n = 0;
if(UpDwnFlag == 1)
{ // temperatura subindo
n+=1;
if(n>=30) U pDwnFlag = 0;
}
else
{ // temperatura descendo
n-=1;
if(n<=0) U pDwnFlag = 1;
}
void main()
{
//comparador fi cou configurado assim: 0V = 0ºC, 4,6V=100ºC e 0V=0b e
5V=1023b
ANSEL=0b0000011; //porta GP0 e GP1 sao entradas analogicas
ADCON0=0b10000001; //justificado a direita, referencia interna (5v), 00 bits inuteis, 00 porta AN0, godone 0, A/D on
CMCON=0b0000010 0; //con figurar comparador porta cin- é GP1
TRISIO=0b001011; //GP1: comparador, GP0: entrada analogica, GP3: entrada digital
VRCON=0b10101000; //referen cia de tensão para o comparador 50%Vdd
OPTION=~GPPU;
GPIO=0; //T=°C-TensãoLM35 -LidoPeloPI C
tmax=565; //60ºC=2,76V=565b
tlow=424; //45ºC=2,07=424b
T=0;
while (!check()) {;}
//gp3 deve ser pressionado por alguns milisegundos para o programa passar daqui
red=0;
green=1;
//delay (5); //tentei funcionalizar o pisca pisca dos led's mas deu muito erro, entao desisti
red=1;
green=0;
//delay (5);
green=0;
red=0;
while(1){
#if (noite) //se for noite (ldr ligado ao comparador)
while ((temp()<tlow)||(!che ck())) //se T esta fora do limite e o botao nao esta apertado
{
buzz=0;
green=1;
// delay (5);
buzz=1;
green=0;
// delay (5);
}
while ((temp()>tma x)||(!check ()))
{
buzz=0;
red=1;
// delay (5);
buzz=1;
red=0;
// delay (5);
}
#endif
#if (!noite)
while ((temp()<tlow)||(!che ck())) //se T esta fora do limite e o botao nao esta apertado
{
green=1;
// delay (5);
green=0;
// delay (5);
}
while ((temp()>tma x)||(!check ()))
{
red=1;
// delay (5);
red=0;
// delay (5);
}
#endif
red=0;
green=0;
buzz=0;
//delay(100); //10 segundos pra resolver o problema da temperatura antes do programa voltar a dar o alarme
}}