⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sci.c

📁 学习资料S12源程序UF32 USB MCU方测试程序 CW环境
💻 C
字号:
//[SCI.c]串行通信----------------------------------------------------------*
//本文件包含:                                                              *
//    (1)SCIInit:串行口初始化                                              *
//    (2)SCISendOneByte:串行发送1个字节                                    *
//    (3)SCISendString:串行发送字符串                                      *
//    (4)SCIRevOneByte:串行接收1字节                                       *
//    (5)SCIRevNByte:串行接收n字节                                         *
//硬件连接:                                                                *
//    MCU的SCI0模块接口与PC方的串行口相连                                  *
//-------------------------------------------------------------------------*
#include "SCI.h"
#include <MC9S12UF32.h>

/*因为选择了USB所以总线频率为30Mhz*/
#define BUS_FRE 30000000L
//SCIInit:DG128串行口0初始化函数-------------------------------------------*
//功  能:                                                                  *
//    开SCI0关SCI1,关串口中断,对串行口进行初始化,默认为允许SCI,正常码输出  *
//    ,8位数据,无校验等,允许发送器允许接收器.查询方式收发,波特率为9600     *
//参  数:无                                                                *
//返  回:无                                                                *
//-------------------------------------------------------------------------*
void	SCIInit(void)
{
	UINT8		utemp;
	
	/*设置波特率为9600 t = fbus/(16*bt)*/	
	SCIBD	=	BUS_FRE / 16 / 9600;
	
	/*允许,正常码,8位,无校验*/
	SCICR1	=	0x00;
	
	/*读一下清空*/
	
	utemp	=	SCIDRL;
	utemp	=	SCISR1;
		
	
	/*允许接受发送*/
	SCICR2	=	0x0c;
}
//SCISendOneByte:串行发送1个字节-------------------------------------------*
//功  能:串行发送1个字节                                                   *
//参  数:uSend=要发送的数据                                                *
//返  回:无                                                                *
//-------------------------------------------------------------------------*
void	SCISendOneByte(UINT8 uSend)
{

	/*等待发送缓冲区为空*/
	while(!	(SCISR1 & SCISR1_TDRE_MASK));
	
	/*发送*/	
	SCIDRL	=	uSend;
	

}
//SCISendString:串行发送字符串---------------------------------------------*
//功  能:发送字符串数据数据                                                *
//参  数:无                                                                *
//返  回:无                                                                *
//内部调用函数:SCISendNByte                                                *
//-------------------------------------------------------------------------*
void	SCISendString(char *str)
{
	SCISendNByte(str,strlen(str));	
}

void	SCISendNByte(UINT8 *uSend, UINT16 uNum)
{
	UINT16 i = 0;
	for(i = 0; i < uNum; ++i)
	{
		SCISendOneByte(uSend[i]);
	}
	
}

//SCIRevOneByte:串行接收字符串---------------------------------------------*
//功  能:串行接收字符串数据                                                *
//参  数:uRev                                                              *
//返  回:无                                                                *
//内部调用函数:SCIRevOneByte                                               *
//-------------------------------------------------------------------------*
BOOL	SCIRevOneByte(UINT8 *uRev)
{

	UINT16 i = 0;
	for(i = 0; i < 0xfffe; ++i)
	{
		/*如果接受缓冲区不为空,则保存数据*/
		if(SCISR1 & SCISR1_RDRF_MASK)
		{
			*uRev =	SCIDRL;
			return TRUE;
			
		}
	}
	return FALSE;
}

//SCIRevNByte:串行接收N个字符串--------------------------------------------*
//功  能:串行接收字符串数据                                                *
//参  数:uRev接收缓冲区                                                    *
//       uNum接收的字节                                                    *
//返  回:无                                                                *
//内部调用函数:SCIRevOneByte                                               *
//-------------------------------------------------------------------------*
UINT8	SCIRevNByte(UINT8 *uRev, UINT16 uNum)
{
	UINT16 i;
	for(i = 0; i < uNum; ++i)
	{
		if(SCIRevOneByte(uRev + i) == FALSE)
		{
			break;
		}
	}
	return i;
}

⌨️ 快捷键说明

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