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

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3368|回复: 0
打印 上一主题 下一主题

PIC18F4431 USART问题

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-20 16:13:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手,想用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 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-27 21:09 , Processed in 0.051997 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表