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

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

?? rtc_ds12887.c

?? 基于AVR開發系統的DS12887操作程序
?? C
?? 第 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一区二区三区免费野_久草精品视频
国产精品久久一卡二卡| 国产99久久久国产精品| 欧洲av在线精品| 亚洲人成亚洲人成在线观看图片| 国产成人av电影在线播放| 久久久精品中文字幕麻豆发布| 国产一区二区0| 久久精品男人天堂av| 高清不卡一区二区| 中文字幕日韩av资源站| 91婷婷韩国欧美一区二区| 亚洲精品久久久久久国产精华液| 色琪琪一区二区三区亚洲区| 一区二区三区精品在线| 欧美日韩卡一卡二| 免费成人av在线| 久久久精品欧美丰满| 91捆绑美女网站| 五月综合激情婷婷六月色窝| 日韩欧美中文一区二区| 国产成人啪午夜精品网站男同| 日韩一区中文字幕| 欧美日韩免费观看一区二区三区| 蜜臀va亚洲va欧美va天堂| 国产性天天综合网| 99视频在线精品| 日本在线不卡视频一二三区| 精品国产成人系列| 91蝌蚪porny成人天涯| 日韩激情一区二区| 久久精品日韩一区二区三区| 色婷婷亚洲综合| 日本欧美韩国一区三区| 国产精品情趣视频| 欧美日韩国产一级片| 国产成人亚洲综合a∨婷婷图片| 一区二区激情小说| 精品福利在线导航| 在线观看日韩毛片| 国内外成人在线| 一个色综合网站| 久久久久久久久久久久久久久99 | 国产精品久久久爽爽爽麻豆色哟哟 | 欧美日韩国产小视频在线观看| 日韩av在线播放中文字幕| 国产精品免费久久| 91精品国产手机| 一本色道久久综合狠狠躁的推荐 | 欧美日韩在线一区二区| 精品一区二区在线观看| 一区二区三区四区在线| 久久久www成人免费无遮挡大片| 欧美亚洲愉拍一区二区| 成人网男人的天堂| 奇米色一区二区| 一区二区三区四区不卡视频 | 91亚洲精华国产精华精华液| 久久国产麻豆精品| 亚洲一区二区高清| 中文字幕日韩欧美一区二区三区| 精品对白一区国产伦| 欧美日韩高清在线播放| 99久久国产免费看| 福利电影一区二区三区| 美女精品自拍一二三四| 午夜影院久久久| 亚洲精品中文在线影院| 亚洲国产精品传媒在线观看| 亚洲精品一区二区三区蜜桃下载 | 91久久精品一区二区三区| 精品在线播放免费| 日本欧美肥老太交大片| 亚洲18色成人| 亚洲综合色网站| 一区二区三区在线观看视频| 国产精品蜜臀在线观看| 国产视频一区在线播放| 久久嫩草精品久久久精品| 日韩欧美电影在线| 日韩一区二区影院| 91麻豆精品国产91久久久资源速度| 欧美最新大片在线看| 欧美写真视频网站| 日本道在线观看一区二区| 色吧成人激情小说| 91福利资源站| 欧美天堂一区二区三区| 欧美日韩第一区日日骚| 欧美另类变人与禽xxxxx| 欧美偷拍一区二区| 91麻豆精品国产自产在线| 在线成人av影院| 日韩视频在线观看一区二区| 日韩三级中文字幕| 久久综合久久综合九色| 久久久久久久久免费| 国产精品国产三级国产| 亚洲免费在线观看视频| 亚洲一区在线观看免费 | 国产精品美日韩| 中文字幕在线不卡| 一区二区三区四区中文字幕| 午夜欧美视频在线观看| 男人操女人的视频在线观看欧美| 精品一区二区免费视频| 国产精品一区二区黑丝| av在线播放一区二区三区| 成人av在线电影| 在线亚洲高清视频| 欧美一区二区视频免费观看| 26uuu久久综合| 国产精品久久看| 亚洲国产美女搞黄色| 美女任你摸久久| 粉嫩一区二区三区性色av| 91久久国产综合久久| 欧美一区二区成人| 中文字幕成人网| 亚洲不卡在线观看| 国产主播一区二区三区| 色偷偷久久人人79超碰人人澡| 91精品国产麻豆| 国产日韩欧美一区二区三区乱码| 亚洲一区在线观看网站| 麻豆成人久久精品二区三区小说| 成人一二三区视频| 欧美日韩国产高清一区二区三区 | 成人免费一区二区三区在线观看| 亚洲国产成人91porn| 国产伦精品一区二区三区视频青涩 | 不卡视频在线观看| 欧美精品一二三四| 国产拍揄自揄精品视频麻豆| 成人免费的视频| 欧美日韩综合一区| 国产网红主播福利一区二区| 亚洲午夜久久久久久久久久久| 紧缚奴在线一区二区三区| 在线欧美一区二区| 国产亚洲一本大道中文在线| 亚洲最快最全在线视频| 国产真实乱偷精品视频免| 91成人在线精品| 国产欧美一区二区精品忘忧草 | 国产欧美日韩三区| 亚洲尤物视频在线| 不卡的电影网站| 久久久久久久电影| 日韩高清在线不卡| 色综合天天综合网国产成人综合天 | 日本一道高清亚洲日美韩| 99精品视频在线播放观看| 2022国产精品视频| 青青青伊人色综合久久| 欧美亚州韩日在线看免费版国语版| 精品国产免费久久| 日韩精品亚洲专区| 欧美亚洲日本一区| 亚洲精品中文字幕乱码三区| 国产精品99久久久久久有的能看 | 国产丶欧美丶日本不卡视频| 日韩欧美123| 首页综合国产亚洲丝袜| 欧洲激情一区二区| 亚洲影视在线播放| 色8久久精品久久久久久蜜| 国产精品初高中害羞小美女文| 国产精品123区| 久久日一线二线三线suv| 老司机精品视频线观看86| 国产精品免费aⅴ片在线观看| 国产盗摄女厕一区二区三区| 精品免费日韩av| 国内精品不卡在线| 欧美精品一区二区在线观看| 另类综合日韩欧美亚洲| 精品免费国产一区二区三区四区| 捆绑调教一区二区三区| 日韩三级在线观看| 激情国产一区二区| 久久久久国产免费免费| 国产suv精品一区二区三区| 久久久久久99精品| 成人动漫av在线| 中文字幕一区二区三区精华液| 91网页版在线| 亚洲最新在线观看| 666欧美在线视频| 久久er99热精品一区二区| 欧美va亚洲va国产综合| 国产成人免费视| 国产精品免费看片| 欧美在线免费观看视频| 日韩国产欧美三级| 亚洲精品一区二区三区99| 成人黄色国产精品网站大全在线免费观看| 国产精品日韩成人| 欧美在线免费视屏| 美女脱光内衣内裤视频久久网站 | 欧美国产激情一区二区三区蜜月|