您的位置 首页 方案

单片机串口接纳中止老是接纳到00 00 00 00

发现一个问题,串口接收中断Sendstring(Receivingrn);串口向终端发送字符串,结尾处回车换行Sendstring(————

发现一个问题,串口接纳中止

Sendstring(“Receiving …………”); //串口向终端发送字符串,结尾处回车换行
Sendstring(“———————-“);

void revdata(void) interrupt 4
{
unsigned char temp;
while(RI==0); //if(RI==0)
//return; // //假如没有接纳中止标志,回来
RI = 0; //清串行中止标志位
temp = SBUF; //接纳缓冲器中的字符
Sendchar(temp); //将接纳的字符发送出去
}
上面的程序在STC的串口上,接纳的时分不会一向接纳 00 00 00 00 00 ……..
void revdata(void) interrupt 4
{
unsigned char temp;
if(RI)
RI = 0; //清串行中止标志位
temp = SBUF; //接纳缓冲器中的字符
Sendchar(temp); //将接纳的字符发送出去
}
上面的程序在STC的串口上,接纳的时分会一向接纳 00 00 00 00 00 ……..
该中止程序的结构有问题,单片机的中止是依据SBUF中是否存在数据来中止的,SBUF中存在“R”数据(Sendstring(“Receiving …………”); )。开端的发送字符串触发了发送中止,所以中止函数相当于
void revdata(void) interrupt 4
{
unsigned char temp;
temp = SBUF; //接纳缓冲器中的字符
Sendchar(temp); //将接纳的字符发送出去
} 一向在往外发送“R”
所以必需要进行约束,如下
void revdata(void) interrupt 4
{
unsigned char temp;
if(RI)
{
RI = 0; //清串行中止标志位
temp = SBUF; //接纳缓冲器中的字符
Sendchar(temp); //将接纳的字符发送出去
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/257043.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部