Muchas gracias Mauricio..
No habia tenido en cuenta esa información respecto que el oscilador se podia deshabilitar ,
obviamente hice lo que me dijiste y todo marcha a la perfección.
Pero por aqui me surgió otro problema..
Quiero guardar unos datos en la memoria de datos EEPROM del PIC16F877A, seugn entiendo va desde la dirección 00 hasta la 255.
Puedo guardar cosas en la posicion 0, 30 , pero cuando quiero grabar datos en serie desde la 16, solo me graba el primer daato......
los demas no los guarda.....estaré haciendo algo mal?¿
o es que entre grabada y grabada tenbgo que dejarle alguna espera?¿
estas son las rutinas que uso para grabar, las mismas del PDF..
void Escribir_EEPROM(char add, char dato)
{
{
char temp_INTCON;
temp_INTCON=INTCON;
INTCON=0;
set_bit( STATUS, RP0 );
set_bit(STATUS,RP1);
while(EECON1 & b1==1){} //Espera a que una escritura sea finalizada
clear_bit( STATUS, RP0 );
EEADR=add;
EEDATA=dato;
set_bit( STATUS, RP0 );
clear_bit(EECON1,7); //EEPGD
set_bit(EECON1,2); //WREN
EECON2=85;
EECON2=170;
set_bit(EECON1,1); //WR
clear_bit(EECON1,2); //WREN
INTCON=temp_INTCON;
temp_INTCON=INTCON;
INTCON=0;
set_bit( STATUS, RP0 );
set_bit(STATUS,RP1);
while(EECON1 & b1==1){} //Espera a que una escritura sea finalizada
clear_bit( STATUS, RP0 );
EEADR=add;
EEDATA=dato;
set_bit( STATUS, RP0 );
clear_bit(EECON1,7); //EEPGD
set_bit(EECON1,2); //WREN
EECON2=85;
EECON2=170;
set_bit(EECON1,1); //WR
clear_bit(EECON1,2); //WREN
INTCON=temp_INTCON;
}
void Leer_EEPROM(char add)
{
{
set_bit(STATUS,RP1);
clear_bit(STATUS,RP0);
EEADR = add;
set_bit(STATUS,RP0);
clear_bit(EECON1,7);
set_bit(EECON1,0); //RD
clear_bit(STATUS,RP0);
dato_EEPROM=EEDATA;
}
clear_bit(STATUS,RP0);
EEADR = add;
set_bit(STATUS,RP0);
clear_bit(EECON1,7);
set_bit(EECON1,0); //RD
clear_bit(STATUS,RP0);
dato_EEPROM=EEDATA;
}
Intenté con esta otra para ver si funcionaba pero tampoco..
void Escribir_EEPROM(char add, char dato)
{
while (EECON1 & b1==1){} //Esperar a que se complete un cillo de escritura
EEADR=add;
EEDATA=dato;
clear_bit(EECON1,7);
set_bit(EECON1,2);
clear_bit(INTCON,7);
EECON2=85;
EECON2=170;
set_bit(EECON1,1);
set_bit(INTCON,7);
clear_bit(EECON1,2);
EEADR=add;
EEDATA=dato;
clear_bit(EECON1,7);
set_bit(EECON1,2);
clear_bit(INTCON,7);
EECON2=85;
EECON2=170;
set_bit(EECON1,1);
set_bit(INTCON,7);
clear_bit(EECON1,2);
}
Muchas gracias de nuevo por la atención y la ayuda prestada.
Adios