×
单片机 > 单片机程序设计 > 详情

51 串口中断发送程序

发布时间:2020-05-26 发布时间:
|
假设要发送一组数据   Send[10] 
一般采用查询发送(循环发送)方式: 
unsigned char Send[10];                  //发送量 
unsigned char i;                         //循环量 
for(i = 0; 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多,而中断发送只占单片机几十微秒(单片机速度 越快,占用时间越少)。 
中断发送缺点:代码稍复杂,发送过程不易控制。 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机制作超级流水灯