C51:串口接收和發(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ī)速度越快,占用時(shí)間越少)。
中斷發(fā)送缺點(diǎn):代碼稍復(fù)雜,發(fā)送過程不易控制。
評(píng)論