读取CMOS时间并转为十进制

CMOS字节信息(仅列出比较常用的字节)

偏移值描述
0当前秒数
2当前分钟
4当前小时
6星期几
7一个月中的第几天
8几月
9年(仅表示后两位,如2021年,存放的数据为21)

读取CMOS时间步骤:

  1. 先向地址端口(0x70)发送偏移信息,告诉它要读的分,时还是秒
  2. 从数据端口(0x71)读出一个字节数据。

比如要读取当前月份:

outb(0x70, 0x4);
month = inb(0x71);

BCD码转十进制数字

但是要注意读出的数据都是BCD码,要转为正常的十进制。

unsigned char bcd2dec(unsigned char bcd)
{
      return ((bcd & 0xf) + ((bcd>>4)*10));
}

其实原理很简单:
比如BCD码表示15这个数字,表示方式是:0001 1001(前四位表示1,后四位表示5)
BCD码是用四位来表示一个数的。
前四位对应十位,需要乘10,再加上个位(后四位)就是对应的十进制数字了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值