C51:串口接收和發送,查詢與中斷方法
unsigned char Send[10]; //發送量 unsigned char i; //循環量 for(i=0;i<10;i++) { SBUF= Send[i]; //發送 while(TI==0); //等待發送完成 TI=0; //清標志 }
采用中斷發送方式:
unsigned char Send[10]; //發送量 unsigned char num; //發送數據量 unsigned char *p; //發送用指針 //發送時: num=10; //定義發送數據量 p=&Send ; //取首地址 SBUF=*p; //發送第一個數據,啟動發送中斷 //中斷代碼: void ComInt() interrupt 4 { if(RI) RI=0; //接收中斷略; if(TI) //發送中斷處理 { TI=0; //清標志 num--; //計數減1 p++; //指針加1 if(num >0) SBUF=*p; //數據繼續發送至全部發完 } }
中斷發送優點:省去循環等待時間,以上面例子為例,9600bps時查詢發送約占用單片機10ms多,而中斷發送只占單片機幾十微秒(單片機速度越快,占用時間越少)。
中斷發送缺點:代碼稍復雜,發送過程不易控制。
評論