www.pudn.com > f2812_timer.rar > main.c


#include "F281X.h" 
#include "Macro.h" 
 
extern cregister volatile Uint16 IFR; 
extern cregister volatile Uint16 IER; 
 
void inittimer0(void); 
void initsys(void); 
interrupt void timer0_int(void); 
 
Uint16 test = 0; 
 
main() 
{ 
	initsys(); 
	inittimer0(); 
	while(1); 
} 
 
void inittimer0(void) 
{ 
	DINT; 
	EALLOW; 
	TIMER0TCR = (BIT11_16 | BIT5_16 | BIT4_16); 
	TIMER0PRD = 150000000; 
	TIMER0TPR = 0; 
	TIMER0TIM = 0; 
	TIMER0TCR = (BIT14_16 | BIT11_16 | BIT5_16);  
	EDIS; 
	EINT; 
} 
 
void initsys(void) 
{ 
	EALLOW; 
	IER = 0x0000; 
    IFR = 0x0000; 
	PLLCR = 0x000a; 
	PCLKCR = 0x0008; 
	HISPCP = 0x0002; 
	WDCR= 0x0068; 
	asm(" C28OBJ"); 
	 
	SetBit0_16(PIECTRL); 
	// Clear all PIEIER registers: 
    PIEIER1 = 0; 
	PIEIER2 = 0; 
	PIEIER3 = 0; 
	PIEIER4 = 0; 
	PIEIER5 = 0; 
	PIEIER6 = 0; 
	PIEIER7 = 0; 
	PIEIER8 = 0; 
	PIEIER9 = 0; 
	PIEIER10 = 0; 
	PIEIER11 = 0; 
	PIEIER12 = 0; 
	// Clear all PIEIFR registers: 
	PIEIFR1 = 0; 
	PIEIFR2 = 0; 
	PIEIFR3 = 0; 
	PIEIFR4 = 0; 
	PIEIFR5 = 0; 
	PIEIFR6 = 0; 
	PIEIFR7 = 0; 
	PIEIFR8 = 0; 
	PIEIFR9 = 0; 
	PIEIFR10 = 0; 
	PIEIFR11 = 0; 
	PIEIFR12 = 0; 
	 
	SetBit0_16(IER); 
	SetBit6_16(PIEIER1); 
	 
	TINT0_ISR = (unsigned long)&timer0_int; 
	EDIS; 
} 
 
interrupt void timer0_int(void) 
{ 
	DINT; 
	test = 1; 
	PIEACK = 0x0001; 
	EINT; 
}