initial commit!
This commit is contained in:
48
libs/libgccvb/timer.c
Normal file
48
libs/libgccvb/timer.c
Normal file
@@ -0,0 +1,48 @@
|
||||
#include "types.h"
|
||||
#include "hw.h"
|
||||
#include "timer.h"
|
||||
|
||||
|
||||
u8 tcr_val = 0;
|
||||
|
||||
void timer_enable(int enb)
|
||||
{
|
||||
if (enb) tcr_val |= TIMER_ENB;
|
||||
else tcr_val &= ~TIMER_ENB;
|
||||
HW_REGS[TCR] = tcr_val;
|
||||
}
|
||||
|
||||
u16 timer_get()
|
||||
{
|
||||
return (HW_REGS[TLR] | (HW_REGS[THR] << 8));
|
||||
}
|
||||
|
||||
void timer_set(u16 time)
|
||||
{
|
||||
HW_REGS[TLR] = (time & 0xFF);
|
||||
HW_REGS[THR] = (time >> 8);
|
||||
}
|
||||
|
||||
void timer_freq(int freq)
|
||||
{
|
||||
if (freq) tcr_val |= TIMER_20US;
|
||||
else tcr_val &= ~TIMER_20US;
|
||||
HW_REGS[TCR] = tcr_val;
|
||||
}
|
||||
|
||||
void timer_int(int enb)
|
||||
{
|
||||
if (enb) tcr_val |= TIMER_INT;
|
||||
else tcr_val &= ~TIMER_INT;
|
||||
HW_REGS[TCR] = tcr_val;
|
||||
}
|
||||
|
||||
int timer_getstat()
|
||||
{
|
||||
return (!!(HW_REGS[TCR] & TIMER_ZSTAT));
|
||||
}
|
||||
|
||||
void timer_clearstat()
|
||||
{
|
||||
HW_REGS[TCR] = (tcr_val|TIMER_ZCLR);
|
||||
}
|
||||
Reference in New Issue
Block a user