新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C51:串口通信接收與發(fā)送

C51:串口通信接收與發(fā)送

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
假設(shè)要發(fā)送一組數(shù)據(jù) Send[10]

一般采用查詢發(fā)送(循環(huán)發(fā)送)方式:
unsigned char Send[10]; //發(fā)送量
unsigned char i; //循環(huán)量
for(i=0;i<10;i++)
{
SBUF= Send[i]; //發(fā)送
while(TI==0); //等待發(fā)送完成
TI=0; //清標(biāo)志
}

采用中斷發(fā)送方式:
unsigned char Send[10]; //發(fā)送量
unsigned char num; //發(fā)送數(shù)據(jù)量
unsigned char *p; //發(fā)送用指針

//發(fā)送時(shí):
num=10; //定義發(fā)送數(shù)據(jù)量
p=&Send ; //取首地址
SBUF=*p; //發(fā)送第一個(gè)數(shù)據(jù),啟動(dòng)發(fā)送中斷
//中斷代碼:
void ComInt() interrupt 4
{
if(RI) RI=0; //接收中斷略;

if(TI) //發(fā)送中斷處理
{
TI=0; //清標(biāo)志
num--; //計(jì)數(shù)減1
p++; //指針加1
if(num >0) SBUF=*p; //數(shù)據(jù)繼續(xù)發(fā)送至全部發(fā)完
}
}

中斷發(fā)送優(yōu)點(diǎn):省去循環(huán)等待時(shí)間,以上面例子為例,9600bps時(shí)查詢發(fā)送約占用單片機(jī)10ms多,而中斷發(fā)送只占單片機(jī)幾十微秒(單片機(jī)速度越快

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

,占用時(shí)間越少)。
中斷發(fā)送缺點(diǎn):代碼稍復(fù)雜,發(fā)送過(guò)程不易控制。



評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉