本人最近在做一个基于PIC18F66J60的以太网转串口的的毕设。调试过程中出现几个问题,求大神解答下啊。。不甚感激啊。。。
问题如下:
我用串口调试助手向串口发送数据,在程序中的中断服务程序中设置了断点;那么,正常情况下。程序应该是会跳到断点处,但是程序却没有反应。。。。
第二是,我观察到TXREG1中有数据了,但是串口助手上却没有显示。。。
本人怀疑是串口的问题,但是检查了几遍代码。不知道问题出现在哪里。。求解释啊。。
硬件初始化代码:
static void InitializeBoard(void)
{
OSCTUNEbits.PPRE =0; // PLL Prescaler Configuration OSCTUNEbits.PPST0 = 0;
OSCTUNEbits.PPST1 = 0;
OSCTUNEbits.PLLEN = 1; //enable PLL ;
// UART IO
UART1TX_TRIS = 0; // output (TRISCbits.TRISC6)
UART1RX_TRIS = 1; // input
RCSTA1bits.SPEN = 0;// disable uart commutation
TXSTA1bits.SYNC = 0; // asynchronous mode
TXSTA1bits.BRGH = 1; // high speed
BAUDCON1bits.BRG16 = 1; // 16bits
RCSTA1bits.CREN = 1; // enable receive
TXSTA1bits.TXEN = 1; // tx enable
// EUSART1 rx int enable
IPR1bits.RC1IP = 1; // high priority
PIE1bits.RC1IE = 1; // enable
// EUSART1 tx int enable
IPR1bits.TX1IP = 1; // high priority
PIE1bits.TX1IE = 0; // disable
// Enable Interrupts
RCONbits.IPEN = 1; // Enable interrupt priorities
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;
}
串口初始化
void UART_Init(BYTE Baud)
{
RCSTA1bits.SPEN = 0;// disable uart commutation
//calculate baud rate
SPBRGH1 = (BYTE)((UART_BAUD_TBL[Baud][1] & 0xFF00 )>>8);
SPBRG1 = (BYTE)(UART_BAUD_TBL[Baud][1] & 0x00FF );
//enable uart
RCSTA1bits.SPEN = 1;//Enable uart commutation
} |