No.26639 作者:jinwei6092 邮件: ID:5716 登陆:11次 文章数:1篇 最后登陆IP:221.236.193.202 最后登陆:2006/2/6 0:42:51 注册:2001/8/30 23:11:00 财富:15 发帖时间:2003/4/22 1:27:04 发贴者IP:218.88.186.185 标题:jinwei6092:sst89c58X iap模块 摘要:No.26639sst89c58X iap模块 ;(1) 芯片擦除000_0001b:Chip_Erase 时间: 0 - 11.7ms(Chip_Erase Time) ;查询方式命令格式如下: Chip_Erase: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV SFDT, #55H ;开始 MOV SFCM, #01H ;写入命令字FIE = 0,FCM[6:0] = 000_0001b: Chip_Erase MOV A,SFST ;查询SFST.2,等待芯片擦除结束 JB ACC.2,$-2 RET ;(2) 块擦除000_1101b:Block_Erase 时间: 0 - 9.4ms(Block_Erase Time) ;查询方式命令格式如下: Block0_Erase: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV SFAH, #00H ;擦除Block0 MOV SFDT, #55H ;开始 MOV SFCM, #0DH ;写入命令字FIE = 0,FCM[6:0] = 000_1101b: Block_Erase MOV A,SFST ;;查询SFST.2,等待块擦除操作完成 JB ACC.2,$-2 RET Block1_Erase: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV SFAH, #0F0H ;擦除Block1 MOV SFDT, #55H ;开始 MOV SFCM, #0DH ;写入命令字FIE = 0,FCM[6:0] = 000_1101b: Block_Erase MOV A,SFST ;;查询SFST.2,等待块擦除操作完成 JB ACC.2,$-2 RET ;(3) 扇区擦除000_1011b:Sector_Erase 时间: 1.1 - 2.3ms(Sector_Erase Time) ; SFAH SFAL ;地址: | a15 a14 a13 a12 a11 a10 a9 a8 | a7 a6 a5 a4 a3 a2 a1 a0 | ;扇区地址: | a15 a14 a13 a12 a11 a10 a9 a8 | a7 0 0 0 0 0 0 0 | 128字节 Block0 ;扇区地址: | a15 a14 a13 a12 a11 a10 a9 a8 | a7 a6 0 0 0 0 0 0 | 64字节 Block1 ;查询方式命令格式如下: Sector_Erase: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV SFAH, #sector_addressH MOV SFAL, #sector_addressL MOV SFCM, #0BH ; 写入命令字FIE = 0,FCM[6:0] = 000_1011b: Sector_Erase MOV A,SFST ;查询SFST.2,等待扇区擦除操作完成 JB ACC.2,$-2 RET ;(4) 字节编程000_1110b: Byte_Program 时间: 0-110us(Byte_Program Time) ;在block1可以对block0编程,在block0可以对block1编程。但是每block均都不能对自己进行编程 ;查询方式命令格式如下: Byte_Program: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV SFAH, #byte_addressH MOV SFAL, #byte_addressL MOV SFDT, #program_data MOV SFCM, #0EH ; 写入命令字FIE = 0,FCM[6:0] = 000_1110b: Byte_Program MOV A,SFST ;查询SFST.2,等待字节编程操作完成 JB ACC.2,$-2 RET ;(5) 字节校验000_1100b: Byte_Verify 时间:50ns(Verify Command Delay Time) ;命令格式如下: Byte_Verify: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV SFAH, #byte_addressH MOV SFAL, #byte_addressL MOV SFCM, #0CH ; 写入命令字FIE = 0,FCM[6:0] = 000_1100b: Byte_Verify CJNE A,STDT,$+6 ;SFDT A 保存规定单元地址读出的内容 SEBT C SJMP $+4 CLR C RET ;(6) 加密位编程000_1111b: Byte_Program 时间: 0-110us(Byte_Program Time) ;Prog_SB1 操作指令必须在BLOCK0中。下一次复位后有效 ;查询方式命令格式如下: Prog_SB1: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV SFAH, #80H MOV SFDT, #55H MOV SFCM, #0FH ;写入命令字FIE = 0,FCM[6:0] = 000_1111b: Prog_SB1 MOV A,SFST ;查询SFST.2,等待加密位Prog_SB1编程操作完成 JB ACC.2,$-2 RET ;(7) 加密位编程000_0011b: Byte_Program 时间: 0-110us(Byte_Program Time) ;Prog_SB2 操作指令必须在BLOCK0中。下一次复位后有效 ;查询方式命令格式如下: Prog_SB2: ORL SFCF, #01000000B ;置IAPEN = 1,启动IAP MOV ......
>>返回讨论的主题
|