?? sci.c
字號:
/*-----------------------------------------------------*
*文件描述:本文件包含了串行通信的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<<SendTestBit)) != 0)
{ ReSendDataR=o;
break;}
}
/*SCISendN:串行發送N個字節-----------------------------*
*功 能:發送數組中的N個字節數據 *
*參 數:待發送的數據字節數及其要存放的數組首地址 *
*返 回:無 *
*-----------------------------------------------------*/
void SCISendN(unsigned char n,unsigned char ch[])
{int i;
for(i=0;i<n;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<<ReTestBit)) != 0)
{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<n)
{
ch[m]=SCIRe1(&fp);
if (fp==1) return 1;
m++;
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -