Escolar Documentos
Profissional Documentos
Cultura Documentos
c 14/09/2022 15:11:48
//DECLARAÇÃO DE VARIÁVEIS
unsigned char cnt; //Declaração de Variável "cnt" GLOBAL
unsigned char ALARME = 0; //Declaração de Variável "ALARME" GLOBAL
unsigned char CENTRAL_ON = 0; //Declaração de Variável "CENTRAL_ON" GLOBAL
unsigned char DADO_RECEBIDO; //Declaração de Variável "DADO_RECEBIDO" GLOBAL
//TRATAMENTO DE INTERRUPÇÃO
void interrupt(){
if(PIR1.TMR1IF==1){ //INTERRUPÇÃO DO TIMER1
if(cnt > 8){ // 2->500ms, 4->1000ms, 8-> 2000ms, etc
PORTD.RD0=~PORTD.RD0; //INVERTE NL RD0
cnt = 0;
ALARME = 1;
}
cnt++; //INCREMENTA "cnt" PARA CONTROLE DO TEMPO
TMR1L=0xDC; //Carga Inicial para 250 mseg
TMR1H=0x0B;
PIR1.TMR1IF=0; //Apaga o flag de sinalização do TIMER1
}//End “if(PIR1.TMR1IF==1)”
}//End "void interrupt()"
//SETUP DO MICROCONTROLADOR
void ConfigMCU(){
RCSTA.SPEN = 0; // Desliga a porta serial (ligada pelo bootloader).
ADCON1=0X07; //Configura todos os pinos para I/O Digital
UART1_INIT(9600);
INTCON.GIE = 1; //HABILITA CHAVE GERAL DAS INTERRUPÇÕES
INTCON.PEIE = 1; //HABILITA CHAVE DOS PERIFÉRICOS DAS INTERRUPÇÕES
PIE1.TMR1IE = 1; //HABILITA INTERRUPÇÃO DO TIMER1
TRISB = 255;
PORTB = 255;
TRISD = 0;
PORTD = 0B00000001;
}
void ConfigTimer1(){
//Programação do TIMER1(16 bits)
T1CON=0B00110100; // TIMER1 no modo Timer; Prescaler 1:8
TMR1L=0xDC; //Carga Inicial para 250 mseg
TMR1H=0x0B;
PIR1.TMR1IF=0; // Apaga o flag de sinalização do TIMER1
T1CON.TMR1ON = 0; // TIMER1 Off
void main() {
ConfigMCU(); //Chama função "ConfigMCU()"
ConfigTimer1(); //Chama função "ConfigTimer1()"
while(1){
if (UART1_Data_Ready() == 1) { //Testa o Recebimento de Dados
DADO_RECEBIDO = UART1_Read(); //Armazena dado recebido
UART1_WRITE_TEXT("\r\n"); //Quebra Linha
}