<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 時(shí)鐘芯片DS1302的PIC程序

時(shí)鐘芯片DS1302的PIC程序

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò ) 收藏

include

本文引用地址:http://dyxdggzs.com/article/201611/316531.htm

CBLOCK 20H
SEC ;秒
MIN ;分
HOU ;小時(shí)
DATE ;日期
MON ;月
DAY ;日
YERR ;年
DDD ;寫(xiě)使能位
TIME_TX ;1302發(fā)送寄存器
TIME_RX ;1302接收寄存器
COUNT1 ;
COUNT2 ;
DELAY1
DELAY2
ENDC

;=================================
;1302子程序說(shuō)明
; DS1302INI ;1302初始化,先禁止RST,設定充電方式
; SET_TIME ;一次發(fā)送7個(gè)數據設定時(shí)間,包含寫(xiě)使能寄存器,8個(gè)數據
; GET_TIME ;一次接收7個(gè)數據顯示時(shí)間
; TIME_WRITE_1 ;一次寫(xiě)入1302一個(gè)字節
; TIME_READ_1 ;一次接收一個(gè)字節數據

;============== 1302定義 ===================
#DEFINE I_O PORTC,7 ;1302I_O
#DEFINE SCLK PORTC,6 ;1302時(shí)鐘
#DEFINE RST PORTA,0 ;1302使能位
#DEFINE RX_ADD 40H ;保存接受的7個(gè)數據
#DEFINE TX_ADD 20H ;開(kāi)始保存7個(gè)要寫(xiě)入的時(shí)間數據
BANK1 MACRO
BSF STATUS,RP0
ENDM
BANK0 MACRO
BCF STATUS,RP0
ENDM

;======================================
ORG 00H
NOP
GOTO MAIN
MAIN
CALL CLR_RAM ;清除RAN
CALL PORT_INI ;端口定義
CALL DS1302_INI
CALL SET_TIME ; 一次寫(xiě)入7個(gè)時(shí)間數據
CALL GET_TIME ; 一次讀回7個(gè)時(shí)間數據
GOTO $


;寫(xiě)入秒,可以寫(xiě)任意的7個(gè)時(shí)間數據,單字節
MOVLW B10000000
MOVWF TIME_TX
BSF RST
CALL CMD
MOVLW B00100101
MOVWF TIME_TX
CALL CMD
BCF RST

;讀秒,可以讀任意7個(gè)時(shí)間,單字節
MOVLW B10000001
MOVWF TIME_TX
BSF RST
CALL CMD
CALL TIME_READ_1
BCF RST
GOTO $

;**************************************************
; DS1302_INI:子程序
; 作用:初始化1302,先禁止RST,允許寫(xiě)使能
;**************************************************
DS1302_INI
BCF SCLK
BCF RST ;先禁止
MOVLW B10001110 ;寫(xiě)使能寄存器
MOVWF TIME_TX
BSF RST
CALL CMD
MOVLW B0 ;允許寫(xiě)使能
MOVWF TIME_TX
CALL CMD ;發(fā)送一個(gè)字節的數據
BCF RST

;設定充電方式 沒(méi)有設定
RETURN

;**************************************************
; SET_TIME
; 作用:一次輸入7個(gè)數據來(lái)一次性的設定時(shí)間,同時(shí)使能寫(xiě)寄存器
; 突發(fā)模式寫(xiě)入,必須寫(xiě)入8個(gè)數據,不是7個(gè)
; INPUT:要設定的8個(gè)數據已經(jīng)寫(xiě)入到TIME_TX_ADD開(kāi)始的8個(gè)字節里面
;**************************************************
SET_TIME
MOVLW B10111110 ;標志位
MOVWF TIME_TX
BSF RST
CALL CMD
;TIME_WRITE_8 ;發(fā)送8個(gè)數據
MOVLW TX_ADD ;//發(fā)送數據的起始地址
MOVWF FSR
MOVLW D8
MOVWF COUNT2
TW1
MOVF INDF,W
MOVWF TIME_TX
CALL CMD
INCF FSR,F
DECFSZ COUNT2,F
GOTO TW1
BCF RST
RETURN

;***********************************************
; GET_TIME
; 作用:一次接受7個(gè)字節的時(shí)間數據,突發(fā)模式讀取
; INPUT:NONE
; OUTPUT:把7個(gè)時(shí)間數據保存在TIME_RX_ADD開(kāi)始的7個(gè)寄存器里面
;***********************************************
GET_TIME
MOVLW B10111111
MOVWF TIME_TX
BSF RST
CALL CMD
;TIME_READ_7 ;接收7個(gè)數據
MOVLW RX_ADD ;保存數據的起始地址
MOVWF FSR
MOVLW D7
MOVWF COUNT2
TR2
CALL TIME_READ_1
MOVF TIME_RX,W
MOVWF INDF
INCF FSR,F
DECFSZ COUNT2,F
GOTO TR2
BCF RST
RETURN

;************************************************
; TIME_WRITE_1
; 作用:一次發(fā)送一個(gè)字節的數據,用于發(fā)送1302的
; 控制字或者發(fā)送一個(gè)數據
; INPUT: TIME_TX
;************************************************
CMD
MOVLW D8
MOVWF COUNT1
TLOP
BCF I_O ;初始值是低電平
BCF SCLK
BTFSC TIME_TX,0
BSF I_O
RRF TIME_TX,F
BSF SCLK ;高電平發(fā)送數據
DECFSZ COUNT1,F
GOTO TLOP
BCF SCLK ;恢復
RETURN

;************************************************
; TIME_READ_1
; 作用:讀取1302一個(gè)字節的數據
; INPUT: NONE
; OUTPUT:接收數據保存在TIME_RX里面
; 原理:在SCLK下降沿接收數據,低字節在前,根據I_O的
; 的電平的高低,采取帶進(jìn)位和不帶進(jìn)位右移.
;***********************************************
TIME_READ_1
BANK1
BSF TRISC,7 ;I_O IS INPUT
BANK0
MOVLW D8
MOVWF COUNT1 ;讀取8個(gè)字節
TR1
BCF SCLK ;下降沿讀取
BCF STATUS,C
BTFSC I_O
BSF STATUS,C
RRF TIME_RX,F
BSF SCLK ;恢復高電平
DECFSZ COUNT1,F
GOTO TR1
BANK1
BCF TRISC,7 ;OUTPUT
BANK0
BCF SCLK ;恢復
RETURN

;======================================
PORT_INI
BANK1
MOVLW B00000000
MOVWF TRISC
MOVLW B0
MOVWF TRISB
MOVLW B00000111
MOVWF ADCON1
MOVLW B00000000
MOVWF TRISA
BANK0
MOVLW 18H
MOVWF 20H
MOVLW 19H
MOVWF 21H
MOVLW 05H
MOVWF 22H
MOVLW 13H
MOVWF 23H
MOVLW 14H
MOVWF 24H
MOVLW 15H
MOVWF 25H
MOVLW 16H
MOVWF 26H
RETURN

;==========================
CLR_RAM
MOVLW 20H
MOVWF FSR
LOOP
CLRF INDF
INCF FSR,F
BTFSS FSR,7
GOTO LOOP ;清除32個(gè)
RETURN
;==========================
END



關(guān)鍵詞: 時(shí)鐘芯片DS1302PIC程

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>