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

求助,908LJ12的片内FLASH在线编程作为EPROM用

求助,908LJ12的片内FLASH在线编程作为EPROM用

采用LJ12的片内的监控程序,在用户模式下 将片内的FALSH做为EPROM用为什么不成功呢?请大家帮忙~我的程序大致如下
定义数据快
BUS_SPEED DS 1; 总线速度 $20
DATA_SIZE  DS  1;数据个数 $0C
FLASH_ADR DS 2: FLASH 目标地址 $EC00
DATA BUF   DS  N; 要读 写操作的RAM 块数据 12个

程序好后 LDHX  #BUS_SPEED
             JSR    FC00;写
         JSR   FC03;读 但是好象数据无法读 CPU一直复位 写操作好象没复位 但是由于无法读 也不知道写得对不对 请大家分析
1、先擦后写
2、把要写入的FLASH地址放在0x8000开始的地方试试
3、要把FLASH保护寄存器打开哦
哦 能说些具体的嘛~
我明天到实验室再测试啊 搞了1-2天了 问题还没解决啊
jalon:
   呵呵,一看就知道你的名字
  不要去调用内部的程序,可能其本身地址就有问题。
签名: 最多300字节 文字将出现在您发表的文章的结尾处。体现您的个性。
内部的程序没问题, 试一下以下的程序. 你须先把EEPROM数据放在Data Array 内.

* RAM Profile Memory allocation during EEPROM
* $0080      --         Speed
* $0081      --         Datasize
* $0082      --         BeginAdd
* $0083      --         BeginAddL
* $0084 - $00C3    DataArray
* $00C4      --         chksum

EE_Write                equ        $FC00


mov        #32,Speed          ; 8M bus
        mov        #$10,DataSize
        ldhx        #$EF00
        sthx        StartingAddH
                sta           $FFFF           ; clear COP
        ldhx        #$0080          ; File_ptr
        jsr        EE_Write        ; write data to $EF00 ~ $EF1F
请问 楼上的
你的数据DATA SIZE的大小好象不对啊~还有 开RAM的单元好象也很大啊~
另外 FILE——PTR一定要在 0080的地方吗?
0080是RAM的起始地址,你的程序应该从这里开始运行
签名: 最多300字节 文字将出现在您发表的文章的结尾处。体现您的个性。
晕了,今天翻起LJ12的资料。。。
监控ROM中擦写的子程序入口是:0xFCBE(Program a range of locations)
烧录的子程序入口是:0xFC06(Erase a page or the entire array)
你调用这两个子程序就可以了,我这边都做成功了
FC00是Emulated EEPROM write呀,不能实现FLASH的写入
OCEANX, 我想用FLASH存一些不丢失的系数
然后程序上电调用这些系数,该调用那些程序啊
几天测试下来怎么都不成功啊~
用FC06测试写 数据程序好象能运行
但是上电调用写的FLASH系数(用FF30) 好象程序一直同不过啊
先擦写啊调用0xFCBE,再烧录0xFC06
其他那些子程序就不需要了。
你的主程序需要写入参数到Flash里面的时候就调用0xFCBE和0xFC06,需要读的时候用些指针指向这些Flash单元,就可以读回值了。
我看到MOTO的1个LJ12设计电表的例子 可以调用 EPREAD $FC03 和EPWRITE $FC00可以实现,而我在程序中总是无法读写 程序一运行到调用1快 就复位 不知道为什么啊 郁闷了几天 还是没搞定啊 做个实验的帮助贴下啊
先把COP (WATCHDOG) 关掉试试吧。
海纳百川  有容乃大
oceanx的方式也可以采用。
jalon的地址也是对的,这两个都是可以用的,只是jalon的代码有问题。

LDHX #BUS_SPEED
这一句是把BUS_SPEED所在的地址放到HX寄存器里面。

LDHX BUS_SPEED
这一句是把BUS_SPEED地址里面的内容,即bus speed具体的数字放进hx里面

应该用后面一句来运行程序
不对啊
应该用地址方式调用的 手册上写得很清楚啊
我把程序拷贝给大家 看看 不知道为什么程序执行到那里 单片机就复位啊
定义 FILEPTR:
BUS_SPEED
DATA_SIZE
ADDRH
ADDRL
DATA..
初始化
SEI
STA      $FFFF
LDHX   #FILEPTR
JSR      地址
CLI
程序就是不行啊
哦,我看的是datasheet182页的样例程序,它用了LDHX FILEPTR。
是应该用LDHX #FILEPTR

看你的初始化中 COP没有关掉,
把CONFIG1寄存器的bit0置1,默认的watchdog是打开的。
mov #$41, CONFIG1

另外,尽量用DS.B 和DS.W来开辟RAM空间,比较清楚。
返回列表