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

📄 timer.c

📁 单片机开发列程
💻 C
字号:
#define __TIMER_H__

#include "Config.h"
/********************************************************************************************************
**函数名称:T0Delay5ms
**函数功能:使用T0延时5ms@40MHz
**输    入:uchar DelayLoops    控制延时长短
**输    出:无
********************************************************************************************************/
/*
void T0Delay5ms(uchar DelayLoops)
{
    PERIPHEN1 |= BIT0;                  //使能T0
    //------------------------------------------------------
    //40MHz系统时钟,预先4分频,=>10MHz,5ms=>计数值为50000
    //------------------------------------------------------
    TH0 = 0x3C;
    TL0 = 0xB0;                         //5ms定时值 = 65536 - 50000
    
    T0T1CFG &= ~(BIT5 | BIT1 | BIT0);
    T0T1CFG |= 0x00;                    //T0门控禁止;输出禁止;16位操作模式
    
    T0T1CLKCFG &= 0xF0;  
    T0T1CLKCFG |= 0x02;                 //T0时钟4分频 

    T0CON  = 0x00;                      //向上计数,门控禁止,做计数器用
    T0CON |= BIT2;                      //T0运行
    do
    {
#ifdef DOWNLOAD        
        while((T0CON & BIT7) == 0);     //等待定时到
#endif
        TH0 = 0x3C;
        TL0 = 0xB0;
        T0CON &= ~BIT7;                 //清标志
        DelayLoops --;    
    }
    while(DelayLoops != 0);       
}
*/
/********************************************************************************************************
**函数名称:T1Delay5ms
**函数功能:使用T1延时5ms@40MHz
**输    入:uchar DelayLoops    控制延时长短
**输    出:无
********************************************************************************************************/
/*
void T1Delay5ms(uchar DelayLoops)
{
    PERIPHEN1 |= BIT1;                  //使能T1
    //------------------------------------------------------
    //40MHz系统时钟,预先4分频,=>10MHz,5ms=>计数值为50000
    //------------------------------------------------------
    TH1 = 0x3C;
    TL1 = 0xBF;

    T0T1CFG &= ~(BIT6 | BIT4 | BIT3 | BIT2);    
    T0T1CFG |= 0x00;                    //T1门控禁止,时钟源为系统时钟,输出禁止,16位模式
    
    T0T1CLKCFG &= 0x0F;  
    T0T1CLKCFG |= 0x20;                 //T1时钟4分频 
    
    T1CON = 0x00;                       //向上计数,门控禁止,做计数器用
    T1CON |= BIT2;                      //T1运行
    do
    { 
#ifdef DOWNLOAD
        while((T1CON & BIT7) == 0);
#endif        
        TH1 = 0x3C;
        TL1 = 0xB0;
        T1CON &= ~BIT7;
        DelayLoops --;                     
    }
    while(DelayLoops != 0);
}
*/
/********************************************************************************************************
**函数名称:T2Init
**函数功能:使用T2做中断延时前的初始化
**输    入:无
**输    出:无
********************************************************************************************************/
void T2Init(void)
{
    PERIPHEN1 |= BIT2;      //使能Timer2
    T2CON = 0x00;           //Timer2捕获使能
                            //定时器功能
                            //定时器停止
                            //外部门控禁止
                            //输出翻转禁止
                            //向上计数
                            //外部门控标志
                            //溢出标志

    TH2 = 0x3C;
    TL2 = 0xB0;             //预置数
    T2CLKCFG = 0x03;        //系统时钟源
                            //输出禁止
                            //时钟64分频
    T2CON |= BIT2;          //Timer2开始运行
}

/********************************************************************************************************
**函数名称:LEDFlashDelay
**函数功能:未用的LED延时程序,会根据"Confug.h"的设置做自动设置
**输    入:无
**输    出:无
********************************************************************************************************/
/*
void LEDFlashDelay(void)
{
    #define DELAYLOOP (OSCCLK / 200000) 

    T0Delay5ms(DELAYLOOP);
    //T1Delay5ms(DELAYLOOP);       
}
*/

⌨️ 快捷键说明

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