⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1993.hpl

📁 schematic interface orange for eeprom programming
💻 HPL
字号:
; Orange programmer module v3.9
; (c) 2000,2001 Alex Plusov
; Dallas iButton 
; CHIP=DS1992,128(32),ds1993.hpl
; CHIP=DS1993,512(32),ds1993.hpl

; Connect P1 - DATA, GND - GND
; May be speed correction need for other PC

; CRC=x^8 + x^5 + x^4 + 1
; LSB first

; Tested!

SOCKET=0

PINO=SDA,1
PINI=SDA,1
CDELAY = 0 ; one set delay

R9=CRC,H


[_RESET]
R8=0 ; status
SDA=1,P=200
IDISABLE
SDA=0,P=650
SDA=1
P=1

; Wait answer
LOOP=(0,10000){
R8[0]=SDA
R8[0]?0{BREAK}
}

R8[0]?1{R8[1]=1} ;check state timeout

LOOP=(0,10000){
R8[0]=SDA
R8[0]?1{BREAK}
}

R8=^1;
IENABLE
P=1000


[_CRCBYTE]
LOOP=(0,7){   ; BITS  LOOP
R0=R1
R0=^R9
R0=&1         ; CF

R0?1{R9=^0x18}
;R9[8]=R9[0]
R9=>>1,R9=&0xFF
R0=<<7
R9=|R0
R1=>>1
}


[_CRCALL]
ADR=0
R9=0
LOOP=(0,7){   ; BYTES LOOP
R1=DATA       ; DATA
_CRCBYTE
ADR=+1
}



[INIT]
SDA=1,P=5000
;_RESET
;R8?!0{PRINT=("ANSWER ERROR %lX",R0),EXIT}

[_TBYTE]
R1=0
LOOP=(0,7){
SDA=0,P=5
SDA=R0[I]
P=3
R1[I]=SDA
P=70
SDA=1
P=20
}

[_RBYTE]
R0=0xFF,_TBYTE



[READBLOCK]
_RESET
R8?!0{PRINT=("ANSWER ERROR %lX",R8),EXIT}
P=200
IDISABLE
R0=0xCC,_TBYTE   	;Skip ROM
R0=0xF0,_TBYTE   	;Read Memory
R0=ADR,R0=&0xFF,_TBYTE
R0=ADR,R0=/256,_TBYTE
LOOP=(0,31){_RBYTE,DATA=R1,ADR=+1}
IENABLE


[WRITEBLOCK]
_RESET
R8?!0{PRINT=("ANSWER ERROR %lX",R8),EXIT}
P=200
IDISABLE
R0=0xCC,_TBYTE   	;Skip ROM
R0=0x0F,_TBYTE   	;Write Scratchpad
R0=ADR,R0=&0xFF,_TBYTE
R0=ADR,R0=/256,_TBYTE
LOOP=(0,31){R0=DATA,_TBYTE,ADR=+1}
IENABLE

_RESET
R8?!0{PRINT=("ANSWER ERROR %lX",R8),EXIT}
P=200
IDISABLE
R0=0xCC,_TBYTE   	;Skip ROM
R0=0xAA,_TBYTE   	;Read Scratchpad
_RBYTE,R2=R1		;TA1
_RBYTE,R3=R1            ;TA2
_RBYTE,R4=R1            ;E/S


_RESET
R8?!0{PRINT=("ANSWER ERROR %lX",R8),EXIT}
P=200
IDISABLE
R0=0xCC,_TBYTE   	;Skip ROM
R0=0x55,_TBYTE   	;Copy Scratchpad
R0=R2,_TBYTE            ;TA1
R0=R3,_TBYTE            ;TA2
R0=R4,_TBYTE            ;E/S
P=100                       
     

[ReadRomID]
_RESET
R8?!0{PRINT=("ANSWER ERROR %lX",R8),EXIT}
P=200
IDISABLE
R0=0x33,_TBYTE
R9=0
_RBYTE,R2=R1,_CRCBYTE
_RBYTE,R3=R1,_CRCBYTE
_RBYTE,R4=R1,_CRCBYTE
_RBYTE,R5=R1,_CRCBYTE
_RBYTE,R6=R1,_CRCBYTE
_RBYTE,R7=R1,_CRCBYTE
_RBYTE,R8=R1,_CRCBYTE
_RBYTE,RB=R1 ; ,_CRCBYTE
IENABLE

RB?R9{
PRINT=("ID = %02lX %02lX%02lX%02lX%02lX%02lX%02lX %02lX",R2, R8,R7,R6,R5,R4,R3, RB)
}
RB?!R9{
; CRC Error detected!
PRINT=E("ID = %02lX %02lX%02lX%02lX%02lX%02lX%02lX %02lX",R2, R8,R7,R6,R5,R4,R3, RB)
}


;[CalcCRC]
;_CRCALL
;PRINT=("CRC: %03lXH",R9)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -