新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 玩轉(zhuǎn)單片機(jī)之五--串口多數(shù)據(jù)收發(fā)

玩轉(zhuǎn)單片機(jī)之五--串口多數(shù)據(jù)收發(fā)

作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏

#include

本文引用地址:http://butianyuan.cn/article/201611/315871.htm

#define uchar unsigned char //byte
#define uint unsigned int //word

sbit led1=P0^0;
sbit led2=P0^1;

#define INBUF_LEN 8 //數(shù)據(jù)長(zhǎng)度
unsigned char inbuf[INBUF_LEN]; //存儲(chǔ)數(shù)據(jù)數(shù)組
unsigned char count3; //計(jì)數(shù)器

//向串口發(fā)送一個(gè)字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}

//向串口發(fā)送一個(gè)字符串,strlen為該字符串長(zhǎng)度
void send_string_com( unsigned char *str, unsigned int strlen)
{
unsigned int k= 0 ;
do
{
send_char_com(*(str + k));
k++;
} while (k < strlen);
}

void main(void)
{ //串口初始化
TMOD=0x20;
PCON=0x00;
SCON=0x50;
TL1=0xfd;
TH1=0xfd;
TR1=1;
//計(jì)數(shù)
count3= 0 ;

while(1)//動(dòng)態(tài)現(xiàn)實(shí)是接收多個(gè)數(shù)據(jù)
{
if (RI)
{
//接收數(shù)據(jù)
unsigned char ch;
RI = 0 ;
ch=SBUF;
inbuf[count3]=ch; //存儲(chǔ)數(shù)據(jù)
count3++; //計(jì)數(shù)器增加
if ( (count3==INBUF_LEN ))
{ count3= 0 ; //計(jì)數(shù)器清零
send_string_com(&inbuf,INBUF_LEN);//向串口發(fā)送一個(gè)字符串
}
}

//串口數(shù)據(jù)的檢驗(yàn),可以刪除
if(inbuf[3]==0x11 )
{led1=0;}
}
}



評(píng)論


技術(shù)專區(qū)

關(guān)閉