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

📄 main.c

📁 freescale 9s12c12dp256 单片机sci通信原代码
💻 C
字号:
/***************************************************************************************
*					             
*		(c) copyright 2005,Tongji-Freescale Automobile Electronic Aligned Lab,ShangHai,China
*
*						              All Rights Reserved
*
*
* File Name				: SCI
*
* Programmer(s)			: Wumingjun,Wukai
*	
* Date Created			: 2005.07.16
*
* Current Revision		: V1.0
*
* Modification History	: 
*
* Description			: 
*
***************************************************************************************/


#include <hidef.h>      /* common defines and macros */
#include <mc9s12dp256.h>     /* derivative information */

#define SCIRE	   PTM_PTM7			//87 pin 		串口接收控制		输出
#define SCITE	   PTM_PTM6			//88 pin		串口发送控制		输出

#define SCIRxE SCI0CR2_RE			//SCI 接收控制位
#define SCITxE SCI0CR2_TE			//SCI 发送控制位


/*
************************************************************************
				                函数声明
************************************************************************
*/

#pragma CODE_SEG DEFAULT


void SCIInit(void);
void SCI_TX(unsigned char *data,unsigned char num);			//串口发送
void SCI_RX(unsigned char *data,unsigned char num);			//串口接受



void PORTSInit(void)		
{
  DDRS=0xff;						/*PORTS定义为输出*/
  PTS=0xff;						  /*初始化为低*/	
}

/*
***************************SCIInit***************************
 
*************************************************************
*/

void SCIInit(void)
{											  
                       
  SCI0BDH=0x00;					/*波特率设为9600*/
  SCI0BDL=0x34;					
  SCI0CR1=0x00;			    /*选择normal模式,数据位8bit,起始位1bit, 停止位1bit,无校验位*/								
  SCIRxE=0;			        /*接收中断不使能*/  
  SCITxE=0;					    /*发送中断不使能*/ 

}



/*
************************************************************************
				                串口发送程序
				   data 发送数据的地址   num 发送数据的长度
************************************************************************
*/
void SCI_TX(unsigned char *data,unsigned char num)
{
 unsigned char i;
 SCIRxE=0;						          /*接受不使能 */
 SCITxE=1;                      /*发送使能 */
 for(i=0;i<num;i++)
 { 		
 	while((SCI0SR1_TDRE==0)) ;	  /*等待发送缓冲区空 */
 	SCI0DRL=*(data+i);						/*向发送缓冲区写入待发送数据 */
 }
 while(SCI0SR1_TC==0){}         /*等待发送结束 */
 SCIRxE=0;                      /*接收禁止*/
 SCITxE=0;                      /*发送禁止*/
}


/*
************************************************************************
				                串口接受程序
				   data 接受数据的地址   num 发送数据的长度
************************************************************************
*/
void SCI_RX(unsigned char *data,unsigned char num)
{
 unsigned char i;
 SCIRxE=1;											/*发送不使能 */
 SCITxE=0;
 for(i=0;i<num;i++)
 {
 
 	while((SCI0SR1_RDRF==0));			/*等待接受缓冲区满标志 */
 	*(data+i)=SCI0DRL;	
 }
 PTS_PTS6=~PTS_PTS6;						/*翻转PTS_PTS6 */
 SCIRxE=0;
 SCITxE=0;
}

void main(void)
{	

	unsigned char  temp_s[10]={"wukaikun"};

  DisableInterrupts;       /*关全局中断*/
	PORTSInit();
	SCIInit();

  EnableInterrupts;				 /*开全局中断*/
	
	for(;;)
	  {
	    SCI_TX(temp_s,10);	 /*第一次发送字符wukaikun,此后发送接收的10个字符*/
 	    SCI_RX(temp_s,10);   /*接收到10个字符后驱动PTS_PTS6(D8)输出翻转*/
	  }
}

⌨️ 快捷键说明

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