PMU_SC equ 6Ch ;命令端口
PMU_DATA equ 68h ;数据端口
RD_EC_SMI equ 80h ;读寄存器命令
POLLING_DATA equ 0E7h ;CPU温度寄存器号
看上面的定义,PMU寄存器读取的步骤是这样的:
1.等待输入缓冲器空,即PMU将上一条命令处理完毕;
1.将命令(RD_EC_SMI)写入命令端口(PMU_SC);
2.等待输入缓冲器空,即PMU将命令(RD_EC_SMI)处理完毕;
3.将要访问的寄存器号(POLLING_DATA)写入数据端口(PMU_DATA);
4.等待输出缓冲器满,即PMU将从寄存器(POLLING_DATA)读出的数据放到输出缓冲器;
5.将数据从数据端口(PMU_DATA)读出。
(说明,这里的输入输出缓冲是指的PMU的缓冲。)
这样,就完成了一次读操作,写操作和其类似。
具体代码如下:
;AL-----CPU Temperature
GetCPUTempe proc
pusha
pushf
cli
mov dx,PMU_SC
mov al,RD_EC_SMI
call pmuWait4IBE ;Must have
out dx,al
mov dx,PMU_DATA
mov al,POLLING_DATA
call pmuWait4IBE ;Must have
out dx,al
mov dx,PMU_DATA
call pmuWait4OBF ;Must have
in al,dx ;Get Temperature
sti
popf
popa
GetCPUTempe endp
;#########################################################
pmuWait4IBE proc
PUSH AX
PW4IBE:
IN AL, 06CH ; Read PMU status
TEST AL, 2 ; Is Input Buffer Empty?
JNZ PW4IBE ; Jmp if no
POP AX
ret
pmuWait4IBE endp;END OF PMUWAIT4IBE
;#########################################################
pmuWait4OBF proc
PUSH AX
PW4OBF:
IN AL, 06CH ; Read PMU status
TEST AL, 1 ; Is Output Buffer Full?
JZ PW4OBF ; Jmp if no
POP AX
ret
pmuWait4OBF endp;END OF PMUWAIT4OBF
;#########################################################
上面pmuWait4IBE、pmuWait4OBF两个函数就是等待缓冲器的函数,其中都直接读取了命令端口6Ch(PMU_SC)的内容,关于读出的内容的说明可以参见我发的PMU的说明的第18页下面的那张表。
下面讲一下怎样把上面的代码用vc实现(讲的不好不要用臭鸡蛋扔我啊!):
众所周知,windows下无法直接读写硬件端口,要想实现上面的程序,我们只有借助强大的winio。
在VC中新建个工程,将winio压缩包中的winio.h包括进去,按alt+F7,在lib里面把winio.lib加进去(班门弄斧了^_^)。其实winio的压缩包中有详细的说明:
程序一开始先调用InitializeWinio(),结束时再调用ShutdownWinio()。呵呵!这就不用我多说了。
我们这个程序主要用到的winio的函数是
GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);//读端口
SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);//写端口
看了函数定义,各位高手肯定知道怎么用了吧!^_^
by zkxz
分享到:
相关推荐
在本篇中,我们将详细探讨如何使用OpenHardwareMonitorLib.dll这个库在C#环境中读取CPU温度。 OpenHardwareMonitor是一个开源的硬件监控软件,它能够监视电脑内部的各种硬件状态,如CPU、GPU、硬盘等的温度、负载...
2. 最重要的是参考Intel手册通过读取MSR来读取DTS(Digital Thermal Senser)的值来获取CPU温度 3. 大概讲述了通过WMI,Win32_TemperatureProbe Class,以及WinIO的方式 4. 资源包中包括:Win32_TemperatureProbe ...
在本文中,我们将深入探讨如何使用C语言在Windows操作系统中检测CPU温度。C语言是一种强大的、通用的编程语言,能够直接与系统硬件交互,因此非常适合进行底层系统编程,如CPU温度监测。 首先,我们需要理解CPU温度...
### VB-CPU温度检测 #### 知识点一:使用WMI查询CPU温度 在VBScript或VBA中,可以通过Windows Management Instrumentation (WMI)来获取系统的各种信息,包括CPU温度。WMI是一个用于访问、配置、管理和监视Windows...
在实际应用中,有时我们需要监控CPU的温度以确保设备稳定运行和寿命,本篇将详细介绍如何使用STM32H743读取CPU温度,并结合提供的源码进行解析。 STM32H743内部集成了一个温度传感器,该传感器能够检测MCU芯片的...
获取CPU温度的一种常见方法是使用rsmgr(Resource Manager)接口。这是一个系统资源管理工具,它可以提供硬件状态信息,包括CPU的温度。在Windows操作系统中,开发者可以通过编写程序调用rsmgr API来获取这些数据。...
"CPU温度检测工具迷你版"是一款专为此目的设计的小巧实用的软件,它能够帮助用户实时监控计算机中央处理器(CPU)的温度以及其占用率。 CPU温度是衡量计算机稳定性和潜在故障的重要指标。过高温度可能导致系统过热...
在本文中,我们将深入探讨如何在STM32微控制器上实现CPU温度采集。STM32是意法半导体(STMicroelectronics)推出的一款基于ARM Cortex-M内核的微控制器系列,广泛应用在各种嵌入式系统中。温度采集是监控系统运行...
在Windows环境下,通过编程获取CPU温度是一项常见的任务,特别是在系统监控、硬件管理和性能优化领域。本文将详细探讨如何使用C/C++语言,结合Visual Studio(VS)开发环境,实现CPU温度读取的功能。 首先,我们...
本文将深入探讨如何获取CPU温度和硬盘信息,特别是对于32位或64位Intel CPU的用户。首先,我们要理解的是,CPU温度的监测有助于预防过热问题,而硬盘状态的监控则能预防数据丢失和设备故障。 获取CPU温度,通常需要...
本文将深入探讨与这个源码相关的技术知识点,包括VB编程语言、CPU温度监测原理以及可能对CPU温度的影响。 首先,VB(Visual Basic)是微软推出的一种基于事件驱动的编程语言,它以其易学易用的特性深受程序员喜爱。...
标题中的"C#读取电脑CPU温度winform程序VS2012使用OpenHardwareMonitorLib.dll库"揭示了我们要探讨的核心技术点。这是一个基于C#语言的Windows Forms(WinForm)应用程序,利用Visual Studio 2012(VS2012)开发环境...
为了确保准确无误的温度读数,CPU温度测试工具通常需要访问主板上的热感测元件,这些元件包括热敏电阻(Thermistor)或数字温度传感器(DTS)。这些传感器将温度信息转换为电信号,然后由软件解析并显示在用户界面上...
CPU温度测试是维护计算机系统健康运行的重要环节,尤其对于高性能计算和长时间运行的用户来说,了解CPU的工作温度有助于预防过热导致的系统不稳定甚至硬件损坏。"CPU温度测试软件中文版"是一个专为此目的设计的工具...
"测cpu温度的小软件"是一款小巧而实用的工具,专为用户提供实时的CPU核心温度监测功能。 这款软件的主要功能包括: 1. 实时监测:它可以持续监控每个CPU核心的温度,帮助用户了解CPU在运行不同程序或进行超频操作...
CPU温度检测是计算机硬件监控的重要环节,特别是在进行高性能计算或者长时间运行大型软件时,了解CPU的温度状况至关重要。CPU过热可能导致系统不稳定、性能下降甚至硬件损坏。下面将详细介绍CPU温度检测的相关知识点...
支持大部分常见的主板芯片与硬件组件,包含主板、CPU、硬盘、显卡、装置的电压、温度、风扇转速与运作频率、 Mainboard = 0, SuperIO = 1, CPU = 2, GpuNvidia = 3, GpuAti = 4, TBalancer = 5, ...
CPU温度信息监测软件是计算机硬件监控领域中必不可少的工具,主要功能是对计算机中央处理器(CPU)的温度进行实时监测,确保系统稳定运行。这类软件能够帮助用户了解CPU的工作状态,预防过热导致的硬件损坏,同时也...
只在主屏幕右下角提示CPU温度的小程序,无任何其他附加功能
标题中的“边栏小工具(INTEL CPU温度)”指的是专为Intel处理器设计的一款能够实时监控CPU温度的小工具。这款小工具适用于Windows Vista和Win7操作系统,这两个版本的系统自带了边栏功能,用户可以方便地将这些小...