osdtimer.c
来自「采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序」· C语言 代码 · 共 92 行
C
92 行
/************************************************
* *
* OSDETIMER.C: Timer control routines. *
* *
*************************************************/
#include <reg51.h>
#include "mascot.h"
#include "OSD.h"
#include "global.h"
#if USE_TIMER0
/**************************************************************
* Timer interrupt service routine *
* it should be executed automatically when TIMER 0 overflows. *
***************************************************************/
static void timer0_isr(void) interrupt 1
{
TL0 = (TIMER0_COUNT & 0x00FF);
TH0 = (TIMER0_COUNT >> 8);
TimerCnt++;
if(TimerCnt == 10)
{
TimerCnt = 0;
if(CurrentTimerSet > 0)
{
CurrentTimerSet--;
if(CurrentTimerSet == 0)
TimerOver = 1;
}
if(MoveCnt > 0)
MoveCnt--;
if(PanelOnFlag)// by seven 030717 PotTimerFlag)
{
CurrentTimerSet2--;
if(CurrentTimerSet2 == 0)
{
TimerOver2 = 1;
CurrentTimerSet2 = 10 * 60 * 30;
}
}
}
}
/****************************************
* Timer interrupt initialization *
*****************************************/
void timer0_init(void)
{
/* set timer 0 mode as software control interrupt and run on 16-bit mode */
TMOD &= 0xF0; TMOD |= 0x01;
TL0 = (TIMER0_COUNT & 0x00FF);
TH0 = (TIMER0_COUNT >> 8);
/* enable timer 0 interrupt globly and stop timer running */
ET0 = 1;
TR0 = 0;
/* Clean timer flag */
TimerOver = 0;
TimerCnt = 0;
CurrentTimerSet = 0;
}
/****************************************
* Start Timer *
*****************************************/
void timer0_start (void)
{
TR0 = 1;
}
/****************************************
* Stop Timer *
*****************************************/
/*
void timer0_stop (void)
{
TR0 = 0;
TimerCnt = 0;
}
*/
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?