免费建站系统开源,杭州网站基建,常州网油卷介绍,wordpress 改变字体1、cmos简介。 cmos是主板上一块可读写的RAM芯片。用途#xff1a;主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。cmos芯片是由一块纽扣电池供电。因此在关机状态内部信息也不会丢失。
2、cmos所在的端口。 cmos芯片是挂在cpu的io空间上的.(x86体系是独立编址…1、cmos简介。 cmos是主板上一块可读写的RAM芯片。用途主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。cmos芯片是由一块纽扣电池供电。因此在关机状态内部信息也不会丢失。
2、cmos所在的端口。 cmos芯片是挂在cpu的io空间上的.(x86体系是独立编址的)。cmos拥有两个端口号分别是70h和71h
端口号 权限 长度 作用 70h 不可读可写 8bit 用它来设置cmos中的数据地址 71h 可读可写 8bit 用它来设置70h端口地址中的值
3、cmos中的数据地址对照表。(供编程时查) 地址 数据 备注 00H Time - Seconds 硬件时间的秒 01H Alarm - Seconds 02H Time - Minutes 硬件时间的分 03H Alarm - Minutes 04H Time - Hours 硬件时间的时 05H Alarm - Hours 06H Date - Day of the week 07H Date - Day 08H Date - Month 09H Date - Year 0AH Status Register A 0BH Status Register B 0CH Status Register C 0DH Status Register D 0EH Diagnostic Status 0FH Shutdown Status 10H A: 11H Reserved 12H 0 13H Reserved 14H Equipment Installed 15H Base Memory (high byte) 16H Base memory (low byte) 17H Extended Memory (high byte) 18H Extended Memory (low byte) 19H 0 (C:) Hard Disk Type 1AH 1 (D:) Hard Disk Type 1BH Reserved 1CH Supervisor Password 1DH Supervisor Password 1EH ~ 2DH Reserved 2EH CMOS Checksum (high byte) 2FH CMOS Checksum (low byte) 30H Extended Memory (high byte) 31H Extended Memory (low byte) 32H Date - Century 33H Power On Status 34H3FH Reserved 40H5FH Extended CMOS 60H User Password 61H User Password 62H7FH Extended CMOS
4、编程实例
#ifndef _CMOS_H_
#define _CMOS_H_ 1#include io.h/* CMOS I/O REG */
#define CMOS_ADDR_REG 0x70
#define CMOS_DATA_REG 0x71/* CMOS INDEX */
#define CMOS_INDEX_SECOND 0
#define CMOS_INDEX_SECOND_ALARM 1
#define CMOS_INDEX_MINUTE 2
#define CMOS_INDEX_MINUTE_ALARM 3
#define CMOS_INDEX_HOUR 4
#define CMOS_INDEX_HOUR_ALARM 5
#define CMOS_INDEX_DAY_OF_WEEK 6
#define CMOS_INDEX_DAY_OF_MONTH 7
#define CMOS_INDEX_MONTH 8
#define CMOS_INDEX_YEAR 9#define CMOS_INDEX_STATUS_A 0xA
#define CMOS_INDEX_STATUS_B 0xB
#define CMOS_INDEX_STATUS_C 0xC
#define CMOS_INDEX_STATUS_D 0xD#define CMOS_STATUS_B_DAYLIGHT 1
#define CMOS_STATUS_B_24HOUR 2
#define CMOS_STATUS_B_BINARY 4static inline uint8_t bcd_to_num(uint8_t a)
{return ((a 4) * 10 (a 0xF));
}static inline uint8_t num_to_bcd(uint8_t a)
{return (((a / 10) 4) (a % 10));
}static inline uint8_t cmos_read(uint8_t index)
{outb(CMOS_ADDR_REG, index);return inb(CMOS_DATA_REG);
}static inline void cmos_write(uint8_t index, uint8_t value)
{outb(CMOS_ADDR_REG, index);outb(CMOS_DATA_REG, value);
}#endif /* _CMOS_H_ */