微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C51:串口接收和发送,查询与中断方法

C51:串口接收和发送,查询与中断方法

时间:11-09 来源:互联网 点击:
假设要发送一组数据 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多,而中断发送只占单片机几十微秒(单片机速度越快,占用时间越少)。
中断发送缺点:代码稍复杂,发送过程不易控制。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top