Autor Tema: eempron interna 16f873a  (Leído 1642 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kikecon

  • PIC10
  • *
  • Mensajes: 35
eempron interna 16f873a
« en: 29 de Enero de 2010, 15:13:36 »
hola como estan todos nuevamnte estoy por aki en el foro para hacer laconsulta siguiente he hecho la logica para grabar y escribir en la eeprom interna de un pic 16f873a al momento de hacer correr el programita me sale error no se porque pero el wrew me lo muestra como error ojala me puedan ayudar aki les mando lo que tengo en avance ojo los prototipos los pongo en la .H del programa es po eso que no se leen pero por ahi no pasa el problema trabajo con sourceboost c espero sus comentarios

//pragma_CONFIG_XT_OSC &_WDT_OFF &_PWRTE_ON &_CP_ON &........
//pragma 0x2100 123,0xC2\SOURCE BOOST\INCLUDE PIC 16F873A //EEPROM INTERNO
#include "eeprom.h"

void main()
{
   eeprom_write(0x01,123);
   eeprom_write(0x03,0xC2);
   
   var1=eeprom_read(0x01);
   var1=eeprom_read(0x03);
}

void interrupt()
{
}

void init()
{
}

char eeprom_read(char address)
{
   eeadr=address;            //puntero
   eecon1.EEPGD=0;
   eecon1.RD   =1;
   return eedata;
}
void eeprom_write(char address, char data)
{
   while(eecon1.WR==1);                      //esperar hasta que termino escritura anterior
   eeadr=address;            //puntero      
   eedata=data;            //puntero
   eecon1.EEPGD=0;
   eecon1.WREW=1;            //habilitar escritura
   intcon.GIE=0;            //bloquear interrupcion por seguridad: se puede perder la escritura
   //secuencia magica   
   eecon2=0x55;
   eecon2=0xAA;
   eecon1.WR=1;            //activar la escritura
   eecon1.WREW=0;            //bloquear escritura
   intcon.GIE=1;            //habilitar interrupciones
}
 
Enrique Contreras R.

Desconectado kikecon

  • PIC10
  • *
  • Mensajes: 35
Re: eempron interna 16f873a
« Respuesta #1 en: 01 de Febrero de 2010, 21:47:43 »
bueno veo que nadie me pudo ayudar con el problema que estaba viendo y en realidad era algo de escritura y que chequeando bien el verdadero datasheet del pic se puede solucionar para algun interesado dejo la logica del pic espero le sirva a alguien. OJO el compilador es sourceboost c

//////////////////EEPROM INTERNA DEL 16F873A////////////////////////////

#include <system.h>
#include "eeprom.h"

char eeprom_read(char);
void eeprom_write(char, char);
void interrupt(void);
void init(void);

void main()
{
   char var1;
   eeprom_write(0x01,123);         //escribe en la direccion 0x01 el dato 123
   eeprom_write(0x03,0xC2);      //escribe en la direccion 0x03 el dato0xc2
   
   var1=eeprom_read(0x01);         //lee lo que se encuentra en la direccion 0x01
   var1=eeprom_read(0x03);         //lee lo que se encunetra en la direccion 0x03
}

void interrupt()
{

}

void init()
{

}

char eeprom_read(char address)
{
   eeadr=address;            //puntero
   eecon1.EEPGD=0;
   eecon1.RD   =1;
   return eedata;
}
void eeprom_write(char address, char data)
{
   while(eecon1.WR==1);      //esperar hasta que termino escritura anterior
   eeadr=address;            //puntero      
   eedata=data;            //puntero
   eecon1.EEPGD=0;   
   eecon1.WREN=1;            //habilitar escritura
   intcon.GIE=0;            //bloquear interrupcion por     seguridad: se puede perder la escritura
   ///////////////////////////////////////////////////
   /////////////////secuencia magica/////////////////   
   /////////////////////////////////////////////////
   eecon2=0x55;
   eecon2=0xAA;
   eecon1.WR=1;            //activar la escritura
   intcon.GIE=1;            //habilitar interrupciones   
   eecon1.WREN=0;            //bloquear escritura
   
}
Enrique Contreras R.