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

📄 sci.c

📁 飞思卡尔08单片机程序
💻 C
字号:
/* Include Files */
#include <MC68HC908GZ16.h> /* include peripheral declarations */
#include "Sci.h"
#include "Type.h"
#include "MSCAN08.h"
#include "MCU.h"
#pragma MESSAGE DISABLE C2705          /*Disable warning C2705 "possible loss of data"*/ 
/* Global Variables */
UINT8 SciRxFlag;
UINT8 SciRxData[5];



/*****************************************************************************
 * SCIInit:SCI模块初始化
 * Input: 	None
 * Output: None
 * Parameters: None
 *
 ****************************************************************************/
void SCIInit(void){
SCC1=0X40;//允许sci模块
SCC2=0X2C;//使能发送和接收,使能接收中断
SCC3=0x00;
//SCBR=0X30;//BPD=13,BD=1,BAUD=8000000/64/13/1=9615
SCBR=0X01;//BPD=1,BD=1,BAUD=8000000/64/1/2/(3+0.25)=19230
SCPSC=0X48;//PD=3,PDFA=0.25
}
/*****************************************************************************
 * PutChar_SCI:使用SCI发送一个字节
 * Input: 	None
 * Output: None
 * Parameters: None
 *
 ****************************************************************************/
void PutChar_SCI(UINT8 ch){
   while(SCS1_SCTE==0);
    SCDR=ch;
} 

/*****************************************************************************
 * SciTx_ISR:中断服务程序,串口发送缓冲空中断
 * Input: 	None
 * Output: None
 * Parameters: None
 *
 ****************************************************************************/
interrupt 14 void SciTx_ISR(void){
 	
 	static UINT8 TxDataNum=0;
 	asm SEI;
 	
 	switch (++TxDataNum){
 	  case 1:PutChar_SCI(SCITxData[0]); break;
 	  case 2:PutChar_SCI(SCITxData[1]); break;
 	  case 3:PutChar_SCI(SCITxData[2]); break;
 	  case 4:PutChar_SCI(SCITxData[3]); break;
 	  case 5:PutChar_SCI(SCITxData[4]); break;
 	  case 6:PutChar_SCI(SCITxData[5]); break;
 	  case 7:PutChar_SCI(SCITxData[6]); break;
 	  case 8:PutChar_SCI(SCITxData[7]); break;
 	  case 9:PutChar_SCI(SCITxData[8]); break;
 	
 	  
 	  default:SciTxDisable;break;// SCC2_SCTIE=0;

 	}
	asm CLI;
 }

/*****************************************************************************
 * SciRx_ISR:中断服务程序,串口接收缓冲满中断
 * Input: 	None
 * Output: None
 * Parameters: None
 *
 ****************************************************************************/
interrupt 13 void SciRx_ISR(void){
 	static UINT8 counter;
 	UINT8 i=0,Ch;
 	asm SEI;
 	while(!SCS1_SCRF);
	Ch=SCDR;
	if(Ch>127){
		counter=0;
		SciRxData[counter]=Ch;
	}
	else{
	counter++;
	SciRxData[counter]=Ch;
	if (counter==4) SciRxFlag=1;
	}

	asm CLI;
	
 }
 

 
 

⌨️ 快捷键说明

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