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


#include "F281X.h" 
#include "Macro.h" 
 
extern cregister volatile Uint16 IFR; 
extern cregister volatile Uint16 IER; 
 
void initsys(void); 
void initscia(void); 
interrupt void receive_int(void); 
 
main() 
{ 
	initsys(); 
	initscia(); 
	 
	while((SCICTL2A&0x40)==0); 
	SCITXBUFA = 0x25; 
 
	while(1); 
} 
 
void initsys(void) 
{ 
	EALLOW; 
	IER = 0x0000; 
    IFR = 0x0000; 
	PLLCR = 0x000a; 
	PCLKCR = 0x0400; 
	LOSPCP = 0x0002; 
	GPFMUX = 0x0030; 
	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; 
	 
	SetBit8_16(IER); 
	SetBit0_16(PIEIER9); 
	 
	SCIRXINTA_ISR = (unsigned long)&receive_int; 
	EDIS; 
} 
 
void initscia(void) 
{ 
	Uint16 i; 
	EALLOW; 
	SCICTL1A = 0x3; 
	for(i=0;i<5000;i++); 
	SCICCRA = 0x07; 
	SCIHBAUDA = 0x0001; 
	SCILBAUDA = 0x00e7; 
	SCICTL2A = 0x02; 
	SetBit5_16(SCICTL1A); 
	EINT; 
	EDIS; 
} 
 
interrupt void receive_int(void) 
{ 
	Uint16 receive; 
	DINT; 
	receive = SCIRXBUFA; 
	PIEACK = 0x100; 
	EINT; 
}