ds1990.hpl

来自「schematic interface orange for eeprom pr」· HPL 代码 · 共 109 行

HPL
109
字号
; Orange programmer module v3.4
; (c) 2000,2001 Alex Plusov

; Dallas iButton with CRC calculator
; CHIP=DS1990,8(8),ds1990.hpl

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

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

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]
R0=DATA       ; DATA
LOOP=(0,7){   ; BITS  LOOP

R1=R0
R1=^R9
R1=&1         ; CF

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


[_CRCALL]
ADR=0
R9=0
LOOP=(0,7){   ; BYTES LOOP
_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
}

[READBLOCK]
_RESET
R8?!0{PRINT=("ANSWER ERROR %lX",R8),EXIT}
P=200
IDISABLE
R0=0x33,_TBYTE
LOOP=(0,7){R0=0xFF,_TBYTE,DATA=R1,ADR=+1}
IENABLE

_CRCALL
R9?!0{PRINT=("CRC ERROR %03lX",R9)}


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

⌨️ 快捷键说明

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