打印

串口和595问题

[复制链接]
1136|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
闲来玩玩|  楼主 | 2014-5-21 07:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uint     dis_buff[8]={0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008};  //定义数组

void Poweroninit(void)                                                           //I0初始
    {
      U1MODE=0x8000;U1BRG=0x0019; TRISE=0x0000;LATE=0x0000;
      IEC0bits.U1RXIE = 1;IFS0bits.U1RXIF=0;
     }

void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void)      //串口中断
{

    if(U1STAbits.OERR==1)
    {
        U1STAbits.OERR=0;
    }
    else if((U1STAbits.FERR==0)&&(U1STAbits.PERR==0))
    {
         gg=U1RXREG;
    }
    IFS0bits.U1RXIF=0;
}

int main(void)
{
  Delay_xms(50);                                                        //延时
  Poweroninit();                                                           //I0初始
  while(1)
    {
      display();                                                            //595显示扫描。
      dis_buff[0] =gg&0x000f;dis_buff[1]=gg&0x00f0;
    }
}

用串口助手向单片机(dspic30f2010)发送数据(16进),595扫描显示,发送数据01,02,03,04,05,06,07,08,09,0a ,0b,0c,0d,0e,0f,显示都正常,但只要发送数据高4位不是零,数组里的数据就是乱码,明明只操作了数组[0]和[1],为什么数组[2],[3],[4],[5],[6],[7]里的数据都变化了。
沙发
NE5532| | 2014-5-21 12:16 | 只看该作者
先不要用串口来发,写测试程序,从00显示到FF,循环进行,确认显示是正确的,再调串口,如果是串口传输有问题,可能是波特率不准。参考《程序调试黑宝书》

使用特权

评论回复
板凳
闲来玩玩|  楼主 | 2014-5-21 17:28 | 只看该作者
问题已解决,结贴。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

87

帖子

0

粉丝