preciso programar um relogio em tempo real com alarme so que nao sei como devo encaixar a programaçao do alarme alguém ai pode me ajudar?
LEMBRANDO QUE o ALARME DEVE SER ACIONADO QUANDO PULSAR B3.ESTOU ULTILIZANDO também O DISPLAY DE LCD 16X2
segue abaixo meu codigo:
#include <p18f4520.h> //bibiblioteca do PIC18f4550
#include <stdio.h> //bibilioteca de entradas e saídas
#include <delays.h> //Adiciona a bibilioteca de funcões do delay
#include <adc.h> //Adiciona a bibilioteca de funções para o conversor A/D
#include <timers.h> //Adiciona a bibilioteca de funções do timer
#include "lcd_lib.h" // lib.lcd
#pragma config OSC = HS //Oscilador e cristal 20Mhz
#pragma config PWRT = ON //Power Up Time Enable
#pragma config BORV = 1 //tensão do BOR é 4,33v
#pragma config WDT = OFF //Desabilita o Watchdog Timer
#pragma config PBADEN = OFF //RB0:RB4 I/O Digital
#pragma config LVP = OFF //ICSP. Low power programming Digital
#pragma config LPT1OSC = ON //programado pra operar no modo Low-power
#define B1 PORTBbits.RB0
#define B2 PORTCbits.RC0
#define B3 PORTAbits.RA4
char lcd[17];
unsigned char conta_100ms =0 , segundo ,minuto ,hora ;
void ISR_alta_prioridade(void); //Protótipo da função de interrupção
#pragma code int_alta=0x08 //Vetor de interrupção de alta prioridade
void int_alta(void)
{
_asm goto ISR_alta_prioridade _endasm //Desvia o programa para a função ISR_alta_prioridade
}
#pragma code
#pragma interrupt ISR_alta_prioridade
void ISR_alta_prioridade(void)
{
WriteTimer1(40535);
if(PIR1bits.TMR1IF){
conta_100ms++;
PIR1bits.TMR1IF = 0;
}
if(conta_100ms == 10){
segundo++;
conta_100ms = 0;
}
if(segundo==60)
{
minuto++;
segundo = 0;
if(minuto==60)
{
hora++;
minuto =0;
if(hora==24)
hora=0;
}
}
}
void main (void)
{
TRISA = 0x00;
TRISB = 0x01;
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00;
ADCON1 = 0x0F;
OpenTimer1(TIMER_INT_OFF
&T1_8BIT_RW
&T1_SOURCE_INT
&T1_OSC1EN_ON
&T1_SYNC_EXT_OFF
&T1_PS_1_1);
PORTD = 0x00;
PORTE = 0x00;
Delay10KTCYx(100);
PIR1bits.TMR1IF = 0;
IPR1bits.TMR1IP = 1;
PIE1bits.TMR1IE = 1;
InitLCD();
while(1){
ComandoLCD (0x81); //posiciona o cursor linha 1 coluna
sprintf(lcd,"REAL TIME CLOCK"); //Envia a msg para o vetor
putsLCD(lcd); // posiciona o cursor linha 2 coluna 4
ComandoLCD(0xC3);
sprintf(lcd,"%02d:%02d:%02d",hora,minuto,segundo); //Envia a mensagem para o vetor
putsLCD(lcd);
RCONbits.IPEN = 1;
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;
TMR1H = 0x80;
TMR1L = 0x00;
}
Delay10KTCYx(100);
}