讀取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,再加上個位(後四位)就是對應的十進制數字了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章