假定要发送一组数据 Send[10]一般选用查询发送(循环发送)方法:
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多,而中止发送只占单片机几十微秒(单片机速度越快,占用时刻越少)。
中止发送缺陷:代码稍杂乱,发送进程不易控制。