hola que tal necesito ayuda para poder hacer funcionar todo eso LCD_I2C_2 displays de 7 segmentos y comunicacion serial con el 16f876
de echo ya tengo el programa hecho pero no tengo ninguna interrupcion, todo corrido.
lo cual no soy muy bueno en interrupciones necesito que me envie datos serialmente y multiplexee los displays sin problema .. a y ke el I2C de un Ds1307 se muestre en el LCD
haber si me pueden ayudar a estructurar mi programa para que funcione ..
Help ...
Les dejo mi codigo ..
#include <LCD.c>
#byte portc = 0x07
#define ds_seconds 0x00
#define ds_minutes 0x01
#define ds_hours 0x02
#define ds_day 0x03
#define ds_date 0x04
#define ds_month 0x05
#define ds_year 0x06
#define ds_control 0x07
#define MULT1 PIN_C1
#define MULT2 PIN_C3
int16 time,lm35,retardo=250;
int8 data,unidad,decena;
//Dato en registro ds, a mandar o leer
int seconds,minutes,hours,day,date,month,year,control;
void ds1307(void);
void multiplex(void);
void main()
{
set_tris_c(0x00);
SETUP_ADC_PORTS(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_2(T2_DIV_BY_4,249,1); // Timer2 a ikhz
setup_ccp1(CCP_PWM);
set_adc_channel(0);
seconds= 0x00;
minutes= 0x30;
hours = 0x17;
day = 0x04;
date = 0x08;
month = 0x06;
year = 0x11;
control= 0x00;
delay_ms(retardo);
i2c_start();
i2c_write(0xd0);
i2c_write(ds_seconds);
i2c_write(seconds);
i2c_write(minutes);
i2c_write(hours);
i2c_write(day);
i2c_write(date);
i2c_write(month);
i2c_write(year);
i2c_write(control);
i2c_stop();
lcd_init();
lcd_putc("\f");
lcd_putc("Temp: \n");
lcd_gotoxy(13,1);
lcd_putc("oC");
while(TRUE)
{
delay_ms(retardo);
i2c_start();
i2c_write(0xd0);
i2c_write(ds_seconds);
i2c_stop();
i2c_start();
i2c_write(0xd1);
seconds = i2c_read();
minutes = i2c_read();
hours = i2c_read();
day = i2c_read();
date = i2c_read();
month = i2c_read();
year = i2c_read(0);
i2c_stop();
time = read_adc();
lm35 = time/10.23;
time = time*0.97752;
set_pwm1_duty(time);
set_timer2(0);
//delay_ms(200);
data = lm35;
unidad = data%10;
decena = data/10;
printf("%Lu",lm35);
multiplex();
lcd_gotoxy(7,1);
printf(lcd_putc," ");
printf(lcd_putc,"%Lu",lm35);
lcd_gotoxy(1,2);
printf(lcd_putc,"%2x-%2x-20%2x %2x:%2x:",date,month,year,hours,minutes); //xxx.x °C
}
}
void multiplex(void)
{
portc=decena*16;
output_high(MULT1);
delay_ms(15);
output_low (MULT1);
delay_ms(15);
portc=unidad*16;
output_high(MULT2);
delay_ms(15);
output_low(MULT2);
delay_ms(15);
}
espero alguien me pueda ayudar .
saludos