我正在写一段F2809串口中断的代码,
for(;;)
{
scia_xmit(SendChar0); // Init send data
SendChar1= Value<<8; //Value & 0x00FF;
SendChar1=SendChar1>>8; // low 8-bit
scia_xmit(SendChar1);
SendChar2 =Value>>8; //Value & 0xFF00; // high 8-bit;
scia_xmit(SendChar2);
delay();
}
}
interrupt void sciaRxFifoIsr(void)
{
Uint16 a;
Uint16 ReceivedChar0;
Uint16 ReceivedChar1;
Uint16 ReceivedChar2;
a=++loop;
switch(a)
{
case 1 : Value=EPwm1Regs.TBCTR; break;
case 2 : ReceivedChar0 =SciaRegs.SCIRXBUF.all; break; // Read data
case 3 : ReceivedChar1 = SciaRegs.SCIRXBUF.all; // Read data
ReceivedChar2 =ReceivedChar1<<8 |ReceivedChar0; //(ReceivedChar1*256)+ReceivedChar0;
loop=0; break;
}
SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all=PIEACK_GROUP9; // Issue PIE ack
}
想问一下,当程序scia_xmit(SendChar0); 执行完之后会跳到中断里,,中断执行完之后程序会跳到SendChar1= Value<<8; 这一行继续执行么??我是这么想的,可是第二次中断RXBUF里的值不对,,有知道的么??谢谢