《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > PIC單片機(jī)控制時鐘芯片DS1302匯編程序

PIC單片機(jī)控制時鐘芯片DS1302匯編程序

2015-10-22
關(guān)鍵詞: DS1302 時鐘芯片

#INCLUDE
CBLOCK 20H
SEC ;秒
MIN ;分
HOU ;小時
DATE ;日期
MON ;月
DAY ;日
YERR ;年
DDD ;寫使能位
TIME_TX ;1302發(fā)送寄存器
TIME_RX ;1302接收寄存器
COUNT1 ;
COUNT2 ;
DELAY1
DELAY2
ENDC
*******************************
; ; 1302子程序說明
; ;******************************
; DS1302INI ;1302初始化,先禁止RST,設(shè)定充電方式
; SET_TIME ;一次發(fā)送7個數(shù)據(jù)設(shè)定時間,包含寫使能寄存器,8個數(shù)據(jù)
; GET_TIME ;一次接收7個數(shù)據(jù)顯示時間
; TIME_WRITE_1;一次寫入1302一個字節(jié)
; TIME_READ_1 ;一次接收一個字節(jié)數(shù)據(jù)
; ;******* 1302定義**************
; ;******************************
#DEFINE I_O PORTC,7 ;1302I_O
#DEFINE SCLK PORTC,6 ;1302時鐘
#DEFINE RST PORTA,0 ;1302使能位
#DEFINE RX_ADD 40H ;保存接受的7個數(shù)據(jù)
#DEFINE TX_ADD 20H ;開始保存7個要寫入的時間數(shù)據(jù)
BANK1 MACRO
BSF STATUS,RP0
ENDM
BANK0 MACRO
BCF STATUS,RP0
ENDM

ORG 000H
NOP
GOTO MAIN
MAIN

CALL CLR_RAM 清除RAN
CALL PORT_INI 端口定義
CALL DS1302_INI
CALL SET_TIME 一次寫入7個時間數(shù)據(jù)
CALL GET_TIME ; 一次讀回7個時間數(shù)據(jù)
GOTO $


;; 寫入秒,可以寫任意的7個時間數(shù)據(jù),單字節(jié)
MOVLW B'10000000'
MOVWF TIME_TX
BSF RST
CALL TIME_WRITE_1
MOVLW B'00100101'
MOVWF TIME_TX
CALL TIME_WRITE_1
BCF RST

讀秒,可以讀任意7個時間,單字節(jié)


MOVLW B'10000001'
MOVWF TIME_TX
BSF RST
CALL TIME_WRITE_1
CALL TIME_READ_1
BCF RST

GOTO $

:子程序

**************************************************
; DS1302_INI
; 作用:初始化1302,先禁止RST,允許寫使能
;**************************************************
DS1302_INI
BCF SCLK
BCF RST ;先禁止
MOVLW B'10001110' ;寫使能寄存器
MOVWF TIME_TX
BSF RST
CALL TIME_WRITE_1
MOVLW B'0' ;允許寫使能
MOVWF TIME_TX
CALL TIME_WRITE_1;發(fā)送一個字節(jié)的數(shù)據(jù)
BCF RST

;設(shè)定充電方式

沒有設(shè)定
RETURN

;**************************************************
; SET_TIME
; 作用:一次輸入7個數(shù)據(jù)來一次性的設(shè)定時間,同時使能寫寄存器
; 突發(fā)模式寫入,必須寫入8個數(shù)據(jù),不是7個
; INPUT:要設(shè)定的8個數(shù)據(jù)已經(jīng)寫入到TIME_TX_ADD開始的8個字節(jié)里面
;**************************************************
SET_TIME
MOVLW B'10111110' ;標(biāo)志位
MOVWF TIME_TX
BSF RST
CALL TIME_WRITE_1
;TIME_WRITE_8 ;發(fā)送8個數(shù)據(jù)
MOVLW TIME_TX_ADD ;發(fā)送數(shù)據(jù)的起始地址
MOVWF FSR
MOVLW D'8'
MOVWF COUNT2
TW1
MOVF INDF,W
MOVWF TIME_TX
CALL TIME_WRITE_1
INCF FSR,F
DECFSZ COUNT2,F
GOTO TW1
BCF RST
RETURN
;***********************************************
; GET_TIME
; 作用:一次接受7個字節(jié)的時間數(shù)據(jù),突發(fā)模式讀取
; INPUT:NONE
; OUTPUT:把7個時間數(shù)據(jù)保存在TIME_RX_ADD開始的7個寄存器里面
;***********************************************
GET_TIME
MOVLW B'10111111'
MOVWF TIME_TX
BSF RST
CALL TIME_WRITE_1
;TIME_READ_7 ;接收7個數(shù)據(jù)
MOVLW TIME_RX_ADD ;保存數(shù)據(jù)的起始地址
MOVWF FSR
MOVLW D'7'
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ā)送一個字節(jié)的數(shù)據(jù),用于發(fā)送1302的
; 控制字或者發(fā)送一個數(shù)據(jù)
; INPUT: TIME_TX
;************************************************
TIME_WRITE_1
MOVLW D'8'
MOVWF COUNT1
TLOP
BCF I_O ;初始值是低電平
BCF SCLK
BTFSC TIME_TX,0
BSF I_O
RRF TIME_TX,F
BSF SCLK ;高電平發(fā)送數(shù)據(jù)
DECFSZ COUNT1,F
GOTO TLOP
BCF SCLK ;恢復(fù)
RETURN
;************************************************
; TIME_READ_1
; 作用:讀取1302一個字節(jié)的數(shù)據(jù)
; INPUT: NONE
; OUTPUT:接收數(shù)據(jù)保存在TIME_RX里面
; 原理:在SCLK下降沿接收數(shù)據(jù),低字節(jié)在前,根據(jù)I_O的
; 的電平的高低,采取帶進(jìn)位和不帶進(jìn)位右移.
;***********************************************
TIME_READ_1
BANK1
BSF TRISC,7 ;I_O IS INPUT
BANK0
MOVLW D'8'
MOVWF COUNT1 ;讀取8個字節(jié)
TR1
BCF SCLK ;下降沿讀取
BCF STATUS,C
BTFSC I_O
BSF STATUS,C
RRF TIME_RX,F
BSF SCLK ;恢復(fù)高電平
DECFSZ COUNT1,F
GOTO TR1
BANK1
BCF TRISC,7 ;OUTPUT
BANK0
BCF SCLK ;恢復(fù)
RETURN
NOP

 

PORT_INI
BANK1
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'0'
MOVWF TRISB
MOVLW B'00000111'
MOVWF ADCON1
MOVLW B'00000000'
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個
RETURN
END

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 久久久久久久综合色一本| 亚洲精品在线播放| 香蕉网站在线观看| 国产精品久久福利网站| A级国产乱理伦片| 婷婷被公交车猛烈进出视频| 久久久久亚洲AV成人片| 日韩精品免费一线在线观看| 亚洲人6666成人观看| 欧美精品黑人粗大视频| 人人妻人人狠人人爽| 粉嫩大学生无套内射无码卡视频| 四虎影视久久久免费观看| 蜜桃视频在线观看免费网址入口| 国产成人无码免费看片软件| 巨胸狂喷奶水视频www网站免费| 国产高清不卡无码视频| ?1000部又爽又黄无遮挡的视频 | 亚洲av熟妇高潮30p| 欧美日本免费一区二区三区| 亚洲精品无码久久久久去Q| 特大巨黑人吊性xxx视频| 免费a级毛片高清在钱| 秦老头大战秦丽娟无删节| 内射干少妇亚洲69xxx| 美国一级毛片免费| 啊轻点灬大ji巴太粗太长了欧美 | 天天干天天爽天天操| vvvv99日韩精品亚洲| 女性成人毛片a级| 东京一本一道一二三区| 成人毛片免费观看| 中文字幕人妻三级中文无码视频| 无码超乳爆乳中文字幕久久| 久久久久久久久久久久久久久| 日本性生活网站| 久久久久波多野结衣高潮| 日本一道dvd在线播放| 久久99精品久久久久久久野外| 日本h无羞动漫在线观看网站| 久久久久久AV无码免费网站下载|