DS12C887 RTC控制

這是使用16F877A控制DS12C887+的Intel bus讀寫時序程式

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DS12C887命令寫入 RW
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RTC_WRITE:
BANKSEL	TRISB
MOVLW	0x00		;PORTB=OUTPUT
MOVWF	TRISB		;資料傳出
BANKSEL	PORTD
<span id="more-496"></span>BSF	PORTD,DS
BSF	PORTD,RW
BSF	PORTD,AS
BCF	PORTD,CS

MOVF	ADDRESS,W	;寫入位址
MOVWF	PORTB
BCF	PORTD,AS
BCF	PORTD,RW	;寫入資料
MOVF	CMD,W
MOVWF	PORTB
BSF	PORTD,RW

MOVLW	0x08		;禁能DS12C887
MOVWF	PORTD
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DS12C887資料讀出 DS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RTC_READ:
BANKSEL	TRISB
MOVLW	0x00		;PORTB=OUTPUT
MOVWF	TRISB		;資料傳出
BANKSEL	PORTD

BSF	PORTD,DS
BSF	PORTD,RW
BSF	PORTD,AS
BCF	PORTD,CS

MOVF	ADDRESS,W	;寫入位址
MOVWF	PORTB
BCF	PORTD,AS

BANKSEL	TRISB
MOVLW	0xFF		;PORTB=INPUT
MOVWF	TRISB		;資料寫入
BANKSEL	PORTD
BCF	PORTD,DS	;讀出資料
NOP
MOVF	PORTB,W
MOVWF	RTC_VALUE
BSF	PORTD,DS

MOVLW	0x08		;禁能DS12C887
MOVWF	PORTD
RETURN
<strong><span style="color: #ff0000;">以上讀寫程序程式僅供參考</span></strong>

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料