首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

hcs08dz60的FLASH编程和擦除

hcs08dz60的FLASH编程和擦除

请问有谁写过hcs08dz60的FLASH编程和擦除的程序,在编程和擦前应注意什么?
我写的程序数据就是烧录不到FLASH中
请高手看一下我的程序为甚麽不能连续的写入到FLASH指定的地址,只能写一个字节进去
void  WriteToFlash(byte * dest,byt* sour,word length)
{
     word  i;
     while(FSTAT & 0x30);
     FSTAT = 0X30;
     while(!(FSTAT&0X80));
     while(length--)
     {
           *dest = *sour;
          FCMD = 0X20;
          FSTAT = 0X80;
          while(!(FSTAT & 0X80));
          while(!(FSTAT & 0X40))
     }
}

在调试过程中如果单步执行一个自己的数据都写不进去
另外我也看了一些资料,说FLASH的擦写需要调到RAM中去执行,是为什么?
有的程序有asm机器码的是怎么个道理呢?

我也在做bootloader问题多多,郁闷!!已经调了好几天了

有没有高人指点一下呀!~~~~
FSTAT = 0x80;
while(!(FSTAT & 0x80));
asm("RTC");
你先把这3句的机器码找到,存到数组wait[]里(ram),然后在"FCMD = 0X20"后, 用asm("JSR wait")。
3楼说的很对,RAM中运行的机器码为
UINT8 code_buf[]=
{
0xc6,0x18,0x25,0xaa,0x80,0xc7,0x18,0x25,0xc6,0x18,0x25,0xa5,0x40,0x27,0xf9,0x81
};
0x81是RTS指令,不是RTC指令,在64K范围内跳转应该使用RTS就可以了,如果超过64K就必须用RTC了,
顶一把,我也不知道什么意思,从没刷机过
"9RIA天地会"官方合作
返回列表