📄 timer.c
字号:
/*
* FILE:
* timer.c (rev. 1.1 - 14.04.2006)
*
* PROJECT:
* IR Learn System
*
* DESCRIPTION:
* See "timer.h" for description
*
*/
#include <AT89C51ED2.h>
#include <timer.h>
#include <types.h>
volatile U16 TMP_Timer; // General purposes Timer
volatile U16 SYS_Timer; // System Timer
volatile U16 AUX_Timer; // Auxilary Timer
// Initialize and start Timer 0
void TMR_Init(void) {
SYS_Timer=0;
TMP_Timer=0;
AUX_Timer=10;
TR0=0;
TMOD&=0xF0; // Timer 0 is used as a system timer
TMOD|=0x01; // Set Timer 0 to 16-bit mode
TH0=TMR_Hi; // Init high byte of reload value
TL0=TMR_Lo; // Init low byte of reload value
EA=1; ET0=1; // Enable Timer 0 interrupt
IPH0|=2; // Set medium priority for timer interrupt
TR0=1; // Run Timer 0
}
// Timer 0 Interrupt Routine
void TMR_Interrupt(void) interrupt 1 using 2{
EA=0;
TR0=0; // Stop Timer 0
SYS_Timer++;
AUX_Timer--;
if (AUX_Timer==0) {
AUX_Timer=10;
TMR_Timer();
}
TH0=TMR_Hi; // Init high byte of reload value
TL0=TMR_Lo; // Init low byte of reload value
TR0=1; // Run Timer 0
IPLT0=1; // Set priority for timer 0 interrupt
EA=1;
}
// System Timer (resolution: 1 msec)
void TMR_Timer(void) {
if (TMP_Timer) TMP_Timer--;
}
// Hardware delay (in 1/10 msec)
void TMR_Delay(U16 Delay) {
SYS_Timer=0;
while(SYS_Timer<Delay);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -