📄 timer.c
字号:
/*******************************************************************************
- Chip : MG24500/55
- Author : RadioPulse Inc, 2007.
- Date : 2007-07-02
- Version : VER 1.0
*******************************************************************************/
#include "INCLUDE_TOP.h"
// UINT8 Timer0_Reload_TH0;
// UINT8 Timer0_Reload_TL0;
//-------------------------------------------
// MODE0/1/2/3 Enabled
// MAX = 98ms, MIN = 1ms
//-------------------------------------------
extern UINT8 Timer0_Reload_TL0;
extern UINT8 Timer0_Reload_TH0;
void ZHAL_TIMER0_SET(UINT8 IntEna, UINT8 Priority, UINT8 Run, UINT8 ms)
{
UINT32 Reload32;
UINT8 _EA;
UINT8 _MS;
_EA = EA;
EA = 0;
if(ms > 49) _MS = 49;
else _MS = ms << 1;
Reload32 = 2000;
Reload32 = Reload32 * _MS;
Reload32 = (Reload32 / 3) & 0x0000FFFF;
Reload32 = 0xFFFF - Reload32 + 1;
Timer0_Reload_TH0 = Reload32 >> 8;
Timer0_Reload_TL0 = Reload32;
TH0 = Timer0_Reload_TH0;
TL0 = Timer0_Reload_TL0;
TMOD &= 0xF0;
TMOD |= 0x01;
PT0 = Priority;
if(Run) TR0 = 1;
else TR0 = 0;
if(IntEna) ET0 = 1;
else ET0 = 0;
EA = _EA;
}
// Counter Input : P0.6
void ZHAL_COUNTER0_SET(UINT8 IntEna, UINT8 Priority, UINT8 Run, UINT16 CountNum)
{
UINT16 Reload16;
UINT8 _EA;
_EA = EA;
EA = 0;
Reload16 = 0xFFFF - CountNum + 1;
Timer0_Reload_TH0 = Reload16 >> 8;
Timer0_Reload_TL0 = Reload16;
TH0 = Timer0_Reload_TH0;
TL0 = Timer0_Reload_TL0;
TMOD &= 0xF0; // Clear bit[3:0], 12 bit counter
TMOD |= 0x04; // C/T0# = 1 : Counter Mode Operation
PT0 = Priority;
if(Run) TR0 = 1;
else TR0 = 0;
if(IntEna) ET0 = 1;
else ET0 = 0;
EA = _EA;
}
//-------------------------------------------
// MODE0/1/2/3 Enabled
// MAX = 98ms, MIN = 1ms
//-------------------------------------------
extern UINT8 Timer1_Reload_TL1;
extern UINT8 Timer1_Reload_TH1;
void ZHAL_TIMER1_SET(UINT8 IntEna, UINT8 Priority, UINT8 Run, UINT8 ms)
{
UINT32 Reload32;
UINT8 _EA;
UINT8 _MS;
_EA = EA;
EA = 0;
if(ms > 49) _MS = 49;
else _MS = ms << 1;
Reload32 = 2000;
Reload32 = Reload32 * _MS;
Reload32 = (Reload32 / 3) & 0x0000FFFF;
Reload32 = 0xFFFF - Reload32 + 1;
Timer1_Reload_TH1 = Reload32 >> 8;
Timer1_Reload_TL1 = Reload32;
TH1 = Timer1_Reload_TH1;
TL1 = Timer1_Reload_TL1;
TMOD &= 0x0F; // clear bit[7:4]
TMOD |= 0x10; // Mode=1(16 bit timer)
PT1 = Priority;
if(Run) TR1 = 1;
else TR1 = 0;
if(IntEna) ET1 = 1;
else ET1 = 0;
EA = _EA;
}
// Counter1 Input : P0.7
void ZHAL_COUNTER1_SET(UINT8 IntEna, UINT8 Priority, UINT8 Run, UINT16 CountNum)
{
UINT16 Reload16;
UINT8 _EA;
_EA = EA;
EA = 0;
Reload16 = 0xFFFF - CountNum + 1;
Timer1_Reload_TH1 = Reload16 >> 8;
Timer1_Reload_TL1 = Reload16;
TH1 = Timer1_Reload_TH1;
TL1 = Timer1_Reload_TL1;
TMOD &= 0x0F; // Clear bit[7:4]
TMOD |= 0x50; // 16bit Counter Mode and C/T1# = 1 : Counter Mode Operation
PT1 = Priority;
if(Run) TR1 = 1;
else TR1 = 0;
if(IntEna) ET1 = 1;
else ET1 = 0;
EA = _EA;
}
extern UINT8 Timer2_Reload_TL2;
extern UINT8 Timer2_Reload_TH2;
void ZHAL_TIMER2_SET(UINT8 IntEna, UINT8 Priority, UINT8 Run, UINT16 us)
{
UINT16 Reload16;
UINT8 _EA;
_EA = EA;
EA = 0;
if(us == 0) Reload16 = 0;
else Reload16 = 2*us - 1;
Timer2_Reload_TH2 = Reload16 >> 8;
Timer2_Reload_TL2 = Reload16;
TH2 = Timer2_Reload_TH2;
TL2 = Timer2_Reload_TL2;
T2IP = Priority;
if(Run) { T23CON |= 0x02; }
else { T23CON &= 0xFD; }
if(IntEna) T2IE = 1;
else T2IE = 0;
EA = _EA;
}
//-------------------------------------------------
// MIN = 1, MAX = 0x5FFF
//-------------------------------------------------
extern UINT8 Timer3_Reload_TL3;
extern UINT8 Timer3_Reload_TH3;
void ZHAL_TIMER3_SET(UINT8 IntEna, UINT8 Priority, UINT8 Run, UINT16 us)
{
UINT32 Reload32;
UINT8 _EA;
_EA = EA;
EA = 0;
if(us > 0x2FFF) Reload32 = 0x2FFF;
else Reload32 = us << 1;
Reload32 = Reload32 << 3;
Reload32 = Reload32 / 3;
if(Reload32 == 0) Reload32 = 0;
else Reload32 = Reload32 - 1;
Timer3_Reload_TH3 = Reload32 >> 8; // bit[15:8]
Timer3_Reload_TL3 = Reload32; // bit[7:0]
TH3 = Timer3_Reload_TH3;
TL3 = Timer3_Reload_TL3;
T3IP = Priority;
// if(Run) { T23CON |= (0x80); }
// else { T23CON &= ~(0x80); }
if(Run) { T23CON |= 0x08; }
else { T23CON &= 0xF7; }
if(IntEna) T3IE = 1;
else T3IE = 0;
EA = _EA;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -