24lc21.hpl

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

HPL
82
字号
; Orange programmer module v2.0
; (c) 1999 Alex Plusov
; CHIP=24LC21 (128x8) Microchip
; Dual mode Serial EEPROM

; not tested!

SOCKET=1 ;"I2C"

PINO=SCL,0
PINO=SDA,1
PINO=VCLK,2
PINO=NC0, 3
PINO=NC1, 4
PINO=NC2, 5
PINI=SDA,1

CDELAY = 5 ; one set delay


[INIT]
SCL=1,NC0=0,NC1=0,NC2=0

R0=0xA0   ; write I2C address const
R1=0xA1   ; read I2C address const
RE?!4{VCLK=1,SCL=1,P=10,SCL=0,P=10,} ; switch to bi-dir mode if not USER section


[READ]
SDA=1,SCL=1,SDA=0,SCL=0 ;start

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=ADR[I],SCL=1,SCL=0}    ; out 8 bits
SDA=0,SDA=1,SCL=1,SDA?0              ; ack check
SCL=0,SDA=0

SDA=1,SCL=1,SDA=0,SCL=0 ;start
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,DATA[I]=SDA,SCL=0} ;read byte
SDA=1,SCL=1,SCL=0,SDA=0             ;master not asked

SCL=0,SCL=1,SDA=1                   ;stop


[WRITE]
SDA=1,SCL=1,SDA=0,SCL=0 ;start
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=ADR[I],SCL=1,SCL=0}   ; out 8 bits address
SDA=0,SDA=1,SCL=1,SDA?0             ; ack check
SCL=0,SDA=0

LOOP=(7,0){SDA=DATA[I],SCL=1,SCL=0}  ; out 8 bits data
SDA=0,SDA=1,SCL=1,SDA?0             ; 0 - ack check?
SCL=0,SDA=0
SCL=0,SCL=1,SDA=1                  ;stop
P=25000


[ReadAll]
; Init transmit mode:
SCL=1,SDA=1,VCLK=0,P=20
LOOP=(0,8){VCLK=1,VCLK=0}

; Read all data (transmit mode):
ADR=0
LOOP=(0,127){
LOOP=(7,0){SCL=1,DATA[I]=SDA,SCL=0} ;read byte
SCL=1,SCL=0			    ;null bit?	
ADR=+1
}

⌨️ 快捷键说明

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