Intel 80C188EC User Manual page 168

Hide thumbs Also See for 80C188EC:
Table of Contents

Advertisement

$mod186
name
example_PSU_code
;FUNCTION:
This function reduces CPU power consumption
;
by dividing the CPU operating frequency by a
;
divisor.
;
SYNTAX:
extern void far power_save(int divisor);
;
INPUTS:
divisor - This variable represents F0, F1 and F2
;
of PWRSAV.
; OUTPUTS:
None
;
NOTE:
Parameters are passed on the stack as required
;
by high-level languages
PWRSAV
equ
RFTIME
equ
RFCON
equ
PSEN
equ
data
segment public 'data'
FreqTable
dw 1, 4, 8, 16, 32, 64, 0, 0
data
ends
lib_80C186
segment public 'code'
assume cs:lib_80C186, ds:data
public _power_save
_power_save
proc
push
mov
push
push
_divisor
equ
mov
in
and
div
out
mov
mov
and
or
out
pop
pop
pop
pop
ret
_power_save
endp
lib_80C186
ends
end
Example 5-2. Initializing the Power Management Unit for Power-Save Mode
CLOCK GENERATION AND POWER MANAGEMENT
xxxxH
xxxxH
xxxxH
8000H
far
bp
bp, sp
ax
dx
word ptr[bp+6]
dx, RFTIME
ax, dx
ax, 01ffh
FreqTable[_divisor]
dx, ax
dx, PWRSAV
ax, _divisor
ax, 7
ax, PSEN
dx, ax
dx
bx
ax
bp
;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
5-23

Advertisement

Table of Contents
loading

This manual is also suitable for:

80c186ec

Table of Contents