3434|6

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】串口通信??急 [复制链接]

以下是我的串口程序,严格按照大可书书上遍的!
使用串口调试助手,什么也收不到!!,我用的是MAX3232,供电电压为3V
而且程序到while((UTCTL0&0x01)==0);就不动了
请各位大虾帮忙看以下:
//发送程序
#include <msp430x13x.h>
#define uint unsigned int
#define uchar unsigned char

void InitComm(void);
void delay(long v);
char Data[6]={0x00,0x01,0x02,0x03,0x04,0x00};

void main(void)
{
uchar i;
WDTCTL=WDTPW+WDTHOLD; //终止看门构
DCOCTL=0x73;
InitComm();
while(1)
{
TXBUF0=0Xff;
while((UTCTL0&0x01)==0);
for(i=0;i<=6;i++)
{
TXBUF0=Data[i];
while((UTCTL0&0x01)==0);
}
}
}


void InitComm(void)
{
UCTL0&=~SWRST; //SWRST复位,USART允许
UCTL0=CHAR; //无校验,1位停止位,8位数据位,异步
UBR00=0xA0;
UBR10=0x01; //32KHz时,波特率为9600
UMCTL0=0x4A; //位调整
UTCTL0=SSEL0; //Select the ACLK 32kHz
ME1|=0x20;//UTXE1 ; //UART发送模块允许

P3SEL|=BIT4; //P3.4为发送
P3DIR|=BIT4;
}
此帖出自信息发布论坛

最新回复

xie0577: 32K晶振,9600波特率 应该是 UMCTL0=0X4A; //波特率9600 UBR00 =0X03; UBR10 =0X00; 吧 ---------------------------------------------------  详情 回复 发表于 2004-12-9 09:14
点赞 关注
 
 

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
以下是我用过的程序(串口初始化),供参考!!!!!!
void InitComm(void)
{
int i;

BCSCTL1&=~XTS;
do
{
IFG1&=~OFIFG;
for(i=0;i<300;i++);
}
while((IFG1&OFIFG)==OFIFG);
BCSCTL2=0X00;
DCOCTL=0XE0;
UCTL0=0x10; //串口0:8位数据,一位停止位
UCTL0&=~SWRST;
UCTL1&=~SWRST;
UTCTL0|=SSEL0;
UBR00=0xA0;
UBR10=0x01;
UMCTL0=0x08; //寄存器调整
ME1 |= (UTXE0 + URXE0); //模块允许
IE1 |= URXIE0; //中断允许
P3SEL=0xF0;
P3DIR|=BIT4;
}
此帖出自信息发布论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
要注意几个方面,都是我犯的低级错误,:(
第一 2、3、5三根线到了那边是3、2、5最好对照电路图TXD->RXD,因为有的人已经在线路板上把他们换过来了;
第二 要接上串口电缆才能量出电压来,pc机那边过来的肯定有,在你这边的RXD上,十多伏;
第三 串口调试助手让他显示十六进制的接收数据,我看你发的是0xff,不知道对应到ASCII上是什么字符,有可能是控制字符,什么都不显。

有个示波器最好了,看看有没有波形就知道怎么回事。
祝你顺利!!!
此帖出自信息发布论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
ME1|=0x20;//UTXE1 ; //UART发送模块允许
-----------------------------------------------------------
这句话似乎有问题啊.
此帖出自信息发布论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
多谢各位了!!
我现在是能够发送了,问题是ME1|=0x20,模块没有允许!!
郁闷啊!!低级错误
可是接收总是00,不知为什么??
此帖出自信息发布论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用:

以下是我的串口程序,严格按照大可书书上遍的!
使用串口调试助手,什么也收不到!!,我用的是MAX3232,供电电压为3V
而且程序到while((UTCTL0&0x01)==0);就不动了
请各位大虾帮忙看以下:
//发送程序
#include <msp430x13x.h>
#define uint unsigned int
#define uchar unsigned char

void InitComm(void);
void delay(long v);
char Data[6]={0x00,0x01,0x02,0x03,0x04,0x00};

void main(void)
{
uchar i;
WDTCTL=WDTPW+WDTHOLD; //终止看门构
DCOCTL=0x73;
InitComm();
while(1)
{
TXBUF0=0Xff;
while((UTCTL0&0x01)==0);
for(i=0;i<=6;i++)
{
TXBUF0=Data;
while((UTCTL0&0x01)==0);
}
}
}


void InitComm(void)
{
UCTL0&=~SWRST; //SWRST复位,USART允许
UCTL0=CHAR; //无校验,1位停止位,8位数据位,异步
UBR00=0xA0;
UBR10=0x01; //32KHz时,波特率为9600
UMCTL0=0x4A; //位调整
UTCTL0=SSEL0; //Select the ACLK 32kHz
ME1|=0x20;//UTXE1 ; //UART发送模块允许

P3SEL|=BIT4; //P3.4为发送
P3DIR|=BIT4;
}
32K晶振,9600波特率
应该是
UMCTL0=0X4A; //波特率9600
UBR00 =0X03;
UBR10 =0X00;
此帖出自信息发布论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
xie0577:
32K晶振,9600波特率
应该是
UMCTL0=0X4A; //波特率9600
UBR00 =0X03;
UBR10 =0X00;

---------------------------------------------------

此帖出自信息发布论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表