//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);
}
请大神帮忙看一下程序!