- •4. Функции для 5-цифрового жкд
- •5. Функции для светодиода
- •6. Функция для задержки времени
- •7. Функции таймера
- •Функции для работы с простым таймером
- •Функции для стоповых таймеров
- •Функции для таймеров с обратным счетом
- •Функции для пользовательских таймеров
- •Пример 1. Демонстрация использования таймерных функций для мигания жкд через каждые 0.5 сек.
- •Использование сторожевого таймера
- •8. Использование флэш-памяти контроллера I-7188ead
- •9. Функции для сохранения данных в eeprom
- •10. Функции для сохранения данных в nvram
- •8. Служебные функции
Функции для работы с простым таймером
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 ( )
