Hola tengo un 16877a que simulado funciona correctamente, pero al probarlo en la realidad no hace lo que debería así que os pregunto qué puede ser que tenga mal? A mi entender es cuestion o de fuses o de configuración. He leído que la RA4 es open drain así que si yo la tengo como entrada haría falta poner algo en la configuración o físicamente un pull up? o eso es sólo para cuando sea salida?
#include <16F877A.h> //libreria para el manejo del pic16f877a
#use delay(clock=12000000) //declara la frecuencia del cristal
#include <string.h> //para usar los string (textos)
#include <stdlib.h> //biblioteca estándar de propósito general
#fuses HS,PUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT,NOWRT //palabra de configuración PUESTO "--"PUT Y NOWRT
#use standard_io(a) //Esta directiva afecta al código que el compilador genera para las instrucciones de entrada
#use standard_io(b) // y salida. El método standar de hacer I/O causará que el compilador genere
#use standard_io(c) //código para hacer que un pin de I/O sea entrada o salida cada vez que se utiliza
#use standard_io(d)
#use standard_io(e)
#define use_portb_lcd TRUE //utiliza el port b para lcd
#include <ds1307mod.c> //libreria ds1307 modificada
#include <flex_lcd.c> //libreria de lcd
void main(void){
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_counters(RTCC_INTERNAL,RTCC_DIV_256); //configuracion interrupcion TMR0
/*setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);*/
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_tris_a (0xff); //configuramos los puertos
set_tris_d (0x01);
set_tris_b (0x00);
set_tris_c (0x00);
set_tris_e (0xff);
output_low(PIN_D6);
output_low(PIN_D7);
Como véis tengo dudas en la configuración está puesta correctamente? Necesitaré cai todo los pines y lo único que empleo son entradas, salidas, una LCD en el B y el I2C para el DS1307. Vuelvo a preguntar, hay algo mal en la configuración? En setup de los timers si utilizo el timer0, qué pongo? esto?
setup_timer_0(RTCC_INTERNAL,RTCC_DIV_256); //configuracion interrupcion TMR0
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);*/
Está bien especificado el 0 para mi temporización que no puse el código y los otros deshabilitados?
Espero que alguien con experiencia me aconseje sobre la configuración en la realidad para este pic ya que dispongo de poco tiempo. Muchísimas grácias y si hay algo que no tenga en cuenta háganmelo saber