英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: PIC18F4431 USART问题 [打印本页]

作者: lucky    时间: 2012-8-20 16:13
标题: 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);
    }
}

另外,计时器和串口同时使用库函数打开时,会有一个不能用。






欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://www.enroobbs.com/) Powered by Discuz! X3.2