//PC串口助手发送一个字节,单片机回传数据
#include "p24HJ128GP506.h"
void Delay_xmS(unsigned int i)                  //延时程序
{
        unsigned int j;
        for(;i>0;i--)
        {
                Nop();
                for(j=0;j<255;j++)
                {
                        Nop();
                        ClrWdt();
                }
        }        
}
void UART2_Init(void)
{
        U2MODEbits.STSEL = 0;            // 1个停止位
        U2MODEbits.PDSEL = 0;            // N , 8, 1
        U2MODEbits.ABAUD = 0;            // 自动波特率禁止
        U2MODEbits.RTSMD = 1;            // 引脚处于单工模式
        
//        U2MODE.BRGH=0;
        
        U2BRG=((5000000/16)/9600)-1;         //设置波特率
                           
        U2STAbits.UTXISEL1 = 1;          // 发送一个字符后中断
        U2STAbits.UTXISEL0 = 0;
                                                         
        U2STAbits.URXISEL1 = 0;          // 接收一个字符后中断
        U2STAbits.URXISEL0 = 0;
        
        IEC1bits.U2RXIE = 1;             // 允许接收中断
        IEC1bits.U2TXIE = 1;             // 允许发送中断
        
        U2MODEbits.UARTEN = 1;           // 允许发送
        U2STAbits.UTXEN   = 1;           // 使能串口2
}
void __attribute__((__interrupt__,no_auto_psv))_U2RXInterrupt(void)
{ unsigned int tmp;
        tmp        = U2RXREG;               // 发送所接收到的数据
        Delay_xmS(1);
        U2TXREG=tmp; 
        IFS1bits.U2RXIF = 0;
}        
void __attribute__((__interrupt__,no_auto_psv))_U2TXInterrupt(void)
{
        IFS1bits.U2TXIF = 0;
}
int main(void)
{
        AD1PCFGL = 0xffff;            //所有引脚为数字I/O
//        TRISB = 0xFFFF;               //设置B端口为输入
        TRISG = 0;                    //设置G端口为输出
        TRISD = 0x0000;               //设置D端口为输出
        
        TRISFbits.TRISF5 = 0; //配置 u2tx 方向为输出
        TRISFbits.TRISF4 = 1; //配置 u2Rx 方向为输入
        UART2_Init();
        while(1);
        
}
请大神帮忙看一下程序!