qt串口发送,单片机收到乱码啊

qt函数mycom->write(“123”);我在电脑上用串口调试助手看是对的.单片机是AVRde接收函数voidUSART_Received_Ir(){UCSRB&=... qt函数
mycom->write(“123”);
我在电脑上用串口调试助手看是对的.
单片机是AVRde接收函数
void USART_Received_Ir()
{
UCSRB&=~BIT(RXCIE); //接收完毕中断不使能
RX_Buffer[i]=UDR;
// delay(5);
i++;
if(i==12)
{
i=0;
flag=1;
//delay(5);
}
UCSRB|=BIT(RXCIE); //接收完毕中断使能
}

然后我在主函数里
if(flag==1)
{
flag=0;
USART_Send(RX_Buffer[0]);
delay(1);
USART_Send(RX_Buffer[1]);
delay(1);
USART_Send(RX_Buffer[2]);
}
这里用串口调试助手看就不对了啊,乱码了,根本不是123啊
展开
 我来答
yylrhyyl
2013-08-27 · TA获得超过1878个赞
知道大有可为答主
回答量:2013
采纳率:80%
帮助的人:617万
展开全部
  • 中断方式:

用ICC产生的初始化程序

#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC

void uart0_rx_isr(void)

{

 //uart has received a character in UDR 

//UCSRB&=~BIT(RXCIE);  //接收完毕中断不使能

//AVR没有中断优先级概念,中断处理结束前不接受新中断,没必要关接收中断
 RX_Buffer[i]=UDR;
// delay(5);
    i++;
 if(i==12)
 {  
   i=0;
   flag=1;
   //delay(5);
  }
// UCSRB|=BIT(RXCIE);  //接收完毕中断使能

}



  • 查询方式

void USART_Received_Ir()

{
if(!( UCSRB&BIT(RXC)))//未接收到新数据

{return;}// 返回
 RX_Buffer[i]=UDR;
// delay(5);
    i++;
 if(i==12)
 {  
   i=0;
   flag=1;
   //delay(5);
  }
}

然后我在主函数里

USART_Received_Ir();

if(flag==1)
        {
    flag=0;
    USART_Send(RX_Buffer[0]);
    delay(1);
    USART_Send(RX_Buffer[1]);
    delay(1);
    USART_Send(RX_Buffer[2]);
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式