⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtc.a

📁 RTC 1302 module c file
💻 A
字号:
 

    P5  EQU  0FE11h

    
	CLK 	    bit 	P3.6
	IO 	        bit 	P3.7
	
	CE          bit 	P0.0


	NAME	Rtc
?PR?_RD_RTC?Rtc	SEGMENT CODE
?PR?_WR_RTC?Rtc	SEGMENT	CODE
?PR?_RD_PROT?Rtc	SEGMENT	CODE
?PR?_WRPROT1?Rtc SEGMENT CODE
?PR?_WRPROT?Rtc	SEGMENT CODE
?PR?_WRCL?Rtc	SEGMENT	CODE
?PR?_RDCL?Rtc	SEGMENT	CODE
?PR?_CLOUT?Rtc	SEGMENT CODE
?PR?_CLOUT8?Rtc	SEGMENT CODE
?PR?_CLIN8?Rtc	SEGMENT	CODE
?PR?_CPULSE?Rtc	SEGMENT	CODE



PUBLIC		_WR_RTC,_RD_RTC

	RSEG	?PR?_RD_RTC?Rtc
 
_RD_RTC:
 	LCALL 	_WRPROT
	LCALL 	_RDCL
	LCALL 	_WRPROT1
	
	RET
	
	RSEG	?PR?_WR_RTC?Rtc

_WR_RTC:
	LCALL	_WRPROT
	LCALL	_WRCL
	LCALL	_WRPROT1
	RET

	RSEG	?PR?_RD_PROT?Rtc
_RD_PROT:               ;read out the write protected property
	CLR     CLK
	SETB 	CE
	NOP
	MOV 	A,#8FH
	LCALL 	_CLIN8
	MOV 	R0,#40H
	LCALL 	_CLOUT8
	MOV 	@R0,A
	CLR 	CE
	SETB    CLK
	RET



	RSEG	?PR?_WRPROT1?Rtc
_WRPROT1:               ;lock the write protected
	 CLR CLK
	SETB 	CE
	MOV 	A,#8EH
	LCALL 	_CLIN8
	MOV 	A,#80H
	LCALL 	_CLIN8
	CLR 	CE
	 SETB CLK
	RET
      
	RSEG	?PR?_WRPROT?Rtc

_WRPROT:                ;unlock the write portected
	 CLR CLK
	SETB 	CE
	MOV 	A,#8EH
	LCALL 	_CLIN8
	MOV 	A,#00H
	LCALL 	_CLIN8
	CLR 	CE
     SETB CLK
	RET
       

	RSEG	?PR?_WRCL?Rtc
_WRCL:                  ;write clock
;	MOV	A,#80H
;	ORL	36H,A
	
	MOV	A,R1             ; in R3~R1
	MOV	R7,A

	DEC	A
	DEC	A

	MOV	R1,A             ;get the minuter pointer
	MOV	A,@R1
	ORL	A,#80H
	MOV	@R1,A            ;mask the MSB 

	MOV 	R2,#80H    ; start cmd 0x80  
	MOV 	R3,#07H
	MOV	A,R7
	MOV	R1,A
WRT:    
	 CLR CLK
	SETB 	CE
	MOV 	A,R2
	LCALL 	_CLIN8
	MOV 	A,@R1
	LCALL 	_CLIN8

	CLR 	CE
	 SETB CLK
	INC 	R2
	INC 	R2
	DEC 	R1
	DJNZ 	R3,WRT
	RET
       

	RSEG	?PR?_RDCL?Rtc
_RDCL:                      ;read clock

	 CLR CLK
	SETB 	CE
	MOV 	A,#0BFH         
	LCALL 	_CLIN8
	MOV	    A,R1            ; in R3~R1
	MOV 	R0,A
	LCALL 	_CLOUT
	NOP
	CLR 	CE
	 SETB CLK
/*
	MOV 	R0,#032H
	MOV 	A,@R0
	MOV 	39H,A
	MOV 	R0,#033H
	MOV 	A,@R0
	MOV 	R0,#032H
	MOV 	@R0,A
	MOV 	R0,#033H
	MOV 	A,39H
	MOV 	@R0,A
	
	MOV	A,#1FH
	ANL	36H,A
*/
	MOV	A,R1
	DEC	A
	DEC	A
	MOV	R0,A
	MOV	A,@R0
	ANL	A,#1FH
	MOV	@R0,A

	
	RET
       
	RSEG	?PR?_CLOUT?Rtc
_CLOUT:               ;receive 8 bytes  
	MOV 	R3,#08H
OUT:    LCALL 	_CLOUT8
	MOV 	@R0,A
	DEC 	R0
	DJNZ 	R3,OUT
	RET
       
	RSEG	?PR?_CLOUT8?Rtc
_CLOUT8:              ;receive a byte from IO,CLK to ACC 
	MOV 	R4,#08H
OUT8:   
	 SETB IO
	MOV 	C,IO
;          GET_IO 

	RRC 	A
	LCALL 	_CPULSE
	DJNZ 	R4,OUT8
	RET
      
	RSEG	?PR?_CLIN8?Rtc
_CLIN8:                ;send a byte from ACC to IO,CLK  
	MOV 	R4,#08H
IN8:    
	RRC 	A
	MOV 	IO,C
;	     SET_IO

	LCALL 	_CPULSE
	DJNZ 	R4,IN8
	RET
       
	RSEG	?PR?_CPULSE?Rtc
_CPULSE:                ;give a rising edge on CLK pin
	    SETB CLK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP

	     CLR CLK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	RET


	END        

⌨️ 快捷键说明

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