Программирование игр для Windows. Советы профессионала


Частота - часть 2


0

#define TIMER_60HZ    0x4DAE // 60Гц

#define TIMER_30HZ    0x965C // 30Гц

#define TIMER_20HZ    0xE90B // 20Гц

#define TIMER_18HZ    0xFFFF // 18.2Гц (стандартная

частота)

// МАКРОСЫ //////////////////////////////////////////////

#define LOW_BYTE(n) (n & 0x00ff)

#define HI_BYTE(n) ((n>>8) & 0x00ff}

// ФУНКЦИИ //////////////////////////////////////////////

void Change Time(unsigned int new count)

{

// послать управляющее слово, задающее режим 2, двоичный подсчет,

// запись

младший/старший'байт

 

_outp(CONTROL_8253, CONTROL_WORD);

// теперь

запишем младший

значащий байт

в регистр

счетчика

_outp(COUNTER_0,LOW_BYTE(new_count));

//я теперь запишем старший байт в регистр счетчика

_outp(COUNTER_0,HI_BYTE(new_count) ) ;

} // конец Change_Time

// ОСНОВНАЯ ПРОГРАММА ///////////////////////////////////

main()

{

// перепрограммирование таймера с частоты 18.2Гц на частоту 60Гц

Change_Time (TIMER_60HZ);

} // конец,функции main

После окончания этой программы системный таймер будет работать слишком быстро для внутренних часов DOS. Для того чтобы это поправить, вы можете:

§          Перезагрузить компьютер;

§          Запустить программу еще раз, изменив константу, передаваемую функции Change_Time (), на TIMER_18HZ.




Начало  Назад  Вперед



Книжный магазин