Buenas, les escribo en esta oportunidad para que me ayuden. Monte un circuito en proteus y en placa. Consta de un 16f877a que usara un teclado, lcd, memoria 24c256 y un relog ds1307. estoy probando modulo a modulo y tanto en la placa como en proteus funciona la lcd y el teclado, pero cuando pasé a probar el ds1307, en el proteus funciona pero en la placa no. Tengo desconectada la memoria, y el error da que el circuito se vuelve loco con solo conectar el relog a su base en la placa. le desabilité las instrucciones de configuracion y llamado al relog y sigue dando ese problema. sin embargo al quitar el relog funciona el circuito y vuelve a mostrar los mensajes en la LCD. en el codigo que les coloco abajo se podrán dar cuenta que le desabilité el relog. En proteus el relog arranca, se configura y logro sacar los datos y mostrarlos en pantalla. En el circuito de placa revisé las pistas y están bien. No se si será un problema de codigo el cual el proteus no le interesa pero en la realidad si sirve! estoy comenzando a programar en C. estoy usando i2c y la instruccion #use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3,force_hw) esta en el archivo proyecto.h que se esta incluyendo en el programa.
#include "D:\electronica\practicas\c\proyecto martine\otro\proyecto.h"
#include <LCD.C>
#include <_DS1307.C>
#include <24256.C>
#use fast_io(b)
#use standard_io(c)
#byte portb=0x06
#byte portc=0x07
#define FILA1 PIN_B3
#define FILA2 PIN_B4
#define FILA3 PIN_B5
#define FILA4 PIN_B6
#define COLUMNA1 PIN_B0
#define COLUMNA2 PIN_B1
#define COLUMNA3 PIN_B2
int tecla_pulsada() ESTA INSTRUCCION ES DELE TECLADO Y COMO ES MUY LARGA LA ELIMINE AQUI EN EL FORO
void main()
{
int tecla,hrs,min,sec,day,month,yr,dow,dato;
int16 dir;
set_tris_b(0b00000111);
set_tris_c(0b00000000);
delay_ms(10);
//ds1307_init(DS1307_ALL_DISABLED); // inicialización de relog ds1307
//ds1307_set_date_time(9,8,6,2,18,51,00);
lcd_init();
lcd_putc("\f");
delay_ms(15);
//init_ext_eeprom();
while(true)
{
lcd_putc("\f");
delay_ms(10);
//ds1307_get_time(hrs,min,sec);
//ds1307_get_date(day,month,yr,dow);
printf(lcd_putc,"hola");
delay_ms(1000);
}
}