?? pcf8563時鐘.asm
字號:
SDA BIT P1.4
SCL BIT P3.3
FLAG EQU 20H
ACK BIT FLAG.0
SLA EQU 50H
SUBA EQU 51H
NUMBYTE EQU 52H
VALUE EQU 53H
MTD EQU 30H
MRD EQU 40H
PCF8563 EQU 0H
POINTADD EQU 02H
ORG 000H
JMP BEGIN
ORG 80H
BEGIN:
MAIN: MOV SP,#80H
MOV A,#00H
MOV R0,#01H
; JMP RCV8563
INIT: MOV @R0,A
INC R0
CJNE R0,#100,INIT
JMP READ_TIME0
RCV8563:
MOV SLA,#0A2H
MOV SUBA,#00H
MOV VALUE,#00H
LCALL WRITE
MOV SLA,#0A2H
MOV SUBA,#01H
MOV VALUE,#00H
LCALL WRITE
MOV SLA,#0A2H
MOV SUBA,#03H
MOV VALUE,#52H
LCALL WRITE
MOV SLA,#0A2H
MOV SUBA,#04H
MOV VALUE,#08H
LCALL WRITE
MOV SLA,#0A2H
MOV SUBA,#05H
MOV VALUE,#26H
LCALL WRITE
MOV SLA,#0A2H
MOV SUBA,#06H
MOV VALUE,#04H
LCALL WRITE
MOV SLA,#0A2H
MOV SUBA,#07H
MOV VALUE,#07H
LCALL WRITE
MOV SLA,#0A2H
MOV SUBA,#08H
MOV VALUE,#07H
LCALL WRITE
READ_TIME0:
MOV SLA,#0A3H ;取器件地址
MOV SUBA,#02H ;取讀時間的首字節地址從秒開始讀
MOV NUMBYTE,#07H ;讀七個時間信息
MOV R0,#MRD
READ_TIME:
LCALL IRDNBYTE ;讀取時間并放入接收緩沖區中
MOV @R0,A
INC R0
INC SUBA
DJNZ NUMBYTE,READ_TIME
MOV A,MRD ;取秒字節
ANL A,#7FH ;屏蔽無效位
MOV MRD,A
MOV A, MRD+1
ANL A,#7FH ;屏蔽無效位
MOV MRD+1,A
MOV A, MRD+2 ;取小時字節
ANL A,#3FH ;屏蔽無效位
MOV MRD+2,A
MOV A, MRD+3 ;取天字節
ANL A,#3FH ;屏蔽無效位
MOV MRD+3,A
MOV A, MRD+4 ;取星期字節
ANL A,#07H ;屏蔽無效位
MOV MRD+4,A
MOV A,MRD+5 ;取月字節
ANL A,#9FH ;屏蔽無效位
MOV MRD+5,A
JMP READ_TIME0
WRITE: LCALL START
MOV A,SLA
LCALL WRBYTE
JC WEND
MOV A,SUBA
LCALL WRBYTE
JC WEND
MOV A,VALUE
LCALL WRBYTE
WEND:LCALL STOP
RET
IRDNBYTE:
MOV SLA,#0A2H
LCALL START
MOV A,SLA
LCALL WRBYTE
JC RETRDN
MOV A,SUBA
LCALL WRBYTE
JC RETRDN
MOV SLA,#0A3H
LCALL START
MOV A,SLA
LCALL WRBYTE
JC RETRDN
LCALL READ_BYTE
RETRDN:LCALL STOP
RET
READ_BYTE:
MOV R6,#08H
RB_01: SETB SCL
NOP
MOV C,SDA
RLC A
CLR SCL
DJNZ R6,RB_01
RET
RDBYTE:
MOV R0,#08H
RLP: SETB SDA
NOP
SETB SCL
NOP
NOP
MOV C,SDA
MOV A,R2
CLR SCL
RLC A
MOV R2,A
NOP
NOP
NOP
DJNZ R0,RLP
RET
MACK: CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR SCL
NOP
NOP
RET
START: SETB SDA
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
NOP
NOP
RET
STOP: CLR SDA
NOP
NOP
NOP
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
NOP
CLR SDA
RET
CACK: SETB SDA
NOP
NOP
SETB SCL
CLR ACK
NOP
NOP
MOV C,SDA
JC CEND
SETB ACK
CEND: NOP
CLR SCL
NOP
RET
WRBYTE:
MOV R6,#08H
WB_01: RLC A
MOV SDA,C
SETB SCL
NOP
NOP
NOP
CLR SCL
DJNZ R6,WB_01
SETB SDA
CLR C
SETB SCL
NOP
NOP
JB SDA,WB_03
WB_02: CLR SCL
RET
WB_03: SETB C
SJMP WB_02
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -