[求助] 430单片机串口程序问题

小愤青   2014-1-9 13:24 楼主
悬赏 2 分 芯积分未解决
自己写了一个串口调试程序,用串口调试助手调试,只有发送没有接收。各位高手看看是不是程序有问题啊
#include
void main(void)
{
    unsigned char i;
    P4SEL |= BIT0;                            //设置P4.0为UART1的TXD
    P4SEL |= BIT1;                              //设置P4.1为UART1的RXD
    P4DIR |= BIT0;                              //P4.0为输出管脚
    WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
    FLL_CTL0 |= XCAP11PF;                     // Configure load caps
  do
    {
      IFG1 &= ~OFIFG;                         // Clear OSCFault flag
      for (i = 0xff; i > 0; i--);             // Time for flag to set
    }
     while ((IFG1 & OFIFG));                   // OSCFault flag still set?
     UCA1CTL1 |= UCSSEL_1;                     // CLK = ACLK
     UCA1BR0 = 0x03;                           // 32k/9600 - 3.41
     UCA1BR1 = 0x00;                           //
     UCA1MCTL = 0x06;                          // Modulation
     UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
    // ME2 |= UCA1TXIE+ UCA1RXIE;              //使能UART1的TXD和RXD
     IE2 |= UCA1RXIE;                               //使能UART1的RX中断
     IE2 |= UCA1TXIE;                               //使能UART1的TX中断
     _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0, interrupts enabled
}
//  Echo back RXed character, confirm TX buffer is ready first
  #pragma vector=USCIAB1RX_VECTOR
  __interrupt void USCIA1RX_ISR (void)
  {
      while(!(IFG2&UCA1TXIFG));
      UCA1TXBUF = UCA1RXBUF;                    // TX -> RXed character
  }

回复评论 (8)

把看门狗放第一句吧,看的顺眼一点。WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
点赞  2014-1-9 18:24
你的中断只有接收中断,根本就没有写发送中断程序,你把IE2 |= UCA1TXIE去掉,再把低功耗的那句话去掉,你用串口调试工具发数据,看是否进你的接受中断。
点赞  2014-1-9 18:28
这是一个官方例程,你想要的目的是想把串口调试软件发送的数据经过单片机再发给串口调试软件。
点赞  2014-1-9 18:30
同时最重要的要把IFG2 &=~UCA1TXIFG;手动把标志位清零。
点赞  2014-1-9 18:31
引用: 小右派 发表于 2014-1-9 18:28
你的中断只有接收中断,根本就没有写发送中断程序,你把IE2 |= UCA1TXIE去掉,再把低功耗的那句话去掉,你 ...

没有留仿真接口
点赞  2014-1-10 09:42
引用: 小愤青 发表于 2014-1-10 09:42
没有留仿真接口

把你的程序从新编辑,与仿真接口有什么关系。
点赞  2014-1-10 20:25
引用: 小右派 发表于 2014-1-10 20:25
把你的程序从新编辑,与仿真接口有什么关系。

那怎么看进没进接收中断呢,
点赞  2014-1-13 09:57
引用: 小愤青 发表于 2014-1-13 09:57
那怎么看进没进接收中断呢,

在中断处打断点。
点赞  2014-1-13 21:18
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复