Buenas amigos de foro:
bueno programe un reloj con ds1307 y pic 16f877a y muestra en la lcd normalmente pero necesito encender un led cuando llegue a los 11 minutos adjunto el codigo y como lo intente hacer resaltado para que me puedan ayudar, gracias de antemano cualquier colaboracion.
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit Soft_I2C_Scl at RC3_bit;
sbit Soft_I2C_Sda at RC4_bit;
sbit Soft_I2C_Scl_Direction at TRISC3_bit;
sbit Soft_I2C_Sda_Direction at TRISC4_bit;
unsigned char segundos, segundos10, minutos, minutos10, horas, horas10, date, date10, mes, mes10, year, year10, day;
unsigned int dato,Temp,baja,alta;
float tem;
char txt[16];
//char txt1[16];
void conversor(){
dato=ADC_Read(0);
delay_mS(250);
tem=0.244*dato;
Temp=tem;
//portb=dato;
baja=dato&0xff;
alta=(dato>>

&0x03;
}
void transmisor(){
UART1_write(baja);
UART1_write(9);
UART1_write(alta);
UART1_write(13);
UART1_write(10);
}
void Write_value(char address, char data_){
Soft_I2C_Start();
Soft_I2C_Write(0XD0);//id para escribir 0XD0 para leer es 0XD7
Soft_I2C_Write(address); //direccion de memoria
Soft_I2C_Write(data_); //datos a ingresar
Soft_I2C_Stop();
}
void reiniciar(){
Write_value(0,0X00);//segundos
Write_value(1,0X00);//minutos
Write_value(2,0X00);//horas
Write_value(3,0X00);//day
Write_value(4,0X00);//date
Write_value(5,0X00);//mes
Write_value(6,0X18);//year
Write_value(7,0X00);//control de 1 Hz para config 32678 Hz
Lcd_Out(1,6,": :"); //hora
Lcd_Out(2,1,"Dia:"); //fecha
}
void display(){
segundos10=(segundos & 0x70)>>4;
segundos = segundos & 0x0F;
if(segundos10>=0x02&&segundos>=0x9){
PORTB.F1=1;
Delay_ms(5000);
PORTB.F1=0;
Delay_ms(5000);
}
if(segundos10>=0x01&&segundos>=0x08){
PORTB.F1=1;
Delay_ms(5000);
PORTC.F1=0;
Delay_ms(5000);
}[/color]
minutos10=(minutos & 0x70)>>4;
minutos = minutos & 0x0F;
horas10=(horas & 0x30)>>4;
horas = horas & 0x0F;
date10=(date & 0x30)>>4;
date = date & 0x0F;
mes10=(mes & 0x10)>>4;
mes = mes & 0x0F;
year10=(year & 0x0F)>>4;
year = year & 0x0F;
Lcd_Chr(1,11,segundos+48);
Lcd_Chr(1,10,segundos10+48);
Lcd_Chr(1,8,minutos+48);
Lcd_Chr(1,7,minutos10+48);
Lcd_Chr(1,5,horas+48);
Lcd_Chr(1,4,horas10+48);
Lcd_Chr(2,9,date+48);
Lcd_Chr(2,8,date10+48);
}
void main(void) {
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Soft_I2C_Init();
Write_value(0,0X00);//segundos
Write_value(1,0X00);//minutos
Write_value(2,0X00);//horas
Write_value(3,0X00);//day
Write_value(4,0X00);//date
Write_value(5,0X00);//mes
Write_value(6,0X18);//year
Write_value(7,0X00);//control de 1 Hz para config 32678 Hz
Lcd_Out(1,6,": :"); //hora
Lcd_Out(2,3,"Dia:"); //fecha
ADCON1=0b11000001;
ADC_Init();
UART1_Init(57600);
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
TRISB.F1=0;
PORTB.F1=0;
while(1){
Delay_us(1000);
PORTC.F0=0;
Delay_us(19000);
Soft_I2C_Start();
Soft_I2C_Write(0xD0); //id
Soft_I2C_Write(0);//posicion 0
Soft_I2C_Start();
Soft_I2C_Write(0xD1);
segundos=Soft_I2C_Read(1);//leer segundos
minutos=Soft_I2C_Read(1);//leer minutos
horas=Soft_I2C_Read(1);//leer horas
day=Soft_I2C_Read(1);//leer dias
date=Soft_I2C_Read(1);//leer date
mes=Soft_I2C_Read(1);//leer meses
year=Soft_I2C_Read(0);//leer año
Soft_I2C_Stop();
display();
conversor();
transmisor();
intToStr(Temp,txt);
Lcd_Out(2,11,txt);
Lcd_Out(2,10,"T");
delay_mS(500);
}
}