#define M_RTC8564 0xA2
#define M_I2CWRITE 0
#define M_I2CREAD 1
#define M_CTRL1 0x00 // 機能設定
#define M_CTRL2 0x01 // アラーム/タイマー設定
#define M_SEC 0x02 // 値(秒)
#define M_MIN 0x03 // 値(分)
#define M_HOUR 0x04 // 値(時)
#define M_DAY 0x05 // 値(日)
#define M_WDAY 0x06 // 値(曜日0=日〜6=土)
#define M_MONTH 0x07 // 値(月)
#define M_YEAR 0x08 // 値(年)
#define M_ALARM_MINUTE 0x09 // アラームレジスタ(分桁)
#define M_ALARM_HOUR 0x0a // アラームレジスタ(時桁)
#define M_ALARM_DAY 0x0b // アラームレジスタ(日桁)
#define M_ALARM_WEEKDAY 0x0c // アラームレジスタ(曜日)
#define M_CKOUT 0x0d // CLKOUT周波数
#define M_CTRLT 0x0e // タイマーコントロール
#define M_TIMER 0x0f // タイマーレジスタ
void writeI2C(unsigned short nModule, unsigned short nAddress, unsigned short nData)
{
Soft_I2C_Start();
Soft_I2C_Write(nModule|M_I2CWRITE);
Soft_I2C_Write(nAddress);
Soft_I2C_Write(nData);
Soft_I2C_Stop();
}
void main()
{
:
:
Soft_I2C_Init();
Delay_ms(500);
// ▼RTC8564初期化
writeI2C(M_RTC8564, M_CTRL1, 0x20); // [00] 停止状態初期化
writeI2C(M_RTC8564, M_CTRL2, 0x00); // [01] TI/TP=OFF AF=0 TF=0 AIE=OFF TIE=OFF
writeI2C(M_RTC8564, M_CKOUT, 0x00); // [0D] FE=ON FD1=1 FD0=0 (CLKOUT ON/32Hz)
writeI2C(M_RTC8564, M_CTRLT, 0x00); // [0E] TE=OFF TD1=0 TD0=0 (タイマーOFF)
writeI2C(M_RTC8564, M_CTRL1, 0x00); // [00] 機能開始
|