map430f149的串口问题

2019-07-15 16:40发布

我想要单片机在接收到一个数据时返回一个字符A,发现无论如何都实现不了,大家帮忙看看程序有么有问题,而且我还想在主函数中处理一些其他的问题,比如点亮一盏灯,发现都实现不了,大家帮忙看看什么问题,哪里出错了,要怎么弄,谢谢

#include <msp430x14x.h>
#include "Config.h"
uchar n;
uchar data=0;
//*************************************************************************
//               MSP430串口初始化
//*************************************************************************
void UART_Init()
{
  U0CTL|=SWRST;               //复位SWRST
  U0CTL|=CHAR;                //8位数据模式
  U0TCTL|=SSEL1;              //SMCLK为串口时钟
  // U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N      //在config里有设置   提取高位
  //U0BR0=baud_l;               //N=UBR+(UxMCTL)/8            //在config里有设置   提取低位
  //U0MCTL=0x00;                //微调寄存器为0,波特率9600bps

U0BR0 = 0x41;//波特率9600
U0BR1 = 0x03;                        //有串口波特率计算公式的   
U0MCTL = 0x00;

  ME1|=UTXE0;                 //UART1发送使能
  ME1|=URXE0;                 //UART1接收使能
  U0CTL&=~SWRST;
  IE1|=URXIE0;                //接收中断使能位
// IE1|=UTXIE0;                //发送中断使能位

  P3SEL|= BIT4;               //设置IO口为外围模式
  P3DIR|= BIT4;               //设置IO口方向为输出
  P3SEL|= BIT5;                    //看原理图进行设置。。注意有跳
  P3DIR&=~ BIT5;               //设置IO口方向为输入
}

//*************************************************************************
//              串口0发送数据函数
//*************************************************************************

void Send_Byte(uchar data)
{
  while(!(IFG1&UTXIFG0));          //发送寄存器空的时候发送数据
    U0TXBUF = data;
    IFG1&=~UTXIFG0;
}

//*************************************************************************
//               处理来自串口 0 的接收中断
//*************************************************************************

#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{

    data = U0RXBUF;                       //接收到的数据存起来
    n=1;
    Send_Byte('A');                    //将接收到的数据再发送出去
}

//*************************************************************************
//            处理来自串口 0 的发送中断,预留
//*************************************************************************

//#pragma vector=UART0TX_VECTOR
//__interrupt void UART0_TX_ISR(void)
//{

//}

//*************************************************************************
//           主函数
//*************************************************************************
void main(void)
{
  WDT_Init();                         //看门狗设置
  Clock_Init();                       //系统时钟设置
  UART_Init();                        //串口设置初始化
  _EINT();    //开中断

  while(1)                            //无限循环
    {   

      if(n==1){
  Send_Byte('A');
  n=0;
              }  


    }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
liumsde
1楼-- · 2019-07-16 08:18
很不错的程序,我就编不出来。sorry 这个不是故意的
liumsde
2楼-- · 2019-07-16 11:18
很不错的程序,我就编不出来
liumsde
3楼-- · 2019-07-16 14:36
 精彩回答 2  元偷偷看……
liumsde
4楼-- · 2019-07-16 17:15
很不错的程序,我就编不出来
liumsde
5楼-- · 2019-07-16 18:01

11# liumsde 发表于 8 秒前
很不错的程序,我就编不出来。sorry 这个不是故意的
liumsde
6楼-- · 2019-07-16 22:44
不错的程序,我就编不出来

一周热门 更多>