各位高人,本人是新手,使用dsPIC30F2010片子,主任让我写一个从EEPROM读写一个字的程

2020-02-08 12:19发布

各位高人,本人是新手,使用dsPIC30F2010片子,主任让我写一个从EEPROM读写一个字的程序,我一个星期未搞定,哭求各位帮忙,我的email:wish_free@163.com,
如果谁能帮我,我愿意与他以友相待,长期交往.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
43条回答
my2009
2020-02-09 20:13
这是一段MCC18编译的PIC18Fxxxx 读写 EEPROM 的例子, 供参考
unsigned char  EEPROM_data;
unsigned int  EEPROM_Read(unsigned char addre, unsigned char lh)
{  unsigned char  i;
         PIR2bits.EEIF    = 0;       // 必需清零中断位
         EECON1bits.EEPGD = 0;       // 选 EEPROM,  不是选FLASH
         EECON1bits.CFGS  = 0;       // 选 EEPROM/程序存储器FLASH, 不是选配置寄存器, 必需要
         EEADR            = addre;   // address
         EECON1bits.RD    = 1;       // start read
         EEPROM_data      = EEDATA;
     PIR2bits.EEIF = 0;
     return(EEPROM_data);
}

void     EEPROM_Write(unsigned char addre, unsigned int data_xx)
{  unsigned int  i, k;
     EECON1bits.EEPGD = 0;     // 选 EEPROM,  不是选FLASH
     EECON1bits.CFGS  = 0;     // 选 EEPROM/程序存储器FLASH, 不是选配置寄存器, 必需要
     IPR2bits.EEIP    = 1;     // 写 EREPROM, 选高级中断
     PIE2bits.EEIE    = 0;     // 关中断
//-----------------------------------------------------
         PIR2bits.EEIF    = 0;     // 写 EEPROM, 必需清零中断位
         INTCONbits.GIEH  = 0;     // 0-->临时关闭所有高优先级中断
         EECON1bits.WREN  = 1;     // enable write
         EEADR            = addre;
         EEDATA           = data_xx;   //PC主机传来的数据
         EECON2           = 0x55;
         EECON2           = 0xaa;
         EECON1bits.WR    = 1;     // start write
         INTCONbits.GIEH  = 1;     // 1-->恢复开通所有高优先级中断
         //PIE2bits.EEIE=1;        // 开中断
         for (k=0; k<65010; k++)  { if (EECON1bits.WR==0) break ; }
         //PIE2bits.EEIE  = 0;     // 关中断
    PIR2bits.EEIF    = 0;     // 必需清零中断位
//-----------------------------------------------------
}

一周热门 更多>