/* 
DEMO96.c: Shows how to use the InstallUserTimer function to controll the 5-Digit 7-segment LED.

Compiler: BC++ 3.1, 
          Turbo C++ 1.01(3.01) (free from http://cc.codegear.com/free/cpp)
          MSC 6.0,
          MSVC 1.52.

Compile mode: Large

Project: DEMO96.c
         ..\..\Lib\(8000e.Lib, 7188el.Lib or 7186el.Lib)

Hardware: i-7188/uPAC-7186/i-8000

Note: Function used:
      TimerOpen --> start to use timer
      TimerClose--> stop to use timer
      InstallUserTimer --> install user timer function
      
      5DigitLed will show 0 to F,
      position 1 will be update every 1 sec
      position 2 will be update every 0.5 sec
      position 3 will be update every 0.4 sec
      position 4 will be update every 0.3 sec
      position 5 will be update every 0.2 sec

[Oct 30, 2008] by Liam
*/

#include <stdio.h>
#include "..\..\lib\7186e.h"

int Data[5]={0, 0, 0, 0, 0};

void MyTimerFun(void)
{
    static int count[5]={0,0,0,0,0};
    int i;
    
    for(i=0; i<5; i++){
        count[i]++;
    }
    
    if(count[0]>=1000){
        count[0]=0;
        Data[0]++;
        Data[0]&=0x0F;
        Show5DigitLedWithDot(1, Data[0]);
    }
    
    if(count[1]>=500){
        count[1]=0;
        Data[1]++;
        Data[1]&=0x0F;
        Show5DigitLedSeg(2, Data[1]);
    }
    
    if(count[2]>=400){
        count[2]=0;
        Data[2]++;
        Data[2]&=0x0F;
        Show5DigitLed(3, Data[2]);
    }
    
    if(count[3]>=300){
        count[3]=0;
        Data[3]++;
        Data[3]&=0x0F;
        Show5DigitLed(4, Data[3]);
    }
    
    if(count[4]>=200){
        count[4]=0;
        Data[4]++;
        Data[4]&=0x0F;
        Show5DigitLed(5, Data[4]);
    }
}

void main(void)
{
    int quit=0;
    
    InitLib();
        
    Print("Test User Timer Function & Show5DigitLed ...\r\n");
    Print("Now every digit of Show5DigitLed will count in different speed\r\n");
    Print("\r\nPress 'q' to quit\r\n");
    
    Init5DigitLed();
    
    TimerOpen();
    LedOff();
    InstallUserTimer(MyTimerFun);
    
    while(!quit)
    {
        if(Kbhit() && Getch()=='q')
            quit=1;
    }
    
    TimerClose();
    LedOn();
}
