微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 串行通信中断方式子程序

串行通信中断方式子程序

时间:11-23 来源:互联网 点击:
/*-----------------------------------------------------*

*文件描述:本文件包含了串行通信的4子程序,分别为: *
*(1)SCISend1:串行发送1字节 *
*(2)SCISendN:串行发送n字节 *
*(3)SCIRe1:串行接收1字节 *
*(4)SCIReN:串行接收n字节 *
//[以下为子程序源代码]
//[包含头文件]
#include "SCI.h"
/*SCISend1:串行发送1个字节-----------------------------*
*功 能:串行发送1个字节 *
*参 数:要发送的数据 *
*返 回:无 *
*-----------------------------------------------------*/
void SCISend1(unsigned char o)
{//判断ReStatusR的第SendTestBit位是否为1,是1可以发送
while(1)
if ((ReSendStatusR & (1 { ReSendDataR=o;
break;}
}
/*SCISendN:串行发送N个字节-----------------------------*
*功 能:发送数组中的N个字节数据 *
*参 数:待发送的数据字节数及其要存放的数组首地址 *
*返 回:无 *
*-----------------------------------------------------*/
void SCISendN(unsigned char n,unsigned char ch[])
{int i;
for(i=0;i
SCISend1(ch[i]);
}
/*SCIRe1:串行收一个字节数据----------------------------*
*功 能:从串行口接收1个字节的数据 *
*参 数:标志指针p *
*返 回:接收到的数据(若接收失败,返回0xff) *
*说 明:参数*p带回接收标志=0收到数据,=1未收到数据 *
*-----------------------------------------------------*/
unsigned char SCIRe1(unsigned char *p)
{ unsigned int k;
unsigned char i;
//ReStatusR第ReTestBit位为1表示可接收数据
for(k=0;k<0xfbbb;k++)
if ((ReSendStatusR & (1 {i=ReSendDataR;
*p=0x00;
break;}
if(k>=0xfbbb)
{i=0xff;
*p=0x01;}
return i; //返回接收到的数据
}
/*SCIReN:HC08串行接收N个字节---------------------------*
*功 能:接收N个字节数据,并存放在ch数组中 *
*参 数:待接收的数据字节数及其存放的数组首地址 *
*返 回:接收标志=0收到数据,=1未收到数据 *
*-----------------------------------------------------*/
unsigned char SCIReN(unsigned char n,unsigned char ch[])
{int m;
unsigned char fp;
m=0;
while (m{
ch[m]=SCIRe1(&fp);
if (fp==1) return 1;
m++;
}
return 0;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top