16.3.6 针对目标芯片JB8的编程.doc

16.3.6 针对目标芯片JB8的编程.doc

16.3.6 针对目标芯片JB8的编程 (1)JB8的整体擦除 (2)JB8的页写入 表16-9 JB8的整体擦除子程序和页写入子程序 整体擦除 页写入 LDHX #$FFFF LDA #$FF ;$FF(FLBPR STA $FE09 ;整个Flash不受保护 LDA #$03 BSR Delay ;延迟 LDA #$06 STA $FE08 ;$06(FLCR LDA $FE09 ;读FLBPR STA ,X ;向HX写入任意值 LDA #$01 BSR Delay ;延迟Tnvs LDA #$0E STA $FE08 ;$0E(FLCR LDX #$04 ;延迟Tmerase Loop: LDA #$F8 BSR Delay DBNZX Loop LDA #$0C STA $FE08 ;$0C(FLCR LDA #$3B BSR Delay ;延迟Tnvhl LDA #$00 STA $FE08 ;$00(FLCR LDA #$00 BSR Delay ;延迟Trcv LDA #$00 ;$00(FLBPR STA $FE09 ;整个Flash受保护 SWI ;软中断指令 ;延迟子程序,入口参数为A Delay: NOP ;1个周期 NOP ;1个周期 DBNZA Delay ;3个周期 RTS ;4个周期 LDA #$FF STA $FE09 LDA #$03 BSR delay LDA #$01 ;(1) STA $FE08 LDA $FE09 ;(2) LDHX $00A0 ;(3) STA ,X LDA #$01 ;(4)delay Tnvs=6us BSR delay LDA #$09 ;(5) STA $FE08 LDA #$03 ;(6)delay Tpgs=10us BSR delay MOV #$00,$00A0 MOV #$A3,$00A1 WriteLoop: PSHH PSHX LDHX $00A0 LDA ,X ;DATA--A AIX #$01 STHX $00A0 ;X--($00A0) PULX PULH STA ,X ;A--FLASH(HX) LDA #$09 ;(8)delay Tprog=22us BSR delay AIX #$01 ;FLASHaddr+1 DBNZ $00A2,WriteLoop ; LDA #$08 ;(10) STA $FE08 LDA #$01 ;(11)delay Tnvh=6us BSR delay LDA #$00 ;(12) STA $FE08 LDA #$00 ;(13)delay Trcv=4us BSR delay LDA #$00 STA $FE09 SWI delay: NOP NOP DBNZA delay RTS 16.3.7 基板中主控MCU的编程 (1)主流程 (2)整体擦除目标MCU子程序 用监控命令WRITE和IWRITE将16.3.6中的整体擦除JB8的67字节代码写到目标芯片JB8的RAM中,然后发送RUN命令执行之,整体擦除的梦想就实现了。 (3)写目标MCU子程序 写目标MCU子程序可以分为以下几步来实现: ① 用监控命令WRITE和IWRITE将16.3.6中页写入程序的89字节代码写到目标芯片JB8的$0041开始的RAM区域中。 ② 接收PC的写入的总页数。 ③ 接收PC的页数据内容(包含页首址和数据个数) ④ 将页数据内容用监控命令WRITE和IWRITE写入JB8的RAM中从$00A0开始的地址空间中。 ⑤ 发送运行监控命令RUN,写入一页。 ⑥ 判断是否还有需要写入的页,如果有,则转第③步,直到写入所有的页。 从以上的写入过程来看,在写入过程中,要多次执行页写入程序,而在实际中,只需要传送一次页写入程序,以后的写入过程

文档评论(0)

1亿VIP精品文档

相关文档