您的位置:首页 > 其它

读取CMOS内存中的时钟

2011-06-10 16:24 162 查看
一、CMOS内存信息详解

一般的PC/AT、286、386、486等微机均配有CMOS芯片,CMOS&127;芯片包含了一个实时钟

和64个字节的CMOS内存。在CMOS内存中,0-0DH为实时钟的有关信息,0E-&127;3FH包含

计算机的硬件配置信息,如常规内存的大小、扩展内存的大小、&127;软盘的类型、固定

盘的类型及其物理参数、显示器的类型等,这些参数与计算机能否正常工作具有密切的

关系,另外还有计算机的开机口令和其它辅助设置信息。表1列出了CMOS内存各字

节的用途。

偏移量

(十六进制)

偏移量

(十进制)

字段长度

(字节)



功能描述

00h
0
1
用BCD描述的当前秒(00-59)
01h
1
1
用BCD描述的报警时钟秒
02h
2
1
用BCD描述的报警当前分钟(00-59)
03h
3
1
用BCD描述的报警时钟分钟
04h
4
1
用BCD描述的报警当前小时(00-23)
05h
5
1
用BCD描述的报警时钟(以小时为单位)
06h
6
1
用BCD描述的当前日期(星期几)(00-06)
07h
7
1
用BCD描述的当前日期(日)(00-31)
08h
8
1
用BCD描述的当前月(00-12)
09h
9
1
用BCD描述的当前年(00-99)
0Ah
10
1
状态注册码A
0Bh
11
1
状态注册码B
0Ch
12
1
状态注册码C
0Dh
13
1
状态注册码D
0Eh
14
1
诊断状态
0Fh
15
1
系统关闭代码
10h
16
1
软盘驱动器类型
11h
17
1
高级BIOS设置选项
12h
18
1
硬盘O/I类型(0-15)
13h
19
1
键盘输人速率与延迟
14h
20
1
安装设备
15h
21
1
从低位字节计数的基本内存,以1K计数
16h
22
1
从高位字节计数的基本内存,以1K计数
17h
23
1
从低位字节计数的扩展内存,以1K计数
18h
24
1
从高位字节计数的扩展内存,以1K计数
19h
25
1
硬盘扩展类型0(0-255)
1Ah
26
1
硬盘扩展类型1(0-255)
1Bh
27
8
硬盘0的用户定义类型信息
24h
36
8
硬盘1的用户定义类型信息
2Dh
45
1
高级BIOS设置选项
2Eh
46
1
高位字节CMOS校验和
2Fh
47
1
低位字节CMOS校验和
30h
48
1
从低位字节计数的POST报告扩展内存
31h
49
1
从高位字节计数的POST报告扩展内存
32h
50
1
BCD码公元数(00-90)
33h
51
1
通电自检信息标志
34h
52
2
高级BIOS设置选项
36h
54
1
指定芯片组的BIOS设置选项
37h
55
7
加电口令(通常加密)
3Eh
62
1
从高位字节计数的扩展CMOS校验和
3Fh
63
1
从低位字节计数的扩展CMOS校验和
二、读写CMOS内存的方法

CMOS内存的地址口和数据口的口地址分别为70H和71H。在对CMOS内存进行写操作时,首先

将要写入的CMOS内存的地址送到口地址70H,&127;再将要写入的数据送口地址71H。在对

CMOS内存进行读操作时,首先将要读出的CMOS内存的地址送到口地址70H,再从口地址71H

读出数据到AL寄存器。

三、Linux下的c程序如下

#include <unistd.h>
#include <malloc.h>
#include <stdio.h>
#include <time.h>
#include <sys/io.h>
#define CMOS_READ(addr)({/
outb(0x80|addr,0x70);inb(0x71);})
#define BCD_TO_BIN(val) ((val)=((val)&15)+((val)>>4)*10)
int main()
{
iopl(3);
struct tm * time;
time=(struct tm *)malloc(sizeof(struct tm));
do{
time->tm_sec=CMOS_READ(0);
time->tm_min=CMOS_READ(2);
time->tm_hour=CMOS_READ(4);
}while(time->tm_sec!=CMOS_READ(0));
BCD_TO_BIN(time->tm_sec);
BCD_TO_BIN(time->tm_min);
BCD_TO_BIN(time->tm_hour);
printf("%d-%d-%d",time->tm_sec,time->tm_min,time->tm_hour);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: