sda2586.hpl

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

HPL
109
字号
; Orange programmer module v3.2
; (c) 2001 Alex Plusov, Alexander Shendrygin
; CHIP=SDA2546,512x8   Siemens I2C
; CHIP=SDA2586,1024x8  Siemens I2C 

; Use external power!
; Real GND - First Pin - For Orange-2 set pin1 to GND!!!

; Tested SDA2546 by Alexander Shendrygin
; Tested SDA2586 by Rusty

SOCKET=1 ;"I2C"

PINO=SCL,0
PINO=SDA,1
PINO=TP3, 2
PINO=GND0,3
PINO=CS,4
PINO=TP1,5
PINI=SDA,1

CDELAY=4                              ; one cycle time

[_START]
SDA=1,SCL=1,SDA=0,SCL=0               ; Start  10

[_STOP]
SDA=0,SCL=1,SDA=1,SCL=0               ; Stop   01

[_CSBYTE]
R0=0xA
LOOP=(3,0) {SDA=R0[I],SCL=1,SCL=0}    ; out 4 bits DeviceAdr
SDA=ADR[9],SCL=1,SCL=0                ; bit 5 = ADR[9] (for 2586 only)
SDA=ADR[8],SCL=1,SCL=0                ; bit 6 = ADR[8]
SDA=0,SCL=1,SCL=0                     ; bit 7 = SC=0


[INIT]
TP3=0,GND0=0,CS=0,TP1=0,P=20
;GND0=0,CS=0,TP1=0,TP3=0,P=20

[READ]
_START
_CSBYTE
SDA=0,SCL=1,SCL=0                     ; bit 8 = 0 Write Mode
SDA=1,SCL=1,SDA?0,SCL=0               ; ACKN check
                                      ; end  out  DeviceAdr, Hi(Adr), Mode

LOOP=(7,0) {SDA=ADR[I],SCL=1,SCL=0}   ; out 8 bits Lo(Adr)
SDA=1,SCL=1,SDA?0,SCL=0               ; ACKN check
                                      ; end  out   Lo(Adr)

_START
_CSBYTE
SDA=1,SCL=1,SCL=0                     ; bit 8 = 1 Read Mode
SDA=1,SCL=1,SDA?0,SCL=0               ; ACKN  check
                                      ; end  out  DeviceSelect

LOOP=(7,0) {SCL=1,DATA[I]=SDA,SCL=0}  ; read byte Data
SDA=1,SCL=1,SCL=0                     ; out  master  NO_ACKN

_STOP

[WRITEINIT]

; read from address 00 to Switch-On Mode (Write Enable)
_START
R0=0xA0
LOOP=(7,0) {SDA=R0[I],SCL=1,SCL=0}  ; out 8 bits 0xA0
SDA=0,SDA=1,SCL=1,SDA?0             ; ack check
SCL=0,SDA=0

LOOP=(7,0) {SDA=0,SCL=1,SCL=0}      ; out 8 bits (ADR=0)
SDA=0,SDA=1,SCL=1,SDA?0             ; ack check
SCL=0,SDA=0

_START
R1=0xA1
LOOP=(7,0){SDA=R1[I],SCL=1,SCL=0}    ; out 8 bits 0xA1
SDA=0,SDA=1,SCL=1,SDA?0              ; ack check
SCL=0

SDA=1                                ;SDA Hi-Z
LOOP=(7,0){SCL=1,P=10,SCL=0}         ;read byte emulation
SDA=1,SCL=1,SCL=0,SDA=0              ;master not asked

_STOP
P=20


[WRITE]
_START
_CSBYTE
SDA=0,SCL=1,SCL=0                     ; out 1 bit, 0=Write Mode
SDA=1,SCL=1,SDA?0,SCL=0               ; ACKN check
                                      ; end  out DeviceAdr, Hi(Adr), Mode

LOOP=(7,0) {SDA=ADR[I],SCL=1,SCL=0}   ; out 8 bits Lo(Adr)
SDA=1,SCL=1,SDA?0,SCL=0               ; ACKN check
                                      ; end  out   Lo(Adr)

LOOP=(7,0) {SDA=DATA[I],SCL=1,SCL=0}  ; out byte Data
SDA=1,SCL=1,SDA?0,SCL=0               ; ACKN  check
                                      ; end out Data

_STOP

P=20000                               ; delay: (Write Time)

⌨️ 快捷键说明

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