?? ds1302 error.txt
字號(hào):
在畢業(yè)設(shè)計(jì)時(shí),我要使用一個(gè)時(shí)鐘芯片,我選擇了ds1302。
我參考了《pic系列單片機(jī)接口技術(shù)及應(yīng)用系統(tǒng)設(shè)計(jì)》(北航出版社)中的程序。但是在讀秒寄存器的數(shù)據(jù)時(shí),始終讀出00。不知道是哪里出了問(wèn)題。程序如下:
FSR EQU 4
RB EQU 6
LP1 EQU 8 ;循環(huán)次數(shù)計(jì)數(shù)器1
LP2 EQU 9 ;循環(huán)次數(shù)計(jì)數(shù)器2
TRBUF EQU 0AH ;數(shù)據(jù)暫存器
BUFF EQU 0BH
XBUF EQU 10H ;準(zhǔn)備寫(xiě)入DS1302的日歷/時(shí)鐘數(shù)據(jù)首址 X代表寫(xiě)
DBUF EQU 18H ;從讀出的日歷/時(shí)鐘數(shù)據(jù)首址 D代表讀
RST EQU 7
IO EQU 6
CLK EQU 5
ORG 7FFH
GOTO MAIN
ORG 0H
MAIN MOVLW 0
TRIS RB
NOP
NOP
BCF RB,CLK
BCF RB,RST
MOVLW 8EH
MOVWF TRBUF
BSF RB,RST
CALL CMD
MOVLW 0
MOVWF TRBUF
CALL CMD
BCF RB,RST
MOVLW 90H ;捐流充電命令
MOVWF TRBUF
BSF RB,RST
CALL CMD
MOVLW 10101011B
MOVWF TRBUF
CALL CMD
BCF RB,RST
MOVLW 0BEH ;日歷/時(shí)鐘突發(fā)寫(xiě)命令
MOVWF TRBUF
BSF RB,RST
CALL CMD
CALL WRT
BCF RB,RST
MOVLW 0BFH
MOVWF TRBUF
BSF RB,RST
CALL CMD
CALL RD
NOP
LOOP GOTO LOOP
;讀出DS1302日歷/時(shí)鐘的7個(gè)字節(jié)
RD MOVLW DBUF
MOVWF FSR
MOVLW 40H
TRIS RB
NOP
MOVLW 7
MOVWF LP1
RD2 BSF RB,CLK
MOVLW 8
MOVWF LP2
RD1 BCF RB,CLK
BCF 3,0
BTFSC RB,IO
BSF 3,0
RRF BUFF
BSF RB,CLK
DECFSZ LP2
GOTO RD1
MOVF BUFF,0
MOVWF 0
INCF FSR
DECFSZ LP1
GOTO RD2
BCF RB,CLK
BCF RB,RST
RETLW 0
;向DS1302串入八位數(shù)據(jù)
CMD BCF RB,CLK
BCF RB,IO
MOVLW 8
MOVWF LP1
CMD1 BCF RB,CLK
BTFSC TRBUF,0
BSF RB,IO
BTFSS TRBUF,0
BCF RB,IO
RRF TRBUF
BSF RB,CLK
DECFSZ LP1
GOTO CMD1
BCF RB,CLK
RETLW 0
;將以XBUF為首地址的連續(xù)7字節(jié)日歷/時(shí)鐘數(shù)據(jù)寫(xiě)入DS1302
WRT BCF RB,CLK
BCF RB,IO
MOVLW XBUF
MOVWF FSR
MOVLW 7
MOVWF LP1
WRT1 MOVF 0,0
MOVWF TRBUF
MOVLW 8
MOVWF LP2
WRT2 BCF RB,CLK
BTFSC TRBUF,0
BSF RB,IO
BTFSS TRBUF,0
BCF RB,IO
RRF TRBUF
BSF RB,CLK
DECFSZ LP2
GOTO WRT2
INCF FSR
DECFSZ LP1
GOTO WRT1
BCF RB,CLK
BCF RB,RST
RETLW 0
在程序中,我沒(méi)有采用多字節(jié)突發(fā)模式,只是把秒寄存器初始化為10。
另外:ds1302不接備用電源行嗎?
是不是只要按照規(guī)定賦值給寫(xiě)保護(hù)寄存器,給秒寄存器一個(gè)初始值,時(shí)鐘芯片ds1302就開(kāi)始自己按秒、分、時(shí)計(jì)時(shí)?
如何分辨晶振的好壞?
我先在這里謝謝花費(fèi)時(shí)間解答我問(wèn)題的高手。謝謝!
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -