📄 timer.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 + -