标题: 51单片机串口查询法与中断法 [打印本页]

作者: 51黑bing    时间: 2016-3-23 00:21
标题: 51单片机串口查询法与中断法
假设要发送一组数据   Send[10]
一般采用查询发送(循环发送)方式:
  1. unsigned char Send[10];                  //发送量
  2. unsigned char i;                               //循环量
  3. for(i=0;i<10;i++)
  4. {
  5.        SBUF= Send[i];                      //发送
  6.        while(TI==0);                         //等待发送完成
  7.        TI=0;                                      //清标志
  8. }

  9. 采用中断发送方式:
  10. unsigned char Send[10];                 //发送量
  11. unsigned char num;                         //发送数据量
  12. unsigned char *p;                           //发送用指针

  13. //发送时:
  14. num=10;                                        //定义发送数据量
  15. p=&Send ;                                    //取首地址
  16. SBUF=*p;                                    //发送第一个数据,启动发送中断
  17. //中断代码:
  18. void ComInt() interrupt 4
  19. {
  20.        if(RI)  RI=0;                          //接收中断略;
  21.      
  22.        if(TI)                                     //发送中断处理
  23.        {
  24.               TI=0;                             //清标志
  25.               num--;                            //计数减1
  26.               p++;                               //指针加1
  27.               if(num >0) SBUF=*p;     //数据继续发送至全部发完
  28.        }
  29. }
复制代码


中断发送优点:省去循环等待时间,以上面例子为例,9600bps时查询发送约占用单片机10ms多,而中断发送只占单片机几十微秒(单片机速度越快,占用时间越少)。

中断发送缺点:代码稍复杂,发送过程不易控制。






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1