; 实时时钟芯片 ; DS12C887 ; 通信子程序 ;--------------------- WRITE MOVLW B'01000000' MOVWF TRISC MOVLW 0 MOVWF TRISD BSF RC,CS2 BCF RC,E BSF RC,DS BSF RC,RW BSF RC,AS MOVF ADDR1,W MOVWF RD BCF RC,CS1 BCF RC,AS BCF RC,RW MOVF DATA1,W MOVWF RD BSF RC,RW BSF RC,CS1 BSF RC,AS CLRWDT RETLW 0 ;------------------------------ READ MOVLW B'01000000' MOVWF TRISC MOVLW 0 MOVWF TRISD BSF RC,CS2 BCF RC,E BSF RC,DS BSF RC,RW BSF RC,AS MOVF ADDR1,W MOVWF RD BCF RC,CS1 BCF RC,AS BCF RC,DS CLRF RD ; MOVLW 0FFH MOVWF TRISD MOVF RD,1 MOVF RD,W MOVWF DATA1 BSF RC,DS BSF RC,CS1 BSF RC,AS MOVLW 0 MOVWF TRISD CLRWDT RETLW 0 ;-------------------------- ; 实际用法 ;-------------------------- ; 实时时钟设置 ;----------------------------- RTCST MOVLW 0AH MOVWF ADDR1 MOVLW B'00101111' MOVWF DATA1 CALL WRITE MOVLW 0BH MOVWF ADDR1 MOVLW B'00001010' MOVWF DATA1 CALL WRITE RETLW 0 ;---------------------------- ; 读时间信息(年,月,日,秒等) ;---------------------------- READRTC MOVLW 9 MOVWF ADDR1 CALL READ1 CALL RTCERR MOVF DATA1,W MOVWF YEAR MOVLW 8 MOVWF ADDR1 CALL READ1 CALL RTCERR MOVF DATA1,W MOVWF MON MOVLW 7 MOVWF ADDR1 CALL READ1 CALL RTCERR MOVF DATA1,W MOVWF DATE MOVLW 6 MOVWF ADDR1 CALL READ1 CALL RTCERR MOVF DATA1,W MOVWF WEEK MOVLW 4 MOVWF ADDR1 CALL READ1 CALL RTCERR MOVF DATA1,W MOVWF HOU MOVLW 2 MOVWF ADDR1 CALL READ1 CALL RTCERR MOVF DATA1,W MOVWF MIN RETLW 0 ;---------------------------- END