Intel 386 User Manual

Page 284

Advertising
background image

10-41

TIMER/COUNTER UNIT

/*****************************************************************************

Example of how to write a new initial counter value to a timer

This value can be rewritten at any time without affecting the

Counter’s programmed mode.

Before writing an initial count value, the Control Word must be

configured for the proper R/W and Count formats.

-->This example assumes that Timer1 is in the R/W format of LSB first,

then MSB, and that the Count format is binary.

_SetEXRegByte(TMR1, InitialCountL);

_SetEXRegByte(TMR1, InitialCountH);

*****************************************************************************/

/****************************************************************************/

***Example of how to issue a Read Back command for Timer2, latching

both the status and the counter.

BYTE Status, CountL, CountH, RWmode;

WORD Count;

SetUp_ReadBack(0, 0, 1, 1, 1); //Configure Read Back command for timer2,

latching both status and count

Status = GetEXRegByte(TMR2);

RWmode = Status & 0x30; //Mask off bits that correspond to the Read/Write Mode

switch (RWmode) { //Read Counter Value according to configured R/W format

case 0x10:

//Read/Write least significant byte only

Count = _GetEXRegByte(TMR2);

break;

case 0x20: //Read/Write most significant byte only

CountH = _GetEXRegByte(TMR2);

Count = (WORD)CountH << 8;

break;

case 0x30: //Read/Write LSB first, then MSB

CountL = _GetEXRegByte(TMR2);

CountH = _GetEXRegByte(TMR2);

Count = (((WORD)CountH << 8) + CountL);

break;

}

*****************************************************************************/

Advertising