📄 isl1208.h
字号:
#ifndef ISL1208_HEAD
#define ISL1208_HEAD
#ifndef ID_OK
#define ID_OK 0
#define ID_ERR 1
#endif
#ifndef uchar
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#endif
//==================================================================================
//寄存器定义及说明
/*--------------------------------------------------------------------------------------+
| 时钟秒寄存器 Second(地址:0x00),用于设置/读取时钟秒值。 |
| bit7: 保留。 |
| bit6~0:Second BCD 十进制时钟秒值。 |
+-------------------------------------------------------------------------------------*/
#define REG_SECOND 0 // 时钟秒值寄存器。
#define MASK_SECOND 0x7F // bit6~0:BCD 格式秒计时值。
/*--------------------------------------------------------------------------------------+
| 时钟分寄存器 Minute(地址:0x01),用于设置/读取时钟分值。 |
| bit7: 保留。 |
| bit6~0:Minute BCD 十进制时钟分值。 |
+-------------------------------------------------------------------------------------*/
#define REG_MINUTE 1 // 时钟分值寄存器。
#define MASK_MINUTE 0x7F
/*--------------------------------------------------------------------------------------+
| 时钟时寄存器 Hour(地址:0x02),用于设置/读取时钟的时值。 |
| bit7: MIL: 12/24 小时计时方式选择控制位: |
| 1: 选择 24 小时计时方式; |
| 0: 选择 12 小时计时方式。 |
| bit6: 保留。 |
| bit5: A_PM_10HR 24 小时计时方式的时值十位, |
| 或 12 小时计时方式的上/下午状态标志位: |
| 1: 12 小时计时方式下午时间; |
| 0: 12 小时计时方式上午时间。 |
| bit4~0:Hour BCD 十进制时钟时值。 |
+-------------------------------------------------------------------------------------*/
#define REG_HOUR 2 // 时钟世纪、时值寄存器。
#define HOUR_MODE_24 0x80 // 使用 24 小时计时方式。
#define MASK_HOUR_24 0x3F
#define MASK_HOUR_12 0x1F
#define HOUR_NOW_PM 0x20
/*--------------------------------------------------------------------------------------+
| 时钟日寄存器 Date(地址:0x03),用于设置/读取时钟日值。 |
| bit7~6:保留。 |
| bit5~0:Date BCD 十进制时钟日值。 |
+-------------------------------------------------------------------------------------*/
#define REG_DATE 3 // 时钟日值寄存器。
#define MASK_DATE 0x3F
/*--------------------------------------------------------------------------------------+
| 时钟月寄存器 Month(地址:0x04),用于设置/读取时钟月值。 |
| bit7~5:保留。 |
| bit4~0:Month BCD 十进制时钟月值。 |
+-------------------------------------------------------------------------------------*/
#define REG_MONTH 4 // 时钟月值寄存器。
#define MASK_MONTH 0x1F
/*--------------------------------------------------------------------------------------+
| 时钟年寄存器 Year(地址:0x05),用于设置/读取时钟年值。 |
| bit7~0:Year BCD 十进制时钟年值。 |
+-------------------------------------------------------------------------------------*/
#define REG_YEAR 5 // 时钟年值寄存器。
/*--------------------------------------------------------------------------------------+
| 时钟星期寄存器 Week(地址:0x06),设置/读取时钟星期值。星期值具体的表示含义由用户 |
| 自定义,但必须保持连续性。例:0 表示星期天,1 表示星期一,……,6 表示星期 |
| 六等。如 1 表示星期天,则必须 2 表示星期一,……,0 表示星期六。 |
| bit7~3:保留。 |
| bit2~0:Week BCD 十进制时钟星期值。 |
+-------------------------------------------------------------------------------------*/
#define REG_WEEK 6 // 时钟星期值寄存器。
#define MASK_WEEK 0x07
#define WEEK_SUNDAY 0 // 0 表示星期天。
/*--------------------------------------------------------------------------------------+
| 状态寄存器 Status(地址:0x07),用于获取实时钟芯片的当前工作状态。 |
| bit7: ARST 自动复位标志位 BAT、ALM 控制标志位。 |
| 1: 自动复位相关受控位(检测到正确的状态寄存器数据读取操作后,自 |
| 动清零 BAT、ALM 标志位); |
| 0: 手工复位(BAT、ALM 标志位置位后需要软件手工写零清除)。 |
| bit6: XTOSCB 内部振荡器使用控制标志位。 |
| 1: 内部振荡器被关闭(需要在 X1 引脚输入 32.768kHz 时钟信号,以驱 |
| 动芯片计时); |
| 0: 内部振荡器启用,外接 32.768kHz 晶振,以产生时钟信号控制芯片计 |
| 时(上电启动时,该位清零)。 |
| bit5: 保留。 |
| bit4: WRTC 芯片 RTC 寄存器数据写入控制标志位。 |
| 1: 允许对 RTC 寄存器进行数据写入操作(芯片 1Hz 计时信号与写操作 |
| STOP 事件同步); |
| 0: 禁止向 RTC 寄存器写入数据。 |
| bit3: 保留。 |
| bit2: ALM 闹钟时间是否达到状态标志位。 |
| 1: 闹钟时间到(闹钟寄存器值与 RTC 时钟寄存器值一致); |
| 0: 当前不是芯片闹钟寄存器指定时间。 |
| 该标志位只能写入“0”值。 |
| bit1: BAT 备用电池工作状态指示标志位。 |
| 1: 芯片进入备用电池供电工作状态(自动置位); |
| 0: 芯片处于正常工作状态。 |
| 该标志位只能写入“0”值。 |
| bit0: RTCF 芯片第一次上电启动状态指示标志位。 |
| 1: 芯片第一次上电启动(或主、备用电池失效后第一次上电启动); |
| 0: 芯片工作电源一直有效(对 RTC 寄存器写入一字节有效数据后自动复 |
| 位)。 |
+-------------------------------------------------------------------------------------*/
#define REG_STATUS 7 //
#define RTC_STATE_POWERON 0x01 //
#define RTC_STATE_BATTERY 0x02 //
#define RTC_STATE_ALARM 0x04 //
#define RTC_WRITE_ENABLE 0x10 //
#define RTC_OSCILLATE_EXT 0x40 //
#define RTC_AUTO_RESET 0x80
/*--------------------------------------------------------------------------------------+
| 中断控制寄存器 Interrupt(地址:0x08),用于芯片中断控制和输出方波信号选择。 |
| bit7: IM 闹钟闹铃中断控制标志位。 |
| 1: 闹钟闹铃时产生中断(闹铃时间到,在 Fout/#IRQ 引脚输出 250ms |
| 宽的低电平有效中断脉冲信号,请求控制 MCU 处理); |
| 0: 普通闹钟模式(闹铃时间到,ALM 标志置位;Fout/#IRQ 引脚输出低 |
| 电平有效指示信号,直到 ALM 标志位清零时恢复正常状态)。 |
| bit6: ALME 闹钟闹铃功能控制标志位。 |
| 1: 允许芯片内部硬件闹钟闹铃; |
| 0: 禁止芯片闹钟闹铃(允许输出方波时,闹钟闹铃功能自动禁止)。 |
| bit5: LPMODE 芯片进入低功耗工作模式控制标志位。 |
| 1: 芯片进入低功耗工作模式(vDD<vBAT-vBATHYS 时,自动切换到 |
| vBAT 供电); |
| 0: 芯片工作于普通模式(vDD<vBAT-vBATHYS 且 vDD<vTRIP 时,自动 |
| 切换到 vBAT 供电)。 |
| bit4: FOBATB 备用电池工作时芯片 Fout/#IRQ 引脚输出控制标志位。 |
| 1: 备用电池供电工作时芯片禁止输出任何信号; |
| 0: 备用电池供电工作时芯片输出正常方波或闹钟中断信号。 |
| bit3~0:FO3~0 输出方波频率选择: |
| 0000: 0Hz(无方波信号输出); |
| 0001: 32768Hz; |
| 0010: 4096Hz; |
| 0011: 1024Hz; |
| 0100: 64Hz; |
| 0101: 32Hz; |
| 0110: 16Hz; |
| 0111: 8Hz; |
| 1000: 4Hz; |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -