ds1307.hpl

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

HPL
80
字号
; Orange programmer module v3.7
; (c) 2002 Alex Plusov
; CHIP=DS1307 (64x8)
; Dallas Serial Real Time Clock + 56 byte nonvolatile RAM for data storage

; Orange2 Hardware
; Ext. Vbat=3V
;

INFO="Clock + RAM"

SOCKET=1 ;"I2C"

PINO=SCL,0
PINO=SDA,1
PINO=SQW, 2
PINO=X1, 3
PINO=X2, 4
PINO=BAT, 5
PINI=SDA,1

CDELAY = 5 ; one set delay


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

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


[INIT]
BAT=0		; or 3V external
X1=1,X2=1	; or XTAL
SQW=1


R0=0xD0   ; write I2C address const
R1=0xD1   ; read I2C address const
_START
_STOP

[READ]
_START
LOOP=(7,0) {SDA=R0[I],SCL=1,SCL=0}  ; out 8 bits 0xD0
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

_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

_STOP

[WRITE]
_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=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=1,SCL=1,SDA?0             ; 0 - ack check?
SCL=0,SDA=0
_STOP
P=5000

⌨️ 快捷键说明

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