?? rtc_ds12887.h
字號:
/*
****************************************************************************************
頭部文件名: RTC_DS12887.H
頭部文件名稱: 實時時鐘芯片 DS12887 接口驅(qū)動的頭部文件
文件版本: 1.0
文件功能:
本文件是對 ATmega16 控制實時時鐘芯片 DS12887 接口驅(qū)動源程序文件的
常量、數(shù)據(jù)結(jié)構(gòu)類型進行定義和函數(shù)原型聲明的頭部文件。
文件說明:
編譯工具軟件: CodeVision AVR C 版本:1.24.6 以上
鏈接文件: 目標(biāo)器件芯片的頭部文件
編作者: 磊元
編作者 E-Mail: PTZSW@163.COM
編制日期: 2005年5月22日
------------------------------------------------------------------------------
頭部文件版本歷史:
2005年5月22日 -------- 版本 1.0 :發(fā)行版本
****************************************************************************************
*/
/*======================================================================================
下面兩條指令是本頭部文件條件編譯的預(yù)處理指令,用于防止本頭部文件被其他文件重復(fù)引用。
======================================================================================*/
#ifndef RTC_DS12887_H /* "RTC_DS12887_H" 條件編譯開始 */
#define RTC_DS12887_H
/*======================================================================================
本頭部文件包括的其他頭部文件
======================================================================================*/
#include "ATmega16.h" /* 包含目標(biāo)器件芯片的頭部文件 */
#include "MCU8Bit_C_DataType.H" /* 包含數(shù)據(jù)類型和位名定義的頭部文件 */
#include "Delay.H" /* 包含延時函數(shù)的頭部文件 */
/*======================================================================================
下面這三條指令是用于區(qū)分編譯系統(tǒng)為 C++ 或 C 的預(yù)處理指令。
"__cplusplus" 為 C++ 預(yù)處理器名字,這三條指令表明接在其下面的那些指令為 C 程序特征。
======================================================================================*/
#ifdef __cplusplus
extern "C" {
#endif
/*======================================================================================
實時時鐘芯片 DS12887 接口的輸入/輸出引腳定義:
注:下列這些定義與硬件設(shè)計相關(guān),如需改變控制的輸入/輸出引腳僅在此重新定義即可。
======================================================================================*/
#define DS12887_CS_DDR DDRB /* DS12887 片選控制端口的數(shù)據(jù)方向寄存器 */
#define DS12887_CS_PORT PORTB /* DS12887 片選控制端口的數(shù)據(jù)寄存器 */
#define DS12887_CS_PINNum BIT7 /* DS12887 的片選控制引腳數(shù)字 */
#define DS12887_IRQ_DDR DDRD /* DS12887 中斷請求端口的數(shù)據(jù)方向寄存器 */
#define DS12887_IRQ_PORT PORTD /* DS12887 中斷請求端口的數(shù)據(jù)寄存器 */
#define DS12887_IRQ_PINNum BIT2 /* DS12887 的中斷請求引腳數(shù)字 */
#define Buzzer_DDR DDRD /* 蜂鳴器控制端口的數(shù)據(jù)方向寄存器 */
#define Buzzer_PORT PORTD /* 蜂鳴器控制端口的數(shù)據(jù)寄存器 */
#define Buzzer_PINNum BIT3 /* 蜂鳴器控制引腳數(shù)字 */
/*----------------------------------------------------------------------------
下列這些定義為單片機無擴展并行總線結(jié)構(gòu)時,使用輸入/輸出引腳虛擬擴展并行總線
控制線的輸入/輸出引腳定義:
注:如果單片機無擴展并行總線結(jié)構(gòu)時,需要在此之前使用下面這條預(yù)編譯命令:
#define MCU_No_ExtendedParallelBus / * 本單片機無擴展并行總線結(jié)構(gòu)聲明 * /
----------------------------------------------------------------------------*/
#ifdef MCU_No_ExtendedParallelBus /* 無擴展并行總線結(jié)構(gòu)單片機的條件編譯 */
#define VEPB_AD_DDR DDRA /* 虛擬總線地址/數(shù)據(jù)總線的數(shù)據(jù)方向寄存器 */
#define VEPB_AD_PORT PORTA /* 虛擬總線地址/數(shù)據(jù)總線的輸出數(shù)據(jù)寄存器 */
#define VEPB_AD_PIN PINA /* 虛擬總線地址/數(shù)據(jù)總線的輸入數(shù)據(jù)寄存器 */
#define VEPB_ALE_DDR DDRB /* 虛擬總線控制線地址鎖存使能的數(shù)據(jù)方向寄存器 */
#define VEPB_ALE_PORT PORTB /* 虛擬總線控制線地址鎖存使能的數(shù)據(jù)寄存器 */
#define VEPB_ALE_PINNum BIT3 /* 虛擬總線控制線地址鎖存使能的引腳數(shù)字 */
#define VEPB_WR_DDR DDRB /* 虛擬總線控制線寫使能信號的數(shù)據(jù)方向寄存器 */
#define VEPB_WR_PORT PORTB /* 虛擬總線控制線寫使能信號的數(shù)據(jù)寄存器 */
#define VEPB_WR_PINNum BIT2 /* 虛擬總線控制線寫使能信號的引腳數(shù)字 */
#define VEPB_RD_DDR DDRB /* 虛擬總線控制線讀鎖存信號的數(shù)據(jù)方向寄存器 */
#define VEPB_RD_PORT PORTB /* 虛擬總線控制線讀鎖存信號的數(shù)據(jù)寄存器 */
#define VEPB_RD_PINNum BIT0 /* 虛擬總線控制線讀鎖存信號的引腳數(shù)字 */
#define DS12887_Second 0x00 /* DS12887 秒數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_SecAlm 0x01 /* DS12887 秒鬧鐘數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_Minute 0x02 /* DS12887 分鐘數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_MinAlm 0x03 /* DS12887 分鐘鬧鐘數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_Hour 0x04 /* DS12887 小時數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_HouAlm 0x05 /* DS12887 小時鬧鐘數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_Week 0x06 /* DS12887 星期數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_Date 0x07 /* DS12887 日期數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_Month 0x08 /* DS12887 月份數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_Year 0x09 /* DS12887 年數(shù)據(jù)的總線輸出地址數(shù)值 */
#define DS12887_REG_A 0x0A /* DS12887 內(nèi)部寄存器A的總線輸出地址數(shù)值 */
#define DS12887_REG_B 0x0B /* DS12887 內(nèi)部寄存器B的總線輸出地址數(shù)值 */
#define DS12887_REG_C 0x0C /* DS12887 內(nèi)部寄存器C的總線輸出地址數(shù)值 */
#define DS12887_REG_D 0x0D /* DS12887 內(nèi)部寄存器D的總線輸出地址數(shù)值 */
#define DS12887_Year_H 0x0E /* DS12887 年數(shù)據(jù)前兩位的總線輸出地址數(shù)值 */
#define DS12887_RAM_STA 0x0F /* DS12887 內(nèi)部靜態(tài)隨機存儲器的起始地址數(shù)值 */
#else
/* 注意:在應(yīng)用此定義前必須在器件芯片的頭部文件中增加存儲器空間大小定義。 */
#define DS12887_Second (*(volatile Uchar8 *)(RAMEND+1))
/* DS12887 秒數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_SecAlm (*(volatile Uchar8 *)(RAMEND+2))
/* DS12887 秒鬧鐘數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_Minute (*(volatile Uchar8 *)(RAMEND+3))
/* DS12887 分鐘數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_MinAlm (*(volatile Uchar8 *)(RAMEND+4))
/* DS12887 分鐘鬧鐘數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_Hour (*(volatile Uchar8 *)(RAMEND+5))
/* DS12887 小時數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_HouAlm (*(volatile Uchar8 *)(RAMEND+6))
/* DS12887 小時鬧鐘數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_Week (*(volatile Uchar8 *)(RAMEND+7))
/* DS12887 星期數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_Date (*(volatile Uchar8 *)(RAMEND+8))
/* DS12887 日期數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_Month (*(volatile Uchar8 *)(RAMEND+9))
/* DS12887 月份數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_Year (*(volatile Uchar8 *)(RAMEND+10))
/* DS12887 年數(shù)據(jù)寄存器的絕對地址 */
#define DS12887_REG_A (*(volatile Uchar8 *)(RAMEND+11))
/* 訪問 DS12887 內(nèi)部寄存器A的絕對地址 */
#define DS12887_REG_B (*(volatile Uchar8 *)(RAMEND+12))
/* 訪問 DS12887 內(nèi)部寄存器B的絕對地址 */
#define DS12887_REG_C (*(volatile Uchar8 *)(RAMEND+13))
/* 訪問 DS12887 內(nèi)部寄存器C的絕對地址 */
#define DS12887_REG_D (*(volatile Uchar8 *)(RAMEND+14))
/* 訪問 DS12887 內(nèi)部寄存器D的絕對地址 */
#define DS12887_Year_H (*(volatile Uchar8 *)(RAMEND+15))
/* DS12887 年數(shù)據(jù)前兩位的總線輸出地址數(shù)值 */
#define DS12887_RAM_STA (*(volatile Uchar8 *)(RAMEND+16))
/* DS12887 內(nèi)部靜態(tài)隨機存儲器的起始地址 */
#endif /* "MCU_No_ExtendedParallelBus" 條件編譯結(jié)束 */
#define DS12887_RAM_SIZE 113 /* DS12887 內(nèi)部靜態(tài)隨機存儲器容量大小【114B】 */
/*======================================================================================
系統(tǒng)時間變量數(shù)據(jù)結(jié)構(gòu)類型定義:
======================================================================================*/
typedef struct { Uchar8 BCD_Second; /* 秒時間變量 */
Uchar8 BCD_Minute; /* 分鐘時間變量 */
Uchar8 BCD_Hour; /* 小時時間變量 */
Uchar8 BCD_Date; /* 日時間變量 */
Uchar8 BCD_Month; /* 月時間變量 */
Uchar8 BCD_Year; /* 年時間變量 */
Uchar8 BCD_Year_H; /* 年前兩位時間變量 */
Uchar8 BCD_Week; /* 星期時間變量 */
} BCD_TIME;
typedef BCD_TIME *BCD_TIME_handle; /* 指向時間變量結(jié)構(gòu)體的指針變量
/*----------------------------------------------------------------------------
系統(tǒng)時間各變量的默認初始化值。
----------------------------------------------------------------------------*/
#define BCD_TIME_defaults { 0, \
0, \
0, \
0, \
0, \
0, \
0, \
0 }
/*======================================================================================
源程序文件中的字符化常數(shù)定義:
======================================================================================*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -