这个问题俺91年就应用在外存芯片有无检测,后来演变为在线写入功能。 一些编程器也有此功能。
记得俺2003年曾在21ic上发过此问题贴,因为俺发过“梅花三弄”, 匠人肯定不会忘记~~~当时没人接招~~~
实际原理很简单,因为P0作为数据和地址总线,MOVX指令分时写入地址 和读出数据。
若外部无芯片插入,即悬空,这时,movx a,@dptr指令从P0口读回的不是 0xff, 而是DPL的值。 若外部芯片插入,这时若全为0xff,则认为芯片空(或被擦除),其他判定 芯片内有数据~~~
以下是俺给用户写的使用指南
XXX-C型XXXXXXX拷贝(cp)版使用指南 一. 概述 XXX-CVCP版除包含XXX-CVFC以上版的全部XXXX功能外,还具备对4M 位芯片的拷贝、删除、校验和空白检查等四大功能. 本软件采用芯片自动识别技术,在功能选择后,插入芯片即可自动 高速地拷贝,拷贝速度是专业编程器的数倍。拷贝成功率为100%。 该版本必须得到 XXX-C型XXXXXXXXXX相应的硬件支持。GAL16V8 必 须授权,主板必须为XXX-E以上主板。 目前支持4M位(512K*8位32管脚)芯片: ATMEL AT29C040A (已测试) WINBOND W29C040 (已测试) SST 28SF040A (已测试) MXIC MX29F040 (已测试) SST 39SF040 (已测试) 注: 新增支持芯片 TMS TMS29F040 (未测试) AMD AM29F040B (未测试) AMD AM29F040 (未测试) FUJITSU MBM29F040 (未测试) TI TMS29F040 (未测试) SST 29SF040 (未测试) STM M29F040B (未测试) BRIGHT BM29F040 (未测试) 二. 操作 1. 准备 关机后将被拷贝XXXX的母片插入M2(下)座内,M1(上)座内必须为空 2. 选择 开机并显示"E0"后,按相应键即可选择所需功能 按[ + ]键选择拷贝功能,并显示"CP" 按[ - ]键选择删除功能,并显示"DL" 按[查询]键选择校验功能,并显示"JY" 按[方向]键选择查空功能,并显示"JU" 3. 执行 在M1(上)座内插入被操作的芯片后立即自动执行选择的操作。 相应操作正确执行完后,显示"LP",表示等待插入下一芯片。 若需多片操作,将上片内的芯片取出后,显示指示为原操作。 再插入其它芯片即可自动重复执行。 拷贝出错后显示"EC"。例上座内为27系列的EPROM芯片。 删除出错后显示"ED"。例上座内为27系列的EPROM芯片。 校验出错后显示"EJ"。例上下座内的数据不相同。 查空出错后显示"EU"。例上座内芯片中有数据。 正确执行后显示"LP"。表示等待取出上座内芯片,插入新芯片。 4. 重选 在执行某一操作结束后,正确执行后显示"LP"。 可按其它功能键选择其它操作。 5. 试听 在上片有拷完的XXXX芯片时,按[复位]键或重新开机后将进入正常XXX, 与一般的XXXX一样使用。 三. 举例 拷贝10片所需XXXX芯片 关机后将被拷贝XXXX的母片插入M2(下)座内,M1(上)座内必须为空 开机并显示"E0"后,按[ + ]键选择拷贝功能,并显示"CP"。 将被拷贝芯片插入在M1(上)座内后,将自动显示芯片信息。 拷贝一片所需时间在1分钟内。 例如: 母片为27系列的EPROM芯片,被拷芯片为28系列的EEPROM芯片。 将显示"27"7C"28" 表示下片内插入的母片为27系列的EPROM芯片 文件长度为 7CXFFH。X的值用下排的 LED指示灯表示。 上片内插入的被拷芯片为28系列的EEPROM芯片 母片为28系列的EEPROM芯片,被拷芯片为29系列的FLASH芯片。 将显示"28"61"29" 表示下片内插入的母片为28系列的EEPROM芯片 文件长度为 61XFFH。X的值用下排的 LED指示灯表示。 上片内插入的被拷芯片为29系列的FLASH芯片 母片为29系列的FLASH芯片,被拷芯片为39系列的FLASH芯片。 将显示"29"68"39" 表示下片内插入的母片为29系列的FLASH芯片 文件长度为 68XFFH。X的值用下排的 LED指示灯表示。 上片内插入的被拷芯片为39系列的FLASH芯片 拷贝从"00"到文件长度完后,即可插入其它芯片。 若需校验,按[XXXX]键即可比较上下芯片是否相同。 注意:上片内插入的被拷芯片必须为28/29/39系列的EEPROM/FLASH芯片 下片内插入的母片可为27/28/29/39系列的EPROM/EEPROM/FLASH芯片 若XXXX由两片组成,应在拷贝第一片结束后,在不断电的情况下, 换掉下座内的母片,再按以上操作即可!切记!!!
附汇编芯片定义:(看菜农造假否~~~) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;SST28SF040A 4M位EEPROM ;SST28SF040A编程软件保护口令 SST_PROTECT1 EQU 1823H;扇区18H命令23H SST_PROTECT2 EQU 1820H;扇区18H命令20H SST_PROTECT3 EQU 1822H;扇区18H命令22H SST_PROTECT4 EQU 0418H;扇区04H命令18H SST_PROTECT5 EQU 041BH;扇区04H命令1BH SST_PROTECT6 EQU 0419H;扇区04H命令19H SST_PROTECT EQU 0AH ;扇区04H命令0AH,SST_PROTECT7编程软件保护命令 SST_UNPROTECT EQU 1AH ;扇区04H命令1AH,SST_PROTECT7编程软件不保护命令 ;SST命令助记符 SST_RESET EQU 0FFH;SST复位 SST_READID EQU 090H;SST读器件识别码 SST_MAKECODE EQU 0BFH;SST制造代码(SST=BFH,INTEL=89H,ATMEL=1FH) SST_DVICECODE EQU 004H;SST设备代码 SST_BYTEPROG EQU 010H;SST字节编程 SST_SERASESET EQU 020H;SST扇区擦除设置命令 SST_SERASEEXC EQU 0D0H;SST扇区擦除执行命令 SST_CERASESET EQU 030H;SST芯片擦除设置命令 SST_CERASEEXC EQU 030H;SST芯片擦除执行命令 SST_MAKEADDR EQU 0000H;SST制造地址 SST_DVICEADDR EQU 0001H;SST设备地址 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;SST29SF040 4M位FLASH ;SST命令助记符 ST_READID EQU 090H;SST读器件识别码设置命令 ST_MAKECODE EQU 0BFH;SST制造代码 ST_DVICECODE EQU 013H;SST设备代码 ST_READIDEXIT EQU 0F0H;SST读器件识别码退出命令 ST_CERASESET EQU 080H;SST芯片擦除设置命令 ST_CERASEEXC EQU 010H;SST芯片擦除执行命令 ST_PROTECT EQU 0A0H;SST编程保护设置命令 ST_UNPROTECTS EQU 080H;SST编程不保护设置命令 ST_UNPROTECTE EQU 020H;SST编程不保护执行命令 ST_PASSADDR1 EQU 5555H;SST口令首地址 ST_PASSADDR2 EQU 2AAAH;SST口令尾地址 ST_COMADDR EQU 5555H;SST命令地址 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;SST39SF040 4M位FLASH ;SST命令助记符 ST39_READID EQU 090H;SST读器件识别码设置命令 ST39_MAKECODE EQU 0BFH;SST制造代码 ST39_DVICECODE EQU 0B7H;SST设备代码 ST39_READIDEXIT EQU 0F0H;SST读器件识别码退出命令 ST39_CERASESET EQU 080H;SST芯片擦除设置命令 ST39_CERASEEXC EQU 010H;SST芯片擦除执行命令 ST39_PROTECT EQU 0A0H;SST编程保护设置命令 ST39_UNPROTECTS EQU 080H;SST编程不保护设置命令 ST39_UNPROTECTE EQU 020H;SST编程不保护执行命令 ST39_PASSADDR1 EQU 5555H;SST口令首地址 ST39_PASSADDR2 EQU 2AAAH;SST口令尾地址 ST39_COMADDR EQU 5555H;SST命令地址 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;AT29C040A 4M位FLASH ;AT命令助记符 AT_READID EQU 090H;AT读器件识别码设置命令 AT_MAKECODE EQU 01FH;AT制造代码 AT_DVICECODE EQU 0A4H;AT设备代码 AT_READIDEXIT EQU 0F0H;AT读器件识别码退出命令 AT_CERASESET EQU 080H;AT芯片擦除设置命令 AT_CERASEEXC EQU 010H;AT芯片擦除执行命令 AT_PROTECT EQU 0A0H;AT编程保护设置命令 AT_UNPROTECTS EQU 080H;AT编程不保护设置命令 AT_UNPROTECTE EQU 020H;AT编程不保护执行命令 AT_PASSADDR1 EQU 5555H;AT口令首地址 AT_PASSADDR2 EQU 2AAAH;AT口令尾地址 AT_COMADDR EQU 5555H;AT命令地址 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;W29C040 4M位FLASH ;WD命令助记符 WD_READID EQU 090H;WD读器件识别码设置命令 WD_MAKECODE EQU 0DAH;WD制造代码 WD_DVICECODE EQU 046H;WD设备代码 WD_READIDEXIT EQU 0F0H;WD读器件识别码退出命令 WD_CERASESET EQU 080H;WD芯片擦除设置命令 WD_CERASEEXC EQU 010H;WD芯片擦除执行命令 WD_PROTECT EQU 0A0H;WD编程保护设置命令 WD_UNPROTECTS EQU 080H;WD编程不保护设置命令 WD_UNPROTECTE EQU 020H;WD编程不保护执行命令 WD_PASSADDR1 EQU 5555H;WD口令首地址 WD_PASSADDR2 EQU 2AAAH;WD口令尾地址 WD_COMADDR EQU 5555H;WD命令地址 ;------------------------------------------------------------------ ;MX29F040 4M位FLASH ;MX命令助记符 MX_READID EQU 090H;MX读器件识别码设置命令 MX_MAKECODE EQU 0C2H;MX制造代码 MX_DVICECODE EQU 0A4H;MX设备代码 MX_READIDEXIT EQU 0F0H;MX读器件识别码退出命令 MX_CERASESET EQU 080H;MX芯片擦除设置命令 MX_CERASEEXC EQU 010H;MX芯片擦除执行命令 MX_PROTECT EQU 0A0H;MX编程保护设置命令 MX_UNPROTECTS EQU 080H;MX编程不保护设置命令 MX_UNPROTECTE EQU 020H;MX编程不保护执行命令 MX_PASSADDR1 EQU 5555H;MX口令首地址 MX_PASSADDR2 EQU 2AAAH;MX口令尾地址 MX_COMADDR EQU 5555H;MX命令地址 ;------------------------------------------------------------------ ;AM29F040B 4M位FLASH ;AM命令助记符 AM_READID EQU 090H;AM读器件识别码设置命令 AM_MAKECODE EQU 001H;AM制造代码 AM_DVICECODE EQU 0A4H;AM设备代码 AM_READIDEXIT EQU 0F0H;AM读器件识别码退出命令 AM_CERASESET EQU 080H;AM芯片擦除设置命令 AM_CERASEEXC EQU 010H;AM芯片擦除执行命令 AM_PROTECT EQU 0A0H;AM编程保护设置命令 AM_UNPROTECTS EQU 080H;AM编程不保护设置命令 AM_UNPROTECTE EQU 020H;AM编程不保护执行命令 AM_PASSADDR1 EQU 5555H;AM口令首地址 AM_PASSADDR2 EQU 2AAAH;AM口令尾地址 AM_COMADDR EQU 5555H;AM命令地址 ;------------------------------------------------------------------ ;TMS29F040 4M位FLASH ;TMS命令助记符 TM_READID EQU 090H;TM读器件识别码设置命令 TM_MAKECODE EQU 001H;TM制造代码 TM_DVICECODE EQU 0A4H;TM设备代码 TM_READIDEXIT EQU 0F0H;TM读器件识别码退出命令 TM_CERASESET EQU 080H;TM芯片擦除设置命令 TM_CERASEEXC EQU 010H;TM芯片擦除执行命令 TM_PROTECT EQU 0A0H;TM编程保护设置命令 TM_UNPROTECTS EQU 080H;TM编程不保护设置命令 TM_UNPROTECTE EQU 020H;TM编程不保护执行命令 TM_PASSADDR1 EQU 5555H;TM口令首地址 TM_PASSADDR2 EQU 2AAAH;TM口令尾地址 TM_COMADDR EQU 5555H;TM命令地址 ;------------------------------------------------------------------ ;BM29F040B 4M位FLASH ;BM命令助记符 BM_READID EQU 090H;BM读器件识别码设置命令 BM_MAKECODE EQU 0ADH;BM制造代码 BM_DVICECODE EQU 040H;BM设备代码 BM_READIDEXIT EQU 0F0H;BM读器件识别码退出命令 BM_CERASESET EQU 080H;BM芯片擦除设置命令 BM_CERASEEXC EQU 010H;BM芯片擦除执行命令 BM_PROTECT EQU 0A0H;BM编程保护设置命令 BM_UNPROTECTS EQU 080H;BM编程不保护设置命令 BM_UNPROTECTE EQU 020H;BM编程不保护执行命令 BM_PASSADDR1 EQU 5555H;BM口令首地址 BM_PASSADDR2 EQU 2AAAH;BM口令尾地址 BM_COMADDR EQU 5555H;BM命令地址 ;------------------------------------------------------------------ ;MBM29F040B 4M位FLASH ;MBM命令助记符 MBM_READID EQU 090H;MBM读器件识别码设置命令 MBM_MAKECODE EQU 004H;MBM制造代码 MBM_DVICECODE EQU 0A4H;MBM设备代码 MBM_READIDEXIT EQU 0F0H;MBM读器件识别码退出命令 MBM_CERASESET EQU 080H;MBM芯片擦除设置命令 MBM_CERASEEXC EQU 010H;MBM芯片擦除执行命令 MBM_PROTECT EQU 0A0H;MBM编程保护设置命令 MBM_UNPROTECTS EQU 080H;MBM编程不保护设置命令 MBM_UNPROTECTE EQU 020H;MBM编程不保护执行命令 MBM_PASSADDR1 EQU 5555H;MBM口令首地址 MBM_PASSADDR2 EQU 2AAAH;MBM口令尾地址 MBM_COMADDR EQU 5555H;MBM命令地址 ;------------------------------------------------------------------ ;STM M29F040B 4M位FLASH ;M命令助记符 STM_READID EQU 090H;STM读器件识别码设置命令 STM_MAKECODE EQU 020H;STM制造代码 STM_DVICECODE EQU 0E2H;STM设备代码 STM_READIDEXIT EQU 0F0H;STM读器件识别码退出命令 STM_CERASESET EQU 080H;STM芯片擦除设置命令 STM_CERASEEXC EQU 010H;STM芯片擦除执行命令 STM_PROTECT EQU 0A0H;STM编程保护设置命令 STM_UNPROTECTS EQU 080H;STM编程不保护设置命令 STM_UNPROTECTE EQU 020H;STM编程不保护执行命令 STM_PASSADDR1 EQU 5555H;STM口令首地址 STM_PASSADDR2 EQU 2AAAH;STM口令尾地址 STM_COMADDR EQU 5555H;STM命令地址 ;------------------------------------------------------------------ DVICENAMEA EQU 0AH DVICENAMEB EQU 0BH DVICENAME EQU 0CH MAKECODE EQU 0DH;AT制造代码 DVICECODE EQU 0EH;AT设备代码 FLASHREG EQU 0FH M27C4001 EQU 00000001B SST28SF040A EQU 00000010B AT29C040A EQU 00000100B W29C040 EQU 00001000B MX29F040 EQU 00010000B AM29F040B EQU 00100000B SST29SF040 EQU 01000000B ALL29F040 EQU 10000000B ;------------------------------------------------------------------- PROMBZ1 EQU 20H MC27 BIT PROMBZ1.0;27C040 SST28 BIT PROMBZ1.1;SST28F040A AT29 BIT PROMBZ1.2;AT29C040A W29 BIT PROMBZ1.3;W29C040 MX29 BIT PROMBZ1.4;MX29F040 AM29 BIT PROMBZ1.5;AM29F040B,AM29F040,TMS29F040 SST29 BIT PROMBZ1.6;SST29SF040 ALL29 BIT PROMBZ1.7;BM29F040,MBM29F040 ;------------------------------------------------------------------- EEPROMKEY EQU 29H COPYKEY EQU EEPROMKEY.2 DELEKEY EQU EEPROMKEY.3 COMPKEY EQU EEPROMKEY.4 FULLKEY EQU EEPROMKEY.5 |