Intel 80C186EA User Manual page 163

Hide thumbs Also See for 80C186EA:
Table of Contents

Advertisement

CLOCK GENERATION AND POWER MANAGEMENT
$mod186
name
;FUNCTION:
;
;
;
SYNTAX:
;
INPUTS:
;
; OUTPUTS:
;
NOTE:
;
PWRSAV
RFTIME
RFCON
PSEN
data
FreqTable
data
lib_80C186
_power_save
_divisor
_power_save
lib_80C186
Example 5-2. Initializing the Power Management Unit for Power-Save Mode
5-22
example_PSU_code
This function reduces CPU power consumption
by dividing the CPU operating frequency by a
divisor.
extern void far power_save(int divisor);
divisor - This variable represents F0, F1 and F2
of PWRSAV.
None
Parameters are passed on the stack as required
by high-level languages
equ
xxxxH
equ
xxxxH
equ
xxxxH
equ
8000H
segment public 'data'
dw 1, 4, 8, 16, 32, 64, 0, 0
ends
segment public 'code'
assume cs:lib_80C186, ds:data
public _power_save
proc
far
push
bp
mov
bp, sp
push
ax
push
dx
equ
word ptr[bp+6]
mov
dx, RFTIME
in
ax, dx
and
ax, 01ffh
div
FreqTable[_divisor]
out
dx, ax
mov
dx, PWRSAV
mov
ax, _divisor
and
ax, 7
or
ax, PSEN
out
dx, ax
pop
dx
pop
bx
pop
ax
pop
bp
ret
endp
ends
end
;substitute register offset
;Power-Save Register
;Refresh Interval Count
;Register
;Refresh Control Register
;Power-Save enable bit
;save caller's bp
;get current top of stack
;save registers that will
;be modified
;get parameter off the
;stack
;get current DRAM refresh
;rate
;mask off unwanted bits
;divide refresh rate
;by _divisor
;set new refresh rate
;select Power-Save Register
;get divisor
;mask off unwanted bits
;set enable bit
;divide frequency
;restore saved registers
;restore caller's bp

Advertisement

Table of Contents
loading

This manual is also suitable for:

80c188ea

Table of Contents