Linux操作系统内核对RTC的编程详解 (3)

寄存器C是RTC芯片的中断请求状态寄存器,Linux用宏别名RTC_INTR_FLAGS来表示寄存器C,它与其中的各标志位的定义如下所示

寄存器C是RTC芯片的中断请求状态寄存器,Linux用宏别名RTC_INTR_FLAGS来表示寄存器C,它与其中的各标志位的定义如下所示:

#define RTC_INTR_FLAGS RTC_REG_C 
/* caution - cleared by read */ 
# define RTC_IRQF 0x80 /* any of the following 3 is active */ 
# define RTC_PF 0x40 
# define RTC_AF 0x20 
# define RTC_UF 0x10

寄存器D仅定义了其最高位bit[7],以表示RTC芯片是否有效。因此寄存器D也称为RTC的有效寄存器。Linux用宏别名RTC_VALID来表示寄存器D,如下:

#define RTC_VALID RTC_REG_D 
# define RTC_VRT 0x80 /* valid RAM and time */

(3)二进制格式与BCD格式的相互转换

由于时间与日期寄存器中的值可能以BCD格式存储,也可能以二进制格式存储,因此需要定义二进制格式与BCD格式之间的相互转换宏,以方便编程。如下:

#ifndef BCD_TO_BIN 
#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10) 
#endif 

#ifndef BIN_TO_BCD 
#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10) 
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值