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

📄 timer.c

📁 This is IR (Infra-Red) learn module for home automation system. It can learn IR codes from different
💻 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 + -