找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3974|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机串口查询法与中断法

[复制链接]
跳转到指定楼层
楼主
ID:109770 发表于 2016-3-23 00:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假设要发送一组数据   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多,而中断发送只占单片机几十微秒(单片机速度越快,占用时间越少)。

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表