打印
[PIC®/AVR®/dsPIC®产品]

PIC16F1503读写自身flash的范例程序

[复制链接]
6117|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的,其实官网有应用笔记,去搜搜

使用特权

评论回复
5
ninicaoyuan| | 2014-10-18 16:15 | 只看该作者
刚找到的,就是没使用内部EEPROM原函数

13_EEPROM.zip

117.85 KB

使用特权

评论回复
6
ninicaoyuan| | 2014-10-18 16:16 | 只看该作者
是官网给的

使用特权

评论回复
7
wuhenyouyu| | 2014-10-18 19:21 | 只看该作者
我这有18f的源程序,并调试通过,就是照着数据手册上写的,数据手册说的很清楚!

使用特权

评论回复
8
ninicaoyuan| | 2014-10-20 15:32 | 只看该作者
那发一个看看吧

使用特权

评论回复
9
wxrbjrx| | 2014-10-21 16:48 | 只看该作者
ninicaoyuan 发表于 2014-10-18 16:15
刚找到的,就是没使用内部EEPROM原函数

你这个是写flash的吗?

使用特权

评论回复
10
sky04043612| | 2014-10-21 22:07 | 只看该作者
我有此源代码,如果需要可以跟我联系,有偿提供帮助。

使用特权

评论回复
11
wuhenyouyu| | 2014-10-21 22:27 | 只看该作者
明天吧,明天贴出来!

使用特权

评论回复
12
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++;
        }
}

使用特权

评论回复
13
ninicaoyuan| | 2014-10-23 11:18 | 只看该作者
楼上厉害

使用特权

评论回复
14
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

粉丝