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

📄 timer.c

📁 44B0+8019系统
💻 C
字号:
#include "..\inc\44b.h"
#include "INTSERVE.H"
#include "int_onoff.h"

#include "timer.h"

#define PWM0_UPDATE        (0x1 << 1)
#define PWM0_START         (0x1 << 0)

#define PWM1_UPDATE        (0x1 << 9)
#define PWM1_START         (0x1 << 8)

#define PWM2_UPDATE        (0x1 << 13)
#define PWM2_START         (0x1 << 12)

#define PWM3_UPDATE        (0x1 << 17)
#define PWM3_START         (0x1 << 16)

#define PWM4_UPDATE        (0x1 << 21)
#define PWM4_START         (0x1 << 20)

#define PWM5_UPDATE        (0x1 << 25)
#define PWM5_START         (0x1 << 24)

void __irq TIMER5_Int();

void Timer_Init()
{
    rTCFG0 = 0x010A0A0A; // T5 = MCLK / 10
    rTCFG1 = 0x00000000; // T5 = T5/2
    rTCON = 0x04CCCC0C; 
    //rTCON = (rTCON & 0x00FFFFFF) | 0x04000000;       
}

void Timer_SetT5IRQ(void *vector)
{
    IntServe_Reg((unsigned int)ISR_TIMER5,(unsigned int)vector);
}

void Timer_StartT5(unsigned char OnOff)
{
    DisableInt();

    rTCNTB5= 16500;

    rTCON = rTCON | PWM5_UPDATE;
    rTCON = rTCON & (~PWM5_UPDATE);

    if( OnOff == T5ON )
    {
        rINTMSK = ~( (~rINTMSK) | BIT_TIMER5 );
        rTCON = rTCON | PWM5_START;
    }

    if( OnOff == T5OFF )
    {
        rINTMSK = rINTMSK | BIT_TIMER5;
        rTCON = rTCON & (~PWM5_START);
    }
    
    EnableInt();
}

//==============
void Timer_PWM0Start(unsigned char OnOff)
{
    if( OnOff == PWMON )
    {
        rTCON = rTCON | PWM0_START;
    }

    if( OnOff == PWMOFF )
    {
        rTCON = rTCON & (~PWM0_START);
    }
}

void Timer_PWM1Start(unsigned char OnOff)
{
    if( OnOff == PWMON )
    {
        rTCON = rTCON | PWM1_START;
    }

    if( OnOff == PWMOFF )
    {
        rTCON = rTCON & (~PWM1_START);
    }
}

void Timer_PWM2Start(unsigned char OnOff)
{
    if( OnOff == PWMON )
    {
        rTCON = rTCON | PWM2_START;
    }

    if( OnOff == PWMOFF )
    {
        rTCON = rTCON & (~PWM2_START);
    }
}

void Timer_PWM3Start(unsigned char OnOff)
{
    if( OnOff == PWMON )
    {
        rTCON = rTCON | PWM3_START;
    }

    if( OnOff == PWMOFF )
    {
        rTCON = rTCON & (~PWM3_START);
    }
}

void Timer_PWM4Start(unsigned char OnOff)
{
    if( OnOff == PWMON )
    {
        rTCON = rTCON | PWM4_START;
    }

    if( OnOff == PWMOFF )
    {
        rTCON = rTCON & (~PWM4_START);
    }
}


//==================
void Timer_PWM0Set(unsigned int Long , unsigned int Up)
{
    rTCNTB0 = Long;
    if( Up >= Long ) Up = Long;
    rTCMPB0 = Long - Up;
 
    
    rTCON = rTCON | PWM0_UPDATE;
    rTCON = rTCON & (~PWM0_UPDATE);
}

void Timer_PWM1Set(unsigned int Long , unsigned int Up)
{
    rTCNTB1 = Long;
    if( Up >= Long ) Up = Long;
    rTCMPB1 = Long - Up;
    
    rTCON = rTCON | PWM1_UPDATE;
    rTCON = rTCON & (~PWM1_UPDATE);
}


void Timer_PWM2Set(unsigned int Long , unsigned int Up)
{
    rTCNTB2 = Long;
    if( Up >= Long ) Up = Long;
    rTCMPB2 = Long - Up;
    
    rTCON = rTCON | PWM2_UPDATE;
    rTCON = rTCON & (~PWM2_UPDATE);
}


void Timer_PWM3Set(unsigned int Long , unsigned int Up)
{
    rTCNTB3 = Long;
    if( Up >= Long ) Up = Long;
    rTCMPB3 = Long - Up;
    
    rTCON = rTCON | PWM3_UPDATE;
    rTCON = rTCON & (~PWM3_UPDATE);
}


void Timer_PWM4Set(unsigned int Long , unsigned int Up)
{
    rTCNTB4 = Long;
    if( Up >= Long ) Up = Long;
    rTCMPB4 = Long - Up;
    
    rTCON = rTCON | PWM4_UPDATE;
    rTCON = rTCON & (~PWM4_UPDATE);
}



//=====================
void __irq TIMER5_Int()
{
    rI_ISPC = BIT_TIMER5;
}

⌨️ 快捷键说明

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