亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtc_ds12887.lib

?? 基于AVR開發系統的DS12887操作程序
?? LIB
?? 第 1 頁 / 共 2 頁
字號:
/* 
****************************************************************************************
源程序文件名:      RTC_DS12887.C
源程序名稱:        實時時鐘芯片 DS12887 接口驅動的源程序文件
程序版本:        1.0
程序功能:          
    本程序是用 ATmega16 控制實時時鐘芯片 DS12887 接口驅動的源程序文件。
程序說明:
    
函數入口參數:      
函數出口參數:      

編譯工具軟件:      CodeVision AVR C 版本:1.24.6 以上
鏈接子程序文件:    

編作者:            磊元
編作者 E-Mail:     PTZSW@163.COM
編制日期:          2005年5月22日
------------------------------------------------------------------------------
適用器件芯片類型:   Atmel 公司生產的8位 RISC 單片機
器件芯片時鐘頻率:   
存儲器模式:        小存儲器模式
外部擴展存儲器大小:0 【字節】
數據堆棧大小:      256 【字節】
------------------------------------------------------------------------------
源程序版本歷史:
2005年5月22日 -------- 版本 1.0 :發行版本
****************************************************************************************
*/


/*======================================================================================
              本源程序包括的頭部文件
======================================================================================*/
#include "RTC_DS12887.h"              /* 本程序的頭部文件 */


/*======================================================================================
                              程序指令代碼清單
======================================================================================*/
/*----------------------------------------------------------------------------
全局靜態變量定義:
----------------------------------------------------------------------------*/
static volatile Uchar8 tasks_time=0;             /* 時間消息的任務變量 */
/* 時間消息的任務變量的各位定義如下:
  ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┓
  ┃  BIT7  ┃  BIT6  ┃  BIT5  ┃  BIT4  ┃  BIT3  ┃  BIT2  ┃  BIT1  ┃  BIT0  ┃
  ┣━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━┫
  ┃  保留  ┃  保留  ┃  保留  ┃  保留  ┃  保留  ┃蜂鳴聲響┃鬧鐘告警┃時間更新┃
  ┗━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┛
*/
static volatile Uint16 buzzer_alarm_counter=0;   /* 蜂鳴器發出聲響次數 */
static volatile BCD_TIME time=BCD_TIME_defaults; /* 系統時間結構變量 */


/*----------------------------------------------------------------------------
函數功能:    本函數用于控制蜂鳴器發出聲響告警的操作,設定蜂鳴器頻率為 2000Hz 。
備注:        蜂鳴器設置為相應的控制引腳高電平時,蜂鳴器發出聲響。
----------------------------------------------------------------------------*/
void Buzzer(void)
{
  Buzzer_DDR |= Buzzer_PINNum;        /* 設置蜂鳴器控制端口為輸出引腳 */
  Buzzer_PORT |= Buzzer_PINNum;       /* 打開蜂鳴器 */  
  delay_us(500);                      /* 延時 500us */
  Buzzer_PORT &= ~Buzzer_PINNum;      /* 關閉蜂鳴器 */
}

#ifdef MCU_No_ExtendedParallelBus     /* 無擴展并行總線結構單片機的條件編譯 */
  /*----------------------------------------------------------------------------
  函數功能:    本函數用于虛擬擴展并行總線結構的向外圍器件寫入數據操作。
  函數入口參數:AccessAddress ------ 訪問的外圍器件地址。
                WriteData ---------- 寫入的數據。
  備注:        本函數僅可訪問外圍器件的地址數不超過256個。
  ----------------------------------------------------------------------------*/
  void VEPB_WriteData(volatile Uchar8 AccessAddress, volatile Uchar8 WriteData)
  {
    VEPB_AD_DDR = 0xFF;                 /* 設置虛擬總線地址/數據總線的數據方向為輸出 */
    VEPB_AD_PORT = AccessAddress;       /* 寫入訪問的外圍器件地址到總線上 */
    VEPB_ALE_PORT |= VEPB_ALE_PINNum;   /* 地址鎖存到外圍器件 */
    VEPB_ALE_PORT &= ~VEPB_ALE_PINNum;
    VEPB_AD_PORT = WriteData;           /* 寫入數據 */
    VEPB_WR_PORT &= ~VEPB_WR_PINNum;    /* 使能寫入數據 */
    VEPB_WR_PORT |= VEPB_WR_PINNum;
  }
  /*----------------------------------------------------------------------------
  函數功能:    本函數用于虛擬擴展并行總線結構的從外圍器件讀取數據操作。
  函數入口參數:AccessAddress ------ 訪問的外圍器件地址。
  函數出口參數:讀取的數據。
  備注:        本函數僅可訪問外圍器件的地址數不超過256個。
  ----------------------------------------------------------------------------*/
  Uchar8 VEPB_ReadData(volatile Uchar8 AccessAddress)
  {
    volatile Uchar8 temp;             /* 出口參數寄存器變量 */
    VEPB_AD_DDR = 0xFF;                 /* 設置虛擬總線地址/數據總線的數據方向為輸出 */
    VEPB_AD_PORT = AccessAddress;       /* 寫入訪問的外圍器件地址到總線上 */
    VEPB_ALE_PORT |= VEPB_ALE_PINNum;   /* 地址鎖存到外圍器件 */
    VEPB_ALE_PORT &= ~VEPB_ALE_PINNum;
    VEPB_AD_DDR = 0x00;                 /* 設置虛擬總線地址/數據總線的數據方向為輸入 */
    VEPB_AD_PORT = 0xFF;                /* 使能虛擬總線地址/數據總線的上拉電阻 */
    VEPB_RD_PORT &= ~VEPB_RD_PINNum;    /* 使能讀取數據 */
    temp = VEPB_AD_PIN;                 /* 讀取數據 */
    temp = VEPB_AD_PIN;                 /* 加大讀取數據脈沖信號的寬度 */
    VEPB_RD_PORT |= VEPB_RD_PINNum;
    return (temp);
  }
#endif                                /* "MCU_No_ExtendedParallelBus" 條件編譯結束 */

/*----------------------------------------------------------------------------
函數功能:    本函數用于外部中斷請求0中斷向量的初始化操作。
備注:        ①.本函數僅在主函數中調用一次即可。
              ②.要使能中斷還必須在主程序中打開全局中斷使能功能,推薦其指令如下:
                  SREG |= BIT7;                       / * 使能全局中斷 * /
----------------------------------------------------------------------------*/
void external_INT0_initialization(void)
{
  #ifdef _MEGA16_INCLUDED_            /* 目標器件芯片為 ATMega16 的條件編譯 */
    MCUCR &= ~BIT0;                     /* 設置外部中斷請求0的觸發方式為:下降沿觸發 */
    MCUCR |= BIT1;
    GICR |= BIT6;                       /* 使能外部中斷請求0 */
    GIFR |= BIT6;                       /* 外部中斷請求0標志位清零 */
  #endif                              /* "_MEGA16_INCLUDED_" 條件編譯結束 */

  #ifdef _MEGA128_INCLUDED_           /* 目標器件芯片為 ATMega128 的條件編譯 */
    EICRA &= ~BIT0;                     /* 設置外部中斷請求0的觸發方式為:下降沿觸發 */
    EICRA |= BIT1;
    EIMSK |= BIT0;                      /* 使能外部中斷請求0 */
    EIFR |= BIT6;                       /* 外部中斷請求0標志位清零 */
  #endif                              /* "_MEGA128_INCLUDED_" 條件編譯結束 */
}

/*----------------------------------------------------------------------------
函數功能:    本函數用于 DS12887 鬧鐘中斷請求和更新周期結束中斷請求處理的中斷服務程序。
備注:        ①.注意:由于本函數為中斷函數,故在調用和返回時無法進行明式數值傳遞,
                  因此將在函數體中隱式修改下面這幾個全局靜態變量數值。
                  ⑴.時間消息的任務變量(tasks_time),用以通知系統執行相應的處理操作。
                  ⑵.系統時間結構變量(time),從 DS12887 中讀取更新的系統時間數值。
              ②.本函數需在設置的 DS12887 中斷請求的中斷向量函數中調用。在調用之前
                  需對該中斷向量進行初始化,以使能該中斷。例:如使用外部中斷請求0,
                  可使用上面提供的 external_INT0_initialization() 函數進行初始化,
                  而將本本函數放在外部中斷請求0服務程序中。
----------------------------------------------------------------------------*/
void DS12887_INT_ISR(void)
{
  register Uchar8 temp;             /* 臨時寄存器變量 */
  register Uchar8 temp2;            /* 臨時寄存器變量2 */
  DS12887_CS_PORT &= ~DS12887_CS_PINNum;/* 置 DS12887 片選控制引腳為L */
  #ifdef MCU_No_ExtendedParallelBus   /* 無擴展并行總線結構單片機的條件編譯 */
    /* 讀取 DS12887 寄存器C(中斷標志寄存器)的內容,訪問該寄存器后將自動清零所有
       標志位,否則芯片將無法產生下一次中斷請求。其次可對讀取的中斷標志位進行判斷。 */
    temp = VEPB_ReadData(DS12887_REG_C);
  #else
    temp = DS12887_REG_C;
  #endif                              /* "MCU_No_ExtendedParallelBus" 條件編譯結束 */
  temp2 = temp;
  /* 檢查是否為鬧鐘中斷?是,則通知系統對鬧鐘請求執行相應的處理 */
  if ((temp&BIT5)==BIT5)
    {
      tasks_time |= BIT1;                 /* 鬧鐘告警消息任務位置位 */
    }
  /* 檢查是否為更新周期結束中斷?是,則通知系統對更新周期結束請求執行相應的處理 */
  if ((temp2&BIT4)==BIT4)
    {
      /* 讀取 DS12887 中更新的系統時間數值 */
      #ifdef MCU_No_ExtendedParallelBus   /* 無擴展并行總線結構單片機的條件編譯 */
        time.BCD_Second = VEPB_ReadData(DS12887_Second);
        time.BCD_Minute = VEPB_ReadData(DS12887_Minute);
        time.BCD_Hour = VEPB_ReadData(DS12887_Hour);
        time.BCD_Date = VEPB_ReadData(DS12887_Date);
        time.BCD_Month = VEPB_ReadData(DS12887_Month);
        time.BCD_Year = VEPB_ReadData(DS12887_Year);
        time.BCD_Year_H = VEPB_ReadData(DS12887_Year_H);
        time.BCD_Week = VEPB_ReadData(DS12887_Week);
      #else
        time.BCD_Second = DS12887_Second;
        time.BCD_Minute = DS12887_Minute;
        time.BCD_Hour = DS12887_Hour;
        time.BCD_Date = DS12887_Date;
        time.BCD_Month = DS12887_Month;
        time.BCD_Year = DS12887_Year;
        time.BCD_Year_H = DS12887_Year_H;
        time.BCD_Week = DS12887_Week;
      #endif                              /* "MCU_No_ExtendedParallelBus" 條件編譯結束 */
      tasks_time |= BIT0;                 /* 時間更新消息任務位置位 */
    }
  DS12887_CS_PORT |= DS12887_CS_PINNum;/* 置 DS12887 片選控制引腳為H */
}

/*----------------------------------------------------------------------------
函數功能:    本函數用于 DS12887 的各控制輸入/輸出引腳定義和初始狀態設置的初始化操作。
備注:        本函數僅在主函數中調用一次即可。
----------------------------------------------------------------------------*/
void RTC_DS12887_initialization(void)
{
  register Uchar8 temp;             /* 臨時寄存器變量 */
/* 下面這些語句用于設置 DS12887 的各控制引腳與MCU的連接定義和初始狀態 */
  DS12887_CS_DDR |= DS12887_CS_PINNum;   /* 設置 DS12887 片選控制為輸出引腳 */
  DS12887_CS_PORT |= DS12887_CS_PINNum;  /* 置 DS12887 片選控制引腳為H */
  DS12887_IRQ_DDR &= ~DS12887_IRQ_PINNum;/* 設置 DS12887 中斷請求為輸入引腳 */
  DS12887_IRQ_PORT |= DS12887_IRQ_PINNum;/* 使能 DS12887 中斷請求引腳的上拉電阻 */
  #ifdef MCU_No_ExtendedParallelBus   /* 無擴展并行總線結構單片機的條件編譯 */
    VEPB_ALE_DDR |= VEPB_ALE_PINNum;    /* 設置虛擬總線控制線地址鎖存使能為輸出引腳 */
    VEPB_ALE_PORT &= ~VEPB_ALE_PINNum; 
    VEPB_WR_DDR |= VEPB_WR_PINNum;      /* 設置虛擬總線控制線寫使能信號為輸出引腳 */
    VEPB_WR_PORT |= VEPB_WR_PINNum;  
    VEPB_RD_DDR |= VEPB_RD_PINNum;      /* 設置虛擬總線控制線讀鎖存信號為輸出引腳 */
    VEPB_RD_PORT |= VEPB_RD_PINNum; 
    VEPB_AD_DDR = 0x00;                 /* 設置虛擬總線地址/數據總線的數據方向為輸入 */
    VEPB_AD_PORT = 0xFF;                /* 使能虛擬總線地址/數據總線的上拉電阻 */
  #else
    MCUCR |= BIT7;                      /* 使能外部存儲器接口 */
  #endif                              /* "MCU_No_ExtendedParallelBus" 條件編譯結束 */

/* 下面這些語句用于 DS12887 初始化操作 */
  DS12887_CS_PORT &= ~DS12887_CS_PINNum;/* 置 DS12887 片選控制引腳為L */
  #ifdef MCU_No_ExtendedParallelBus   /* 無擴展并行總線結構單片機的條件編譯 */
    /* 啟動晶體振蕩器,關閉周期中斷方波輸出 */
    VEPB_WriteData(DS12887_REG_A, 0x20);
    /* 芯片處于正常工作狀態、允許更新周期結束中斷、鬧鐘中斷保持原設置狀態、
       關閉周期中斷、關閉方波輸出、采用 BCD 碼數據格式和 24 小時制模式 */
    temp = VEPB_ReadData(DS12887_REG_B);
    temp &= 0x32;
    temp |= 0x12;
    VEPB_WriteData(DS12887_REG_B, temp);
    /* 檢查內置電池能量狀態?如果電池耗盡,系統將進行告警 */
    temp = VEPB_ReadData(DS12887_REG_D);
    if ((temp&BIT7)==0)
    {
      Buzzer();
    }
    /* 寫入年前兩位數據為 20 */
    VEPB_WriteData(DS12887_Year_H, 0x20);
    /* 讀取 DS12887 寄存器C(中斷標志寄存器)的內容,使該寄存器清零所有標志位 */
    temp = VEPB_ReadData(DS12887_REG_C);
  #else
    /* 啟動晶體振蕩器,關閉周期中斷方波輸出 */
    DS12887_REG_A = 0x20;
    /* 芯片處于正常工作狀態、允許更新周期結束中斷、關閉周期中斷和鬧鐘中斷、
       關閉方波輸出、采用 BCD 碼數據格式和 24 小時制模式 */
    temp = DS12887_REG_B;
    temp &= 0x32;
    temp |= 0x12;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美夫妻性生活| 亚洲乱码国产乱码精品精的特点| 国产黄色精品网站| 一区二区三区在线观看动漫| 91精彩视频在线| 国产在线播精品第三| 亚洲专区一二三| 欧美另类高清zo欧美| 欧美mv日韩mv亚洲| www.亚洲国产| 精品无码三级在线观看视频| 亚洲自拍偷拍综合| 国产精品看片你懂得 | 欧美在线免费观看视频| 国产美女在线观看一区| 日产国产高清一区二区三区| 一区二区三区在线播| 国产欧美日韩在线| 欧美精品一区男女天堂| 欧美放荡的少妇| 在线观看日韩毛片| 99国产精品一区| 国产成人精品亚洲777人妖| 麻豆久久一区二区| 水蜜桃久久夜色精品一区的特点| 一区二区三区91| 亚洲视频你懂的| 中文字幕欧美日韩一区| 久久九九久久九九| 风间由美一区二区av101| 一区二区视频免费在线观看| 国产欧美一区二区精品性| 精品久久久久久亚洲综合网 | 欧美三级日本三级少妇99| 欧美一卡2卡3卡4卡| 91国产成人在线| 91浏览器在线视频| 99国产精品久久久久久久久久| 午夜国产精品影院在线观看| av不卡免费在线观看| 国产日韩欧美激情| 激情六月婷婷久久| 在线观看一区不卡| www国产精品av| 综合婷婷亚洲小说| 豆国产96在线|亚洲| 国产精品视频你懂的| 免费观看在线色综合| 国产精品久久久久久久岛一牛影视 | 色噜噜狠狠色综合欧洲selulu| 久久久影院官网| 欧美日韩不卡一区| 国产精品亚洲人在线观看| 亚洲一区在线视频| 色94色欧美sute亚洲线路一久| 一区二区三区免费在线观看| 97aⅴ精品视频一二三区| 日本伊人色综合网| 国产精品私房写真福利视频| www..com久久爱| av福利精品导航| 亚洲激情自拍视频| 亚洲成人在线网站| 国产午夜精品久久久久久免费视 | 99久久国产综合精品女不卡| 欧美成va人片在线观看| 99久久精品免费观看| 99久久免费精品高清特色大片| 国产精品久久久久影院色老大| 亚洲精品一区二区三区精华液| 91麻豆视频网站| 精品国产露脸精彩对白| 成人av在线播放网址| 日韩三级精品电影久久久| 精品国产免费人成在线观看| 亚洲国产精品国自产拍av| 亚洲精品乱码久久久久久黑人| 亚洲mv大片欧洲mv大片精品| 精品在线免费观看| 成+人+亚洲+综合天堂| 欧美日韩在线免费视频| 精品va天堂亚洲国产| 综合色中文字幕| 奇米综合一区二区三区精品视频| 国产电影精品久久禁18| 欧美亚洲综合色| 精品国产乱码久久久久久蜜臀| 亚洲欧美福利一区二区| 精品综合久久久久久8888| 91在线国产福利| 精品国产乱码久久| 亚洲成人高清在线| 国产成人av资源| 久久综合成人精品亚洲另类欧美 | 久久久久久久电影| 一区二区三区电影在线播| 国内不卡的二区三区中文字幕| 色综合视频一区二区三区高清| 日韩片之四级片| 亚洲永久精品大片| 国产91精品一区二区| 这里只有精品电影| 一区二区在线免费| 成人自拍视频在线观看| 日韩久久免费av| 亚洲国产视频一区| 国产aⅴ综合色| 精品久久国产97色综合| 亚洲 欧美综合在线网络| 91影院在线观看| 久久久久97国产精华液好用吗| 天堂精品中文字幕在线| 91官网在线免费观看| 中文字幕第一区综合| 麻豆一区二区三| 欧美日本韩国一区| 亚洲一线二线三线久久久| 成人做爰69片免费看网站| 欧美精品一区二区在线观看| 男女激情视频一区| 欧美日韩久久久| 一区二区三区免费观看| 99久久精品国产网站| 国产精品美女一区二区| 国产精品亚洲专一区二区三区| 欧美v国产在线一区二区三区| 丝袜美腿成人在线| 欧美日韩亚洲综合在线| 亚洲自拍偷拍九九九| 欧美中文一区二区三区| 亚洲激情六月丁香| 色婷婷久久一区二区三区麻豆| 国产精品伦理在线| 成人福利电影精品一区二区在线观看| 欧美精品一区二区在线播放| 九色porny丨国产精品| 欧美成人伊人久久综合网| 麻豆国产91在线播放| 精品久久久久久久久久久院品网 | 不卡一区中文字幕| 国产精品乱码一区二区三区软件 | 风流少妇一区二区| 欧美国产日本韩| 成人中文字幕合集| 成人欧美一区二区三区在线播放| 成人v精品蜜桃久久一区| 亚洲欧洲精品一区二区三区不卡| 成人18精品视频| 亚洲自拍偷拍欧美| 欧美疯狂性受xxxxx喷水图片| 日韩影院精彩在线| 日韩精品中文字幕一区二区三区 | 日日夜夜免费精品视频| 日韩亚洲欧美综合| 国产在线麻豆精品观看| 国产精品午夜在线观看| 91免费版在线| 亚洲超丰满肉感bbw| 91精品国产综合久久久久久| 久久99精品国产.久久久久久| 国产亚洲va综合人人澡精品| av网站一区二区三区| 亚洲无人区一区| 欧美电影免费观看完整版| 国产99久久久久| 亚洲精品免费在线观看| 欧美一区二区三区播放老司机| 老司机精品视频线观看86| 国产欧美1区2区3区| 日本伦理一区二区| 久久精品二区亚洲w码| 国产精品素人视频| 欧美电影一区二区| 国产精品一区二区免费不卡| 一区二区三区欧美视频| 日韩欧美国产精品一区| 成人久久久精品乱码一区二区三区 | 亚洲天堂精品视频| 欧美精品高清视频| 成人国产精品免费观看动漫| 亚洲成av人在线观看| 久久久久9999亚洲精品| 欧美伊人精品成人久久综合97| 在线观看成人免费视频| 蜜桃视频在线观看一区二区| 国产精品的网站| 日韩亚洲欧美综合| 91亚洲男人天堂| 韩国av一区二区| 亚洲一区二区五区| 欧美国产欧美综合| 91精品国产黑色紧身裤美女| av午夜精品一区二区三区| 麻豆精品视频在线| 亚洲另类春色校园小说| 久久精品一区八戒影视| 欧美男男青年gay1069videost| 成人午夜激情视频| 激情成人综合网| 性欧美疯狂xxxxbbbb|