英锐恩单片机论坛,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://enroobbs.com/)
Powered by Discuz! X3.2