男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
DS1302與PIC16F877接口程序
DS1302與PIC16F877接口程序
 更新時間:2009-7-22 16:39:49  點擊數:0
【字體: 字體顏色
/script>

初學PIC,原來是搞51的.寫了個程序,經過幾天辛苦調試,終于在PIC16F877上運行通過,特此發布,算我初學PIC給大家見面禮,呵呵,希望能有用.
;================================================
;DS1302控制子程序
;=================================================
;程序包括:DS1302初始化,時間數據寫入和讀取程序
;DS1302_init ;init ds1302
;Set_DS1302 ;set time to ds1302
;Get_DS1302 ;get time from ds1302
;=================================================

;============== 1302定義 ===========================================
#DEFINE T_IO PORTE,2 ;1302 I_O
#DEFINE T_CLK PORTE,1 ;1302時鐘
#DEFINE T_RST PORTE,0 ;1302使能位
#DEFINE DS1302_RX 20H ;保存接受的1個數據
#DEFINE DS1302_TX 28H ;準備寫入到DS1302的一個數據

counter equ xxxh
temp_cnt equ xxxh

;**************************************************
; DS1302初始化程序
;**************************************************
DS1302_init
;未寫
return
;**********************************************************
;子程序名:Set_DS1302
;功 能:設置DS1302 初始時間,并啟動計時。
;說 明:
;調 用:Write_byte
;入口參數:初始時間在:W_Second,W_Minute,W_Hour,W_Day,W_Month,W_Week.W_YearL(地址連續)
;出口參數:無
;消耗資源:counter,SecAddr(預定義)
;設 計:zhengYanbo 日 期:2005.4.21
;修 改: 日 期:
;**********************************************************
Set_DS1302:
bcf T_RST
bcf T_CLK
bsf T_RST
movlw 8eh
movwf DS1302_TX ;數據發送寄存器
call Write_byte ;發送字節
movlw 00h ;WP=0
movwf DS1302_TX
call Write_byte
bsf T_CLK
bcf T_RST

movlw W_Second
movwf FSR
movlw counter,D'7'
movlw 80h
movwf SecAddr ;秒寫地址
S13021:
bcf T_RST
bcf T_CLK
bsf T_RST
movf SecAddr,W
movwf DS1302_TX
call Write_byte ;寫秒地址
movf INDF,W
movwf DS1302_TX
call Write_byte ;寫秒數據
incf FSR
incf SecAddr
incf SecAddr
bsf T_CLK
bcf T_RST
decfsz counter,F
goto S13021

bcf T_RST
bcf T_CLK
bsf T_RST
movlw 8eh ;控制寄存器
movwf DS1302_TX
call Write_byte
movlw 80h ;控制WP=1,寫保護
movwf DS1302_TX
call Write_byte
bsf T_CLK
bcf T_RST
return

;**********************************************************
;子程序名:Get_DS1302
;功 能:從DS1302 讀時間
;說 明:
;調 用:Write_byte,Read_byte
;入口參數:時間保存在:R_Second,R_Minute,R_Hour,R_Day,R_Month,R_Week.R_YearL
;出口參數:無
;消耗資源: counter,SecAddr(預先定義)
;設 計:zhengYanbo 日 期:2005.4.21
;修 改: 日 期:
;**********************************************************
Get_DS1302:
movlw R_Second ;準備地址
movwf FSR
movlw D'7'
movwf counter
movlw 81h ;秒讀地址
movwf SecAddr
G13021
bcf T_RST
bcf T_CLK
bsf T_RST
movf SecAddr,W
movwf DS1302_TX
call Write_byte
call Read_byte
movf DS1302_RX,W
movwf INDF
incf FSR
incf SecAddr
incf SecAddr
bsf T_CLK
bcf T_RST
decfsz counter,F ;接受7個數據
goto G13021
return
;**********************************************************
;功 能:寫1302一字節 (內部子程序)
;入口:數據預先在DS1302_TX中
;出口:無
;消耗資源:temp_cnt(預先定義)
;**********************************************************
Write_byte
movlw D'8'
movwf tmp_cnt
W_shift
rrf DS1302_TX,F ;帶C移位(低位在前)
btfsc STATUS,C
goto send_1
bcf T_IO
goto send_0
send_1
bsf T_IO
send_0
bsf T_CLK ;上升沿寫
nop
bcf T_CLK
decfsz temp_cnt,F
goto W_shift
return
;**********************************************************
;功 能:讀1302一字節 (內部子程序)
;入口:無
;出口:數據保存在DS1302_RX中
;消耗資源:temp_cnt(預先定義)
;**********************************************************
Read_byte
bsf STATUS,RP0 ;bank1
bsf TRISE,2 ;設置串行數據口為輸入
bcf STATUS,RP0 ;bank0
movlw D'8'
movwf temp_cnt
R_shift
btfsc T_IO
goto get_1
bcf STATUS,C ;clr c
goto get_0
get_1
bsf STATUS,C
get_0
rrf DS1302_RX,F
bsf T_CLK
nop
bcf T_CLK ;下降沿讀
decfsz temp_cnt,F
goto R_shift

;reset output
bsf STATUS,RP0 ;bank1
bcf TRISE,2 ;設置T_IO為輸出
bcf STATUS,RP0 ;bank0
return
這個程序一定要,PIC默認PORTE為A/D口,切記,切記!改為其他口時候請參考PIC的DATASHEET
;=============================================
; 初始化端口
;=============================================
Port_Init
bsf STATUS,RP0 ;bank1
bcf ADCON1,PCFG0
bsf ADCON1,PCFG1
bsf ADCON1,PCFG2
bcf ADCON1,PCFG3 ;PORTA and PORTE:digital I/O
bcf STATUS,RP0 ;bank0
return
  • 上一篇: PICC寫的讀寫24c0x的例子
  • 下一篇: 用PIC16F877的c語言寫的一個時鬧鐘程序
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 兴宁市| 龙南县| 集安市| 格尔木市| 铜梁县| 固始县| 临清市| 闻喜县| 乐清市| 舒兰市| 杭州市| 闽清县| 克拉玛依市| 宜章县| 乐业县| 濮阳县| 静乐县| 阿合奇县| 荆门市| 平昌县| 新营市| 望都县| 遂川县| 南召县| 深圳市| 新田县| 富阳市| 克山县| 遵义市| 应城市| 剑阁县| 清丰县| 贵德县| 宿州市| 沐川县| 疏勒县| 伊宁县| 河西区| 雅江县| 四会市| 肇州县|