sci.c

来自「LF2407的各个模块的测试程序,包含2407里面的所有模块,均已经调试通过,心」· C语言 代码 · 共 65 行

C
65
字号

void SCI_init()
{
	*SCICCR = 0x7;
	
	*SCICTL1 = 0x13;
	*SCICTL2 = 0x2;//使能接收中断,禁止发送中断。
	*SCIHBAUD = 0x1;
	*SCILBAUD = 0x37;//9600,计算公式--》BRR = (SYSCLK/(SCI通讯波特率×8))-1,在这里开发板SYSCLK是15M
											//自己作的板子,12M晶振,为9B
											//2倍频的时候是0x137
											//4倍频的时候不稳定
	*SCICTL1 = 0x33;
	
	*SCIPRI = 0x60;
	*MCRA = 0x3;
	*PADATDIR = 0x100;
	*IMR = 0x12;//使能INT2和INT5
}

void SCI_Send_Char(char m_char)
{
	*SCITXBUF = m_char;
	while(!(*SCICTL2 & 0x80));//等待发送完成
}

void SCI_Send_String(char * string)
{
	int l = strlen(string);
	int i = 0;
	
	for(i=0;i<l;i++)
	{
		*SCITXBUF = string[i];
		while(!(*SCICTL2 & 0x80));//等待发送完成
	}
	*SCITXBUF = '\n';//换行
	while(!(*SCICTL2 & 0x80));//等待发送完成
}

void SCI_Recv()
{
	char RCV_char;	
	static int i = 0;
	
	RCV_char = *SCIRXBUF;	
	if(RCV_char == 0x0d)//回车符
		SCI_Send_Char('\n');
	else
		SCI_Send_Char(RCV_char);
	
	*IFR = 0x0010;
	asm(" clrc INTM");//开总中断
	return;
}

void interrupt SCI_INT()
{
	switch( *PVIR )
	{
		case 6:	SCI_Recv();
	//	case 7: SCI_Send_String("I am LvWei!");
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?