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

📄 main.c

📁 飞思卡尔智能车大赛另一个sci测试例程 供大家测试大家一起进步
💻 C
字号:
/*=========================================================
	ProjectName:	SCI_TEST_V
	Description:	A SCI TEST PROGRAM for 9S12XS128,CW4.7
	Author     :	lucev	
	Date	   :	2009.2.15
	Notes	   :	
==========================================================*/


#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"



/*=========================================================
	MACRO  DEFINE ( FirstSndThd )
==========================================================*/

#define BusClock	8000000				//8MHz
#define	BaudRate	9600				//SCI baud rate (hz)




/*=========================================================
	GLOBAL	VIRIABLE DEFINE ( FirstSndThd )
==========================================================*/






/*=========================================================
	FUNCTION DECLARE ( Module_Func_ADDITION() ) ( GE = general )
==========================================================*/

void	GE_Delay( unsigned int x );		//延时控制

void	SCI_Init( void );				//SCI初始化函数,波特率根据宏定义
void	SCI_Tx( byte TxData );			//SCI发送数据函数
//byte	SCI_Rx( void );					//SCI接收数据函数
interrupt	void	SCI_Rx_IRS( void );	//SCI接收中断处理【回显】函数





/*==========================================================
	FUNCTION DEFINE
===========================================================*/

void main(void)
{ 
	DisableInterrupts;
	
	SCI_Init();
	
	EnableInterrupts;
	
	for( ; ; )
	{
//		SCI_Tx( 'a' );
//		GE_Delay( 50 );		
	}

}


void	GE_Delay( unsigned int x )
{
	unsigned int i,j;
	for( i=0;i<=x;i++ )
		for( j=0;j<=10000;j++ )
			;
}

void	SCI_Init( void )
{
	SCI0BDL	= ( byte ) ( BusClock / BaudRate / 16 ); //必须/16,不能写出后两项相乘
	SCI0CR1	= 0x00;						//8位数据位,1位停止位,无校验
	SCI0CR2	= 0x2C;						//接收中断使能,使能发送与接收	
}

void	SCI_Tx( byte TxData )
{
	unsigned char	ReadStatus1;
	
//	ReadStatus1	= SCI0SR1;				//为清除标志位,读状态寄存器【下次写入后完全清除】
	SCI0DRH	= 0;
	SCI0DRL	= TxData;					//将待发数据写入寄存器
	while( !SCI0SR1_TDRE );				//等待发送结束
	ReadStatus1	= SCI0SR1;				//为清除标志位,读状态寄存器【下次写入后完全清除】
}

/*
byte	SCI_Rx( void );
*/


//不能有返回值
interrupt 20 void SCI_Rx_IRS( void )
{
	byte	ReadStatus1 , RxData;
	
	DisableInterrupts;
	
	ReadStatus1	= SCI0SR1;
	RxData	= ( byte ) SCI0DRL;
	SCI_Tx( RxData );
		
	EnableInterrupts;
}

⌨️ 快捷键说明

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