社区导航

 

搜索
查看: 911|回复: 6

[求助] 串口

[复制链接]

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-8 19:52 | 显示全部楼层 |阅读模式
程序功能:(msp430f149)MCU不停向PC机发送数据,在屏幕上显示三行字符,换行后重复显示0~9字符。问题是:打开串口调试工具,屏幕上并没有显示程序描述的效果。。求大神赐硬件连接图指导
/******************************
------------------------------------------------------





#include  



typedef unsigned char uchar;

typedef unsigned int  uint;



void Delays(void);

void PutString(uchar *ptr);

uchar value = 0x39;



/********************主函数**********************/

void main(void)

{

    uchar *tishi = " www.nuist.edu\

                    \n welcome to my class!\

                    \n 0~9 ASCII code as follows:";



    WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗定时器

    UCTL0 &= ~SWRST;                          // 初始化UART0状态机

    P3SEL |= 0x30;                            // P3.4,5选择为UART收发端口   00110000

    UCTL0 |= CHAR;                            // 8-bit character

    UTCTL0 |= SSEL0;                          // UCLK = ACLK  32768Hz

    UBR00 = 0x0D;                             // 32k/2400 - 13.65

    UBR10 = 0x00;                             // 高位表示整数分频?,0x000D=13

    UMCTL0 = 0x6B;                            // Modulation, 0110 1011

    IE1 |= URXIE0;                            // 使能接收中断

    _EINT();                                  //开全局中断

    ME1 |= UTXE0 + URXE0;                     // 使能USART0收发

    PutString(tishi);                        //循环的外围的字符串的发送

    while(1)

    {     

        while (!(IFG1 & UTXIFG0));     //查询到如果没有完成就继续等待

        TXBUF0 = value--;             //0~9 增加显示哦!                        



        while (!(IFG1 & UTXIFG0));

         TXBUF0 = '\n';      //换行,下一面一句是同一行空格

        //TXBUF0 = 0x20;       //注意区别换行和同一行空一格显示方式

        Delays();

        if(value==0x2f)       //显示到9后返回重新显示0

          value=0x39;         

    }

}

/*******************************************

函数名称:PutSting

功    能:向PC机发送字符串

参    数:无

返回值  :无

********************************************/

void PutString(uchar *ptr)

{

      while(*ptr != '\0')                             //判断待发数据的开始

      {

            while (!(IFG1 & UTXIFG0));              // TX缓存空闲?空闲就发,否则等待哦

            TXBUF0 = *ptr++;                       // 发送数据,指针

      }

      while (!(IFG1 & UTXIFG0));

      TXBUF0 = '\n';                        //换行啊,也可以空格的,那就一行显示

}

/*******************************************

函数名称:Delays

功    能:延时一会

参    数:无

返回值  :无

********************************************/

void Delays(void)

{

    uchar i=20;

    uint j;



    while(i--)

    {

            j=2000;

            while(j--);

    }

}





回复

使用道具 举报

1366

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2015-8-9 23:13 | 显示全部楼层
打断点看看,程序有没有卡死在某些地方,没有,就是你的配置代码有问题

回复

使用道具 举报

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-8-10 13:32 | 显示全部楼层
蒽,问题解决了,谢谢。把要发送的数据放到数组里,直接发送就收到了

点评

不错,自己也能解决问题了  详情 回复 发表于 2015-8-10 21:54

回复

使用道具 举报

5

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-10 14:17 | 显示全部楼层
菜鸟12号 发表于 2015-8-10 13:32
蒽,问题解决了,谢谢。把要发送的数据放到数组里,直接发送就收到了

楼主把程序晒出来呗,我也在此卡住了。

回复

使用道具 举报

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-8-10 14:23 | 显示全部楼层
void Data_do(uint temp_d)
{  uchar buffer[5];//设发送数组
  buffer[4]='\0';
  uint w;
  uint temp_1,temp_2;
  A1=temp_d/1000;                       //分出千,百,十,和个位
  temp_1=temp_d%1000;
  A2=temp_1/100;
  temp_2=temp_1%100;
  A3=temp_2/10;
  A4=temp_2%10;
buffer[3] = A4;
buffer[2] = A3;
buffer[1] = A2;
buffer[0]=A1;
for(w = 0; w < 4; w++)
   buffer[w]+= 0x30;
PutString(buffer);
}
你把电压数据处理部分换一下就可以了

回复

使用道具 举报

1366

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2015-8-10 21:54 | 显示全部楼层
菜鸟12号 发表于 2015-8-10 13:32
蒽,问题解决了,谢谢。把要发送的数据放到数组里,直接发送就收到了

不错,自己也能解决问题了

回复

使用道具 举报

8

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-16 15:21 | 显示全部楼层

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-5 21:46 , Processed in 0.265448 second(s), 28 queries , Gzip On, MemCache On.

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