打印
[DemoCode下载]

N76E003自带的Delay函数很好用

[复制链接]
2681|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2016
//***********************************************************************************************************

#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
bit BIT_TMP;

//-------------------------------------------------------------------------
void Timer0_Delay100us(UINT32 u32CNT)
{
    clr_T0M;                                                //T0M=0, Timer0 Clock = Fsys/12
    TMOD |= 0x01;                                           //Timer0 is 16-bit mode
    set_TR0;                                                //Start Timer0
    while (u32CNT != 0)
    {
        TL0 = LOBYTE(TIMER_DIV12_VALUE_100us);        //Find  define in "Function_define.h" "TIMER VALUE"
        TH0 = HIBYTE(TIMER_DIV12_VALUE_100us);
        while (TF0 != 1);                                   //Check Timer0 Time-Out Flag
        clr_TF0;
        u32CNT --;
    }
    clr_TR0;                                                       //Stop Timer0
}
//------------------------------------------------------------------------------
void Timer0_Delay1ms(UINT32 u32CNT)
{
    clr_T0M;                                                //T0M=0, Timer0 Clock = Fsys/12
    TMOD |= 0x01;                                           //Timer0 is 16-bit mode
    set_TR0;                                                //Start Timer0
    while (u32CNT != 0)
    {
        TL0 = LOBYTE(TIMER_DIV12_VALUE_1ms);                 //Find  define in "Function_define.h" "TIMER VALUE"
        TH0 = HIBYTE(TIMER_DIV12_VALUE_1ms);
        while (TF0 != 1);                                   //Check Timer0 Time-Out Flag
        clr_TF0;
        u32CNT --;
    }
    clr_TR0;                                                //Stop Timer0
}

//------------------------------------------------------------------------------
void Timer1_Delay10ms(UINT32 u32CNT)
{
    clr_T1M;                                                                                                                                                //T1M=0, Timer1 Clock = Fsys/12
    TMOD |= 0x10;                                                                                                                                //Timer1 is 16-bit mode
    set_TR1;                                                                                                                                                //Start Timer1
    while (u32CNT != 0)
    {
        TL1 = LOBYTE(TIMER_DIV12_VALUE_10ms);                //Find  define in "Function_define.h" "TIMER VALUE"
        TH1 = HIBYTE(TIMER_DIV12_VALUE_10ms);
        while (TF1 != 1);                                                                                                //Check Timer1 Time-Out Flag
        clr_TF1;
        u32CNT --;
    }
    clr_TR1;                                                       //Stop Timer1
}
//------------------------------------------------------------------------------
void Timer2_Delay500us(UINT32 u32CNT)
{
    clr_T2DIV2;                                                                                                                                        //Timer2 Clock = Fsys/4
    clr_T2DIV1;
    set_T2DIV0;
    set_TR2;                                                //Start Timer2
    while (u32CNT != 0)
    {
        TL2 = LOBYTE(TIMER_DIV4_VALUE_500us);                //Find  define in "Function_define.h" "TIMER VALUE"
        TH2 = HIBYTE(TIMER_DIV4_VALUE_500us);
        while (TF2 != 1);                                   //Check Timer2 Time-Out Flag
        clr_TF2;
        u32CNT --;
    }
    clr_TR2;                                                //Stop Timer2
}
//------------------------------------------------------------------------------
void Timer3_Delay100ms(UINT32 u32CNT)
{
    T3CON = 0x07;                                           //Timer3 Clock = Fsys/128
    set_TR3;                                                //Trigger Timer3
    while (u32CNT != 0)
    {
        RL3 = LOBYTE(TIMER_DIV128_VALUE_100ms); //Find  define in "Function_define.h" "TIMER VALUE"
        RH3 = HIBYTE(TIMER_DIV128_VALUE_100ms);
        while ((T3CON&SET_BIT4) != SET_BIT4);                //Check Timer3 Time-Out Flag
        clr_TF3;
        u32CNT --;
    }
    clr_TR3;                                                //Stop Timer3
}
//------------------------------------------------------------------------------
void Timer3_Delay10us(UINT32 u32CNT)
{
    T3CON = 0x07;                                           //Timer3 Clock = Fsys/128
    set_TR3;                                                //Trigger Timer3
    while (u32CNT != 0)
    {
        RL3 = LOBYTE(TIMER_DIV4_VALUE_10us); //Find  define in "Function_define.h" "TIMER VALUE"
        RH3 = HIBYTE(TIMER_DIV4_VALUE_10us);
        while ((T3CON&SET_BIT4) != SET_BIT4);                //Check Timer3 Time-Out Flag
        clr_TF3;
        u32CNT --;
    }
    clr_TR3;                                                //Stop Timer3
}


沙发
小明的同学|  楼主 | 2018-10-22 17:48 | 只看该作者
源码的实现提供一下,非常给力。

使用特权

评论回复
板凳
小明的同学|  楼主 | 2018-10-22 18:07 | 只看该作者
前提是这个定时器没有被使用,所以要先规划好定时器怎么分配

使用特权

评论回复
地板
yiyigirl2014| | 2018-10-22 19:00 | 只看该作者
貌似几个定时器延时的最小周期不同啊。

使用特权

评论回复
5
zhuomuniao110| | 2018-10-23 11:19 | 只看该作者
选择合适的用

使用特权

评论回复
6
yiyigirl2014| | 2018-10-23 16:19 | 只看该作者
最小单位10us。

使用特权

评论回复
7
yiyigirl2014| | 2018-10-23 16:19 | 只看该作者
方便用这个延时实现时序图

使用特权

评论回复
8
XCRhbb| | 2019-10-21 15:33 | 只看该作者

这是为什么呢。这个的定义在哪个文件里呢?求指教.  详细点!!!!!!!!!!!!!!!!!!!

使用特权

评论回复
9
天灵灵地灵灵| | 2019-10-21 23:52 | 只看该作者
XCRhbb 发表于 2019-10-21 15:33
这是为什么呢。这个的定义在哪个文件里呢?求指教.  详细点!!!!!!!!!!!!!!!!!!! ...

对应的.h头文件没引入。

使用特权

评论回复
10
天灵灵地灵灵| | 2019-10-21 23:53 | 只看该作者
XCRhbb 发表于 2019-10-21 15:33
这是为什么呢。这个的定义在哪个文件里呢?求指教.  详细点!!!!!!!!!!!!!!!!!!! ...

你这是引入 了.c那个文件,还有个.h的,里面是宏。.c是负责实现函数的,.h声明函数,定义宏的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

123

主题

1370

帖子

2

粉丝