Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_Таймеры и т.д.doc
Скачиваний:
7
Добавлен:
01.04.2025
Размер:
83 Кб
Скачать
☆

Функции для работы с простым таймером

1. void TimerResetValue (void); - обнуляет значение главного таймера.

2. unsigned long TimerReadValue (void); - возвращает текущее значение главного таймера в мс. Это время отсчитывается после вызова функции TimerOpen или TimerResetValue.

Функции для стоповых таймеров

1. int StopWatchStart (int channel); - запускает стоповый таймер на счет начиная счет с нуля. Параметр channel задает номер стопового таймера (0  7).

Процедура обработки прерываний системного таймера через каждую 1 мс будет увеличивать значение стопового таймера на 1. Если номер канала в пределах от 0 до 7, то функция возвращает 0, в противном случае -15.

2. int StopWatchReadValue (int channel,

unsigned long *value);

считывание текущего значения стопового таймера. Значение таймера в мс возвращается в ячейках памяти, адрес которых задается с указателем value.

3. int StopWatchReset (int channel); - обнуляет стоповый таймер.

4. int StopWatchPause (int channel); - делает паузу в счете стопового таймера. Для повторного запуска счета таймера следует вызывать функцию int StopWatchContinue (int channel).

5. int StopWatchStop (int channel); - останавливает счет стопового таймера. После вызова этой функции, счет может быть возобновлен только с помощью функции StopWatchStart начиная с нуля.

Функции для таймеров с обратным счетом

Драйвер таймера поддерживает 8 таймеров с обратным счетом. Первоначальное значение таймера задается в виде параметра функции. Далее значение таймера уменьшается на единицу каждую 1 мс (до нуля).

1. int CountDownTimerStart (int channel,

unsigned long count);

запускает таймер с обратным счетом. В переменной count задается начальное значение таймера.

2. CountDownTimerReadValue (int channel,

unsigned long *value); считывает значение таймера с обратным счетом. Это значение записывается в ячейки памяти с начальным адресом value.

Функции для пользовательских таймеров

Драйвер таймера позволяет определить два пользовательских таймера, а точнее, две пользовательские функции, которые будут вызываться с частотой 1 мс и 55 мс.

1. void InstallUserTimer (void (*func)(void)); - этот таймер будет генерировать прерывание через каждую 1 мс. Процедура обработки прерывания будет вызывать функцию, адрес которого задается параметром func. Естественно, пользовательская функция должна завершаться быстрее, чем 1 мс.

2. void InstallUserTimer1C (void (*func)(void));

системный таймер генерирует прерывание 8 через каждые 1/18.2 сек  55 мс. Процедура обработки прерывания 8 вызывает программное прерывание 0х1С. Таким образом, после инсталляции этого таймера, пользовательская функция будет вызываться через каждый 1 мс.

Пример 1. Демонстрация использования таймерных функций для мигания жкд через каждые 0.5 сек.

#include<stdio.h>

#include"..\lib\7188.h"

static int count=0;

static int LedMode=0;

// После инсталляции пользовательского таймера

// эта функция будет вызываться через каждые 0.5 сек.

void MyTimerFunс(void)

{

count++;

if (count >= 500)

{

count=0;

if (LedMode) // Если ЖКД был включен

{ LedOff();

LedMode=0; }

else // Если ЖКД был выключен

{ LedOn();

LedMode=1; }

} //Конец условия if (count>=500)

} //Конец функции

//===================================================

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

//===================================================

void main(void)

{

int quit=0;

LedOff();

TimerOpen();

//Инсталлирование пользовательского таймера

InstallUserTimer(MyTimerFun);

while(!quit)

{

if (IsCom1( ))

{

data = ReadCom1( );

if (data ==’q’) quit = 1;

}

}

TimerClose();

LedOn();

} //Конец main ( )

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]