本人使用的是C8051F060单片机,参考网上查到的写入flash的方法均无法对其自带的flash进行数据写入,本人的读写程序如下:
//对flash进行读操作
void Flash_READ(void) //读flash数据
{
u8 i;
u8 t=10;
u8 code *pread; /*程序存储器空间的指针(Flash),指向待读地址 */
pread=0x0000;
for(i=0;i<t;i++)
chan_shu[i]=*pread++;
}
//对flash进行写操作
void Flash_WRITE(void)
{
u8 xdata *pwrite;/*程序存储器空间的指针(Flash),指向待写地址*/
u8 *pgen; /*一般指针 */
u8 i;
u8 t=10;
EA=0; /*关中断*/
FLSCL |= 0x01; // set FLWE,允许通过用户软件写/擦除FLASH
PSCTL = 0x03; // 将PSWE和PSEE置1MOVX指令对应// 的FLASH页
pwrite = 0x0000; // 将指针指向待擦除页
*pwrite=0; // 用movx指令向待擦除扇区的任何一个地址写入一个数据
PSCTL = 0x01; // 清除PSEEPSWE仍然置1// MOVX指令将写到对应的地址
pgen=&chan_shu[0]; /*将数组值写入Flash中*/
for(i=0;i<t;i++)
{
*pwrite++=*pgen++;
}
PSCTL = 0; // 禁止FLASH写
FLSCL = 0x8f; // 禁止FLASH写
EA=1; /*开中断*/
}
和我上面的有区别吗?