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

📄 h08sci.c

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 C
字号:
//[H08SCI.c]串行通信-------------------------------------------------------*
//本文件包含:                                                              *  
//(1)SCIInit:串行口初始化                                                  *
//(2)SCISend1:串行发送1个字节                                              *
//(3)SCISendN:串行发送n字节                                                *
//(4)SCIRe1:串行接收1字节                                                  *
//(5)SCIReN:串行接收n字节                                                  *
//硬件连接:                                                                *
//    MCU的SCI模块接口与PC方的COM1相连                                     *
//-------------------------------------------------------------------------*

//头文件
#include "H08SCI.h"

//SCIInit:串行口初始化-----------------------------------------------------*
//功 能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数据,无校验,        *
//      允许发送器,允许接收器.查询方式收发,波特率为9600(设fBUS=2.4576MHz) *                                       
//参 数:无                                                                 *
//返 回:无                                                                 *
//-------------------------------------------------------------------------*
void SCIInit(void)
{   //1.总线频率fBUS=2.4576MHz,定义波特率Bt=9600
    SCBR=0b00000010;
    //2.设置允许SCI,正常码输出、8位数据、无校验
    SCC1=0b01000000; 
    //3.设置允许发送、允许接收,查询方式收发     
    SCC2=0b00001100; 
}

//SCISend1:串行发送1个字节-------------------------------------------------*
//功  能:串行发送1个字节                                                   *
//参  数:要发送的数据                                                      *
//返  回:无                                                                *
//-------------------------------------------------------------------------*
void SCISend1(INT8U o)
{
   //判断ReStatusR的第SendTestBit位是否为1,是1可以发送
   while(1)	
      if ((ReSendStatusR & (1<<SendTestBit)) != 0)
      {
      	ReSendDataR=o;
      	break;
      }
}

//SCISendN:串行发送N个字节-------------------------------------------------*
//功  能:发送数组中的N个字节数据                                           *
//参  数:待发送数据的字节数及存放这些数据的数组首地址                      *          
//返  回:无                                                                *
//-------------------------------------------------------------------------*
void SCISendN(INT8U n,INT8U ch[])
{
  int i;
  for(i=0;i<n;i++)          
  	SCISend1(ch[i]);
}

//SCIRe1:串行收一个字节数据------------------------------------------------*
//功  能:从串行口接收1个字节的数据                                         *
//参  数:标志指针p                                                         *
//返  回:接收到的数据(若接收失败,返回0xff)                              * 
//说  明:参数*p带回接收标志.*p=0,收到数据;*p=1,未收到数据                  *
//-------------------------------------------------------------------------*
INT8U SCIRe1(INT8U *p)
{  
   INT16U k;
   INT8U  i;
   //ReStatusR第ReTestBit位为1表示可接收数据
   for(k=0;k<0xfbbb;k++)
	  if ((ReSendStatusR & (1<<ReTestBit)) != 0)
	  {
	      i=ReSendDataR;
	      *p=0x00; 
	      break;
	  } 
   //接受失败
   if(k>=0xfbbb) 
   {
	  i=0xff;
	  *p=0x01;
   }
   return i;
}

//SCIReN:HC08串行接收N个字节-----------------------------------------------*
//功  能:接收N个字节数据,并存放在ch数组中                                  *
//参  数:待接收的数据字节数及其存放的数组首地址                            *
//返  回:接收标志=0 收到数据,=1 未收到数据                                 *
//-------------------------------------------------------------------------*
INT8U SCIReN(INT8U n,INT8U ch[])
{
   int m;                  
   INT8U fp;
   m=0;
   while (m<n)
   { 	          
	  ch[m]=SCIRe1(&fp); 
	  if (fp==1) return 1;
	  m++;
   } 
   return 0;	 
}

⌨️ 快捷键说明

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