[PIC®/AVR®/dsPIC®产品] PIC16F1503读写自身flash的范例程序

[复制链接]
6713|13
 楼主| zwxhehe2012 发表于 2014-4-17 21:21 | 显示全部楼层 |阅读模式
请教一下:有没有PIC16F1503读写自身flash的范例程序发我一份,非常感谢,自己编写的操作flash的程序不知道怎么回事调不通,非常感谢
ninicaoyuan 发表于 2014-9-24 17:04 | 显示全部楼层
我也遇到 这个问题了,求解决
ninicaoyuan 发表于 2014-10-15 10:45 | 显示全部楼层
我也要处理这个问题,求解决
大头BB 发表于 2014-10-15 10:48 | 显示全部楼层
我有24F的,其实官网有应用笔记,去搜搜
ninicaoyuan 发表于 2014-10-18 16:15 | 显示全部楼层
刚找到的,就是没使用内部EEPROM原函数

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ninicaoyuan 发表于 2014-10-18 16:16 | 显示全部楼层
是官网给的
wuhenyouyu 发表于 2014-10-18 19:21 来自手机 | 显示全部楼层
我这有18f的源程序,并调试通过,就是照着数据手册上写的,数据手册说的很清楚!
ninicaoyuan 发表于 2014-10-20 15:32 | 显示全部楼层
那发一个看看吧
wxrbjrx 发表于 2014-10-21 16:48 | 显示全部楼层
ninicaoyuan 发表于 2014-10-18 16:15
刚找到的,就是没使用内部EEPROM原函数

你这个是写flash的吗?
sky04043612 发表于 2014-10-21 22:07 | 显示全部楼层
我有此源代码,如果需要可以跟我联系,有偿提供帮助。
wuhenyouyu 发表于 2014-10-21 22:27 来自手机 | 显示全部楼层
明天吧,明天贴出来!
wuhenyouyu 发表于 2014-10-22 11:18 | 显示全部楼层
void EEPROM_Busy(void)
{
        while(EECON1bits.WR);
}


unsigned char EEPROM_Read_data(unsigned char address)
{
        EEADR = (address & 0x0ff);
          EECON1bits.CFGS  = 0;
        EECON1bits.EEPGD = 0;
        EECON1bits.RD          = 1;//软件置1,硬件清零
        while(EECON1bits.RD);
        EECON1bits.EEPGD = 1;
        return EEDATA;
}


void EEPROM_Write_data(unsigned char data,unsigned char address)
{
        EEADR                          = (address & 0x0ff);
          EEDATA                          = data;
          EECON1bits.EEPGD = 0;
        EECON1bits.CFGS  = 0;
        EECON1bits.WREN  = 1;
        INTCONbits.GIEH  = 0;
        INTCONbits.GIEL  = 0;
        EECON2                          = 0x55;
        EECON2                          = 0xAA;
        EECON1bits.WR    = 1;//软件置1,硬件清零
        while(EECON1bits.WR);
        EECON1bits.WREN  = 0;
       
        EECON1bits.EEPGD = 1;
        INTCONbits.GIEH  = 1;
        INTCONbits.GIEL  = 1;       
}


void EEPROM_Read(char *data,unsigned char address,unsigned char n)
{
        unsigned char          i=0;
        unsigned char addr=0;
        addr=address;
        for(i=0;i!=n;i++)
        {
                EEPROM_Read_data(addr);
                *data=EEDATA;
                addr++;
                data++;
        }
}

void EEPROM_Write(char *data,unsigned char address,unsigned char n)
{
        unsigned char    i=0;
        unsigned char addr=0;
        addr=address;
        for(i=0;i!=n;i++)
        {
                EEPROM_Write_data(*data,addr);
                addr++;
                data++;
        }
}
ninicaoyuan 发表于 2014-10-23 11:18 | 显示全部楼层
楼上厉害
ninicaoyuan 发表于 2015-7-22 10:56 | 显示全部楼层
void Flash_write( unsigned int ddata_write ,unsigned int address_write) //只能写十四位
{
        Flash_Erasure(address_write);       
        PMADRL=(address_write)&0xff;//提取地址数低八位
        PMADRH=(address_write>>8)&0x1f;//提取地址数高五位       
        PMDATL=(ddata_write)&0xff;//提取数据低八位
        PMDATH=(ddata_write>>8)&0xff;//提取数据高六位
        WREN = 1;
        GIE=0;
        Unlock_Flash();
        WREN=0;
        GIE =1;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

48

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部