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

2010-8-31 17:24 8773 9 10 分类: MCU/ 嵌入式

 假设要发送一组数据   Send[10]
一般采用查询发送(循环发送)方式:
unsigned char Send[10];                  //发送量
unsigned char i;                               //循环量
for(i=0;i<10;i++)
{
       SBUF= Send;                      //发送
       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多,而中断发送只占单片机几十微秒(单片机速度越快


,占用时间越少)。
中断发送缺点:代码稍复杂,发送过程不易控制。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户380277 2010-11-11 16:38

你写的非常好,见过很多人写这方面的东西,就你写的最简单,最易懂,最到位。
相关推荐阅读
用户1583963 2012-09-17 10:20
心得:画PCB制图心得
1.公司或个人的logo不要忘记; 2.电源和地尽量做到短;(PS:注意地与电源最好在走线的过程中注意贴着走,减小两者之间的面积,减小两者的干扰) 3.引出各测试管脚,方便后面对信号进行观...
用户1583963 2011-08-12 16:36
板级:PCB敷铜经验交流
所谓覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜。敷铜的意义在于,减小地线阻抗,提高抗干扰能力;降低压降,提高电源效率;还有,与地线相连,减小环路面积。如果PCB的...
用户1583963 2011-08-11 15:05
基础知识:Altium 快捷键
1. PCB设计快捷键(单次按键) 单次按键是指按下该键并放开。 1-01 * 在PCB电气层之间切换(小键盘上的*)。在交互布线的过程中,按此键则换层并自动添加过孔。这很常用。 1-02 Tab键...
用户1583963 2011-06-28 14:47
基础知识:三极管放大电路分析
三极管是电流放大器件,有三个极,分别叫做集电极C,基极B,发射极E。分成NPN和PNP两种。我们仅以NPN三极管的共发射极放大电路为例来说明一下三极管放大电路的基本原理。 下面的分析仅对于NP...
用户1583963 2011-06-28 11:36
板级:整流电路分析
电力网供给用户的是交流电,而各种无线电装置需要用直流电。整流,就是把交流电变为直流电的过程。利用具有单向导电特性的器件,可以把方向和大小交变的电流变换为直流电。下面介绍利用晶体二极管组成的各种整流电路...
用户1583963 2011-06-28 11:13
基础知识:交流电与直流电区别
把一节电池的头(正极)对着另一节的尾(负极)装在手电筒中,手电筒就亮了:如果倒过来,头对头或尾对尾,手电筒就不亮。这是因为电池所产生的电流总是朝一个方向流动,所以叫做直流电。通过输电线或电缆送入家...
我要评论
1
9
关闭 站长推荐上一条 /3 下一条