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]里的数据都变化了。 |