C8051F060 写FLASH问题
唉 纠结这个单片机的FLASH读写快一个星期了..痛苦不堪...先上代码
void FLASH_write( unsigned int dec_addr,unsigned char *scr_buff ,unsigned int len ){ unsigned int i; unsigned char xdata *pwrite ; char SFRPAGE_SAVE= SFRPAGE; SFRPAGE= 0x00; EA = 0; // 禁止中断 pwrite = (unsigned char xdata *)dec_addr; //初始化地址 FLACL |= 0x80 ; //解锁0x8000--0xFFFF存储器块,可以通过JTAG接口进行读操作 FLSCL |= 0x01; // set FLWE,允许通过用户软件写/擦除FLASH PSCTL |= 0x02; // set PSEE,允许FLASH擦除 PSCTL |= 0x01; // 使MOVX写指令指向FLASH,允许写 *pwrite = 0x55; // 用movx指令向待擦除扇区的任何一个地址写入一个数据 [color=#FF0000]PSCTL &= ~0x02; //clr PSEE, 禁止擦除[/color] for( i=0;i<len;i++) // 向被擦除页内的期望地址写入一个数据字节。重复该步,直到写完所有字节 { *pwrite++ = *scr_buff ++; } PSCTL &= ~0x01; // 清除PSWE位,使MOVX命令指向XRAM数据空间 FLSCL &= ~0x00 ; // 禁止通过用户软件写/擦除flash EA = 1; // 重新允许中断 SFRPAGE=SFRPAGE_SAVE;}