⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttimer.c.svn-base

📁 最新火热的CX32 源代码
💻 SVN-BASE
字号:
/**
 *  This code and information is part of Trident DPTV API (TDAPI)
 *
 *  Copyright (C) Trident Multimedia Technologies (Shanghai) Co., Ltd.
 *         2005  All rights reserved.
 *
 *  This file contains functions related to M16C/60  timer.
 *
 *  Revision:
 *  06/03/2005     Created by Lewis, Archie.
 *
 */

#include "tdefs.h"
#include "tio.h"
#include "ttimer.h"
#include "ioctrl.h"

Gdata Dword t_dwTimerCount;
#ifdef _CX32_LCD_MACHINE_
extern Byte	tdHWI2CErrorTimer;
#endif
TimerMS s_uTimer20Ms;

#define  MAGICNUM  10   // shall be adjusted later for more accurate

Void tdInitTimer(Word wOSCKHz)
{

   // udf = 0;
    TA01RUN = 0x00;
#ifdef _USE_SECOND_CC_
#endif
	TA23RUN = 0x00;

	TA45RUN = 0x00;
    TB0RUN  = 0x00;

    TA01MOD = 0x03;//0x41
#ifdef _USE_SECOND_CC_
#endif
    TA23MOD = 0x05;

	TA45MOD = 0xdd;
    TB0MOD  = 0x35;
    
    TA1FFCR = 0x00;
#ifdef _USE_SECOND_CC_
#endif
    TA3FFCR = 0x00;

    TA5FFCR = 0x0b;
    TB0FFCR = 0xC3;

    TA0REG = (((Dword)wOSCKHz - MAGICNUM)/128 -1)& 0xFF;
	//TA1REG = (((Word)wOSCKHz_int*20 - MAGICNUM_int)/8 -1)>> 8;
	TA1REG = 20;

#ifdef _USE_SECOND_CC_
#endif
	TA2REG = 0x01;
	TA3REG = 0xFF;

	TA4REG = (((Dword)wOSCKHz*8/25 - MAGICNUM)/8 -1)& 0xFF;
	TA5REG = (((Dword)wOSCKHz*8/25 - MAGICNUM)/8 -1)>> 8;

    TB0RG0L = (((Dword)wOSCKHz*20 - MAGICNUM)/8 -1)& 0xFF;
    TB0RG0H = (((Dword)wOSCKHz*20 - MAGICNUM)/8 -1)>> 8;

	INTTA0 = INT_PRIORITY_B;                      //TimerA01, 1ms timer
	INTTA1 = INT_PRIORITY_C;                     
#ifdef _USE_SECOND_CC_
#endif
	INTTA2 = INT_PRIORITY_OFF;                      //TimerA23, 4ms timer
    INTTA3 = INT_PRIORITY_OFF;

	INTTA4 = INT_PRIORITY_OFF;                      //TimerA45
    INTTA5 = INT_PRIORITY_OFF;
	INTTB00 = INT_PRIORITY_OFF;                     //TimerB0, 20ms timer

    TA01RUN = 0x07;
#ifdef _USE_SECOND_CC_
#endif
	TA23RUN = 0x05;
	TA45RUN = 0x07;
    TB0RUN  = 0x0d;

}

void tdTimerA0Service(Void) //tdTimer0Service(Void)    //TA01
{
    t_dwTimerCount++;
    tdIR1msTimer();
    tdCallBack1msTimer(); 
}

void tdTimerA1Service(Void)  //tdTimer2Service(Void)    //TA23
{
/*#ifdef _USE_SECOND_CC_    
    tdCallBack4msTimer();
#endif    */
	tdCallBack20msTimer();
#ifdef _CX32_LCD_MACHINE_
	tdHWI2CErrorTimer++;

#endif
}

void tdTimerA45Service(Void)  //tdTimer3Service(Void)    //TA45
{
/*#ifdef _SYSTEM_SUPPORT_TTX_    
    tdLine6TimerISR(32);
#endif    */
}

void tdTimerB0Service(Void)  //tdTimer1Service(Void)    //TB0
{
//	tdCallBack20msTimer();
//	tdHWI2CErrorTimer++;
}

Byte tdGetTimerBCurrentCount(Void)
{
    Byte TB0CurrentVal;
	TB0CP0I = 0;
	TB0CurrentVal = TB0CP0H;
	return TB0CurrentVal;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -