首页 68HC08Flash存储器的使用方法

68HC08Flash存储器的使用方法

举报
开通vip

68HC08Flash存储器的使用方法 M68HC08 Flash存储器编程 1 编程方法 M68HC08具有 Flash存储器,它一般用作程序存储器,不能在运行时随时擦除、写入。 许多单片机应用场合需要使用掉电不丢失内容的数据存储器,这一般用 EEPROM实现。为 节省成本,可使用 M68HC08 的 Flash 存储器作这种数据的存储器。由于擦除、写入 Flash 存储器的程序不能位于 Flash 存储器中,所以必须把该程序放于 RAM或 ROM 中,这种程 序应使用特殊的编程方法。 一、一般MC68HC908的 Flash存储器的在线...

68HC08Flash存储器的使用方法
M68HC08 Flash存储器编程 1 编程方法 M68HC08具有 Flash存储器,它一般用作程序存储器,不能在运行时随时擦除、写入。 许多单片机应用场合需要使用掉电不丢失内容的数据存储器,这一般用 EEPROM实现。为 节省成本,可使用 M68HC08 的 Flash 存储器作这种数据的存储器。由于擦除、写入 Flash 存储器的程序不能位于 Flash 存储器中,所以必须把该程序放于 RAM或 ROM 中,这种程 序应使用特殊的编程方法。 一、一般MC68HC908的 Flash存储器的在线擦除、编程方法 MC68HC908 具有 Flash 编程寄存器(FLCR),它控制 Flash 存储器的擦除和编程。一般 位 0为 PGM位,编程时置位;位 1为 ERASE位,擦除时置位;位 2为MASS位,用作数 据存储器,不应使用(0);位 3位 HVEN位,执行编程或擦除操作时置位,在 FLCR不为零 时不能读出 Flash存储器(包括执行程序)。 M68HC908还有 Flash块保护寄存器,它对应于 Flash保护区首地址的高位地址线。用 户程序必须位于保护区内,而需改写的数据存储区应位于保护区外。 注意:有的芯片的该寄存器采用 Flash单元,有的采用 RAM单元。后者在复位后应写 入保护地址。 M68HC908的 Falsh擦除、编程方法见第二章,这里不再重复。 二、GP32等 Flash编程方法 对于有较大 RAM的M68HC908,如 GP32、SR12、MR32等,可采取以下编程方法: (1)在用户程序(Flash保护区)内编写、存放 Flash的擦除和编程子程序。 (2)在对 Flash编程前,把擦除子程序从 Flash拷贝至 RAM中。 (3)在对 Flash编程前,把将擦除的 Flash数据区的内容拷贝至 RAM中。它的大小取决 于所使用芯片型号,例如 GP32擦除时一块大小为 128字节。对需改写的单元,应在 RAM 中进行修改。 (4)转至 RAM执行控除 Flash的子程序,执行完返回主程序(Flash中)。 (5)把编程子程序从 Flash拷贝至 RAM中。 (6)转至 RAM 执行编程子程序,完成把 RAM 中数据(包括新数据和不改写但已被擦除 的数据)写入 Flash中。执行完返回主程序,即完成了一次编程操作。 三、GP32等 Flash的在线擦除、编程程序 WBF1 EQU $50 ;Working Buffer 1 WBF2 EQU $51 ; Working Buffer 2 COUNT EQU $52 ; Write Counter1~128 WTME EQU $53 ; Wait Time 32MHz: 24,16MHz: 12 TMP EQU $54 DBUF EQU $100 ; Data to be writen to Flash CBUF EQU $180 FLCR EQU $FE08 FLSPR EQU $FF7E FLSH EQU $8000 FRGM: SEI ;Flash memory PGM Subroutine CLRH CLRX PRGM1: LDA EFLASH,X ;Erase Flash Code→RAM:CBUF STA CBUF,X INCX CPX #EFEND-EFLASH BLO PRGM1 LDHX #FLSH ;Erase Address MOV #24,WTIME ;32MHz JSR CBUF ;Execute Flash erase CLRX CLRH PRGM2: LDA WFLASH,X ;Write Flash Code→RAM:CBUF STA CBUF,X INCX CPX #EFLASH-WFLASH BLO PRGM2 LDHX #FLSH ;Programming address MOV #24,WTIME ;32MHz MOV #128,COUNT ;128 Bytes JSR CBUF ;Execute Flash Write RTS WFLASH: CLR WBF2 ;Entry:H:X Flash Address LDA COUNT CMP #64 BLS WFLSH0 SUB $64 STA COUNT LDA #64 BRA WFLSH1 WFLSH0: CLRA WFLSH1: PSHA LDA #1 ;1→PGM STA FLCR LDA FLSPR ;Read Flash Protect Reg STA ,X BSR P1DL10 LDA #9 ;1→HVEN STA FLCR BSR P1DL10 WFLSH2: PSHH PSHX CLRH LDX WBF2 LDA DBUF,X ;Read DATA PULX PULH STA ,X ;Write to Flash BSR P1DL30 AIX #1 INC WBF2 DBNZ COUNT,WFLSH2;Loop 1 Page(1—64 Bytes) LDA #8 STA FLCR BSR P1DL10 LDA #0 STA FLCR PULA TSTA BEQ WFLSH3 STA COUNT ;Second Write BRA WFLSH0 WFLSH3: RTS P1DL30: MOV #3,WBF1 ;Delay 30 s BRA P1DL1 P1DL10: MOV #1,WBF1 ;Delay 10 s P1DL1: LDA WTIME P1DL2: DBNZA P1DL2 DEC WBF1 BNE P1DL1 RTS EFLASH: LDA #2 ;H:X=Erase Address STA FLCR ;1→ERASE LDA FLSPR ;Read Flash Protect Reg STA ,X EFLASH0: BSR EDL10 LDA # $A ;1→HVEN STA FLCDR BSR EDLK LDA #8 STA FLCR BSR EDL10 CLRA STA FLCR RTS EDLK: MOV #100,WBF1 BRA EDL1 EDL10: MOV #1,WBF1 EDL1: LDA WTIME EDL2: DBNZA EDL2 DBNZ WBF1,EDL1 RTS EFEND: NOP 程序中 EFLASH为 Flash擦除程序,WFLASH为 Flash写入程序(编程),它们必须拷贝 至 RAM中执行。PRGM为擦除、写入执行程序。它先把 Eflash拷贝至 RAM的 CBUF中, 再执行CBUF的程序擦除Flash $8000~$807F的数据,然后把WFLASH拷贝至RAM的CBUF 中,最后执行 CBUF的马 DBUF中的数据(128字节)写入 Flash的$8000~$807F中。WTIME 中存放延时参数(与晶振频率有关)(32MHz为 24,10MHz为 8)。执行 PRGM前,应先把 Flash $8000~$807F的内容拷贝至 RAM的 DBUF中,并按需修改其中的数据。执行本程序时,应 禁止中断和 COP,否则应加入清 COP的指令。 2 JL3等 Flash的编程方法 JL3/JK3有 4K字节 Flash,但它的 RAM仅有 128字节。而它一次擦除的 Flash块大小 为 64字节,剩余 RAM不足以放入擦除或编程程序。但 JL3/JK3的监控 ROM比较大,它包 含了许多子程序,包括擦除和写入子程序。 一、擦除子程序 入口地址:$FC06 入口时,RAM$89为延时参数(与晶振频率有关,32MHz为 32,10MHz为 10),$88应为 0,H:X指向擦除地址。 调用它,擦除 H:X指向的 64字节块 Flash存储器。 二、写入子程序 入口地址:$FC09 入口时,RAM$89为延时参数(同上),H:X为写入开始地址,$8A:$8B为写入结束地 址,$8C开始为写入数据。 调用后,把 RAM从$8C开始的数据写入从(H:X)开始到($8A:$8B)为止的 Flash存储 器中。 三、使用方法 首先把要写入的 Flash存储器所在的一页(64字节)内容拷贝到 RAM的从$8C开始的单 元中,按需要修改其中的数据,然后执行以下子程序(假设写入$EC00~$EC3F)。 四、JL3等 Flash的在线控除编程程序 PRGM: LDA # $62 ;保护区为$EC40~$FFFF STA $FE09 ;FLSPR MOV $32,$89 ;32MHz LDHX # $EC00 ;Flash擦除子程序 JSR $FC06 ;擦除子程序 MOV #32,$89 ;32MHz LDHX # $EC3F ;Flash写入结束地址 STHX $8A LDHX # $EC00 ;Flash写入首地址 JSR $FC09 ;写入子程序 RTS 五、其他M68HC908编程、擦除子程序 除了 JL3/JK3外,其他片内 RAM较少的M68HC908的监控 ROM中也有编程、擦除子 程序。但它们的入口地址和数据地址与 JL3/JK3略有不同,见下表: JL3/JK3 JB8 GR8 KX8 擦除子程序入口地址 $FC06 $FC06 $1C06 $1006 写入子程序入口地址 $FC09 $FC09 $1C09 $1009 全局控除控制单元 $88 $48 $48 $48 延时参数存放单元 $89 $49 $49 $49 写入结束地址存放单元 $8A:$8B $4A:$4B $4A:$4B $4A:$4B 写入数据开始地址 $8C $4C $4C $4C
本文档为【68HC08Flash存储器的使用方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_346910
暂无简介~
格式:pdf
大小:330KB
软件:PDF阅读器
页数:5
分类:互联网
上传时间:2011-12-24
浏览量:25