51 串口中断发送程序
时间:11-11
来源:互联网
点击:
假设要发送一组数据Send[10]
一般采用查询发送(循环发送)方式:
unsignedcharSend[10];//发送量
unsignedchari;//循环量
for(i=0;i<10;i++)
{
SBUF=Send[i];//发送
while(TI==0);//等待发送完成
TI=0;//清标志
}
采用中断发送方式:
unsignedcharSend[10];//发送量
unsignedcharnum;//发送数据量
unsignedchar*p;//发送用指针
//发送时:
num=10;//定义发送数据量
p=&Send;//取首地址
SBUF=*p;//发送第一个数据,启动发送中断
//中断代码:
voidComInt()interrupt4
{
if(RI)RI=0;//接收中断略;
if(TI)//发送中断处理
{
TI=0;//清标志
num--;//计数减1
p++;//指针加1
if(num>0)SBUF=*p;//数据继续发送至全部发完
}
}
中断发送优点:省去循环等待时间,以上面例子为例,9600bps时查询发送约占用单片机10ms多,而中断发送只占单片机几十微秒(单片机速度越快,占用时间越少)。
中断发送缺点:代码稍复杂,发送过程不易控制。
一般采用查询发送(循环发送)方式:
unsignedcharSend[10];//发送量
unsignedchari;//循环量
for(i=0;i<10;i++)
{
SBUF=Send[i];//发送
while(TI==0);//等待发送完成
TI=0;//清标志
}
采用中断发送方式:
unsignedcharSend[10];//发送量
unsignedcharnum;//发送数据量
unsignedchar*p;//发送用指针
//发送时:
num=10;//定义发送数据量
p=&Send;//取首地址
SBUF=*p;//发送第一个数据,启动发送中断
//中断代码:
voidComInt()interrupt4
{
if(RI)RI=0;//接收中断略;
if(TI)//发送中断处理
{
TI=0;//清标志
num--;//计数减1
p++;//指针加1
if(num>0)SBUF=*p;//数据继续发送至全部发完
}
}
中断发送优点:省去循环等待时间,以上面例子为例,9600bps时查询发送约占用单片机10ms多,而中断发送只占单片机几十微秒(单片机速度越快,占用时间越少)。
中断发送缺点:代码稍复杂,发送过程不易控制。
51串口中断发送程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)