发新帖我要提问
12
返回列表
打印

澄海的人真牛,一个IO检测3种状态

[复制链接]
楼主: weihualong
手机看帖
扫描二维码
随时随地手机跟帖
21
weihualong|  楼主 | 2009-3-27 17:38 | 只看该作者 回帖奖励 |倒序浏览

已经证实,圈圈的是正解。

第一步:先挂上上拉电阻,读IO口,若是地则可以判定是接地。

第二步:若第一步读的是高,则有两种可能:接电源,悬空。
        先把上拉电阻拿掉,这是圈圈说的那个电容已经被充满电(
       不论是接电源,还是悬空,因为还有第一步的上拉存在),
        然后迅速转为输出,且输出一个低电平,将电容上的电放电。
       需要延迟一下,这里很关键,延迟短了电放不完,读出来不确定,延迟长了有 危险(因为万一接的是电源,会烧口)。放完电后又迅速转
       为输入,读口。为低则是悬空,为高则是接电源。

       方法是按匠人的步骤,不过,放电时间很关键,需要仔细调整。

澄海是我国最大的玩具基地,这样做的目的是,省掉一个口,或省掉一个外部电阻。

使用特权

评论回复
22
dark_psycho| | 2009-3-27 22:37 | 只看该作者

牛x

但是不是很理解

希望高手 详细解答下

使用特权

评论回复
23
hotpower| | 2009-3-27 23:14 | 只看该作者

外部RAM芯片有无自动检测技术

这个问题俺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

使用特权

评论回复
24
hotpower| | 2009-3-27 23:25 | 只看该作者

菜农用了N年了~~~小小伎俩总被人批判~~~

使用特权

评论回复
25
cooperate| | 2009-3-28 10:20 | 只看该作者

受教,收藏之

使用特权

评论回复
26
yewuyi| | 2009-3-28 11:00 | 只看该作者

XELTEK编程器的自动识别CHIP不知道是否也是这么做的。。。

RT:XELTEK编程器的自动识别CHIP不知道是否也是这么做的,但就是按照这么做也还有有很多疑惑。。。

一直没想明白。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则