lucky 发表于 2012-8-20 16:13:23

PIC18F4431 USART问题

新手,想用PIC18F4431做直流无刷电机的控制,可是这第一步就不太顺利,串口一直没调好,下面是我的代码,问题出在哪里呢?
我使用了C18的库函数,就是想上位机通过串口发送一个字符,PORTD的状态反转一次,可是实际运行起来,程序一直在中断里,出不来了。

#include <p18f4431.h>
#include <timers.h>
#include <delays.h>
#include <usart.h>
void rx_isr (void);

#pragma code low_vector=0x08
void low_interrupt (void)
{
_asm goto rx_isr _endasm
}

#pragma interrupt rx_isr
void rx_isr (void)
{

      unsigned char c;
       Delay10KTCYx(200);
       PORTD = ~PORTD;
       PIR1bits.RCIF = 0;
       TXSTAbits.TXEN = 0;
}

void main (void)
{
   TRISD = 0b11111001;
   TRISB=0;
   TRISCbits.RC6 = 0;//RC6 TXD output
   TRISCbits.RC7 = 1;//RC7 RXD input

    RCONbits.IPEN = 1;
    INTCONbits.GIEH = 1;
    INTCONbits.GIEL = 1;
    PIR1bits.RCIF = 0;
    IPR1bits.RCIP = 0;
    OpenUSART(USART_RX_INT_ON &
                        USART_TX_INT_ON &
                        USART_ASYNCH_MODE &
                        USART_SINGLE_RX &
                        USART_BRGH_HIGH,
                        25
                      );//配置串口参数

baudUSART(BAUD_IDLE_CLK_HIGH &
                      BAUD_8_BIT_RATE &
                      BAUD_AUTO_OFF
                  );
while (1)
    {
   PORTB = ~PORTB;
    Delay10KTCYx(20);
    }
}

另外,计时器和串口同时使用库函数打开时,会有一个不能用。
页: [1]
查看完整版本: PIC18F4431 USART问题