这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 【求助】关于串口通信程序问题

共2条 1/1 1 跳转至

【求助】关于串口通信程序问题

院士
2006-09-17 18:14:16     打赏
【求助】关于串口通信程序问题



关键词: 求助     关于     串口     通信     程序     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 使用的是MSP430F12X系列单片机,在串口通信仿真时,程序就在判断是否发送完一个字节的语句中跳不出来了,请问各位有谁碰到过这个问题,该怎么解决?谢谢!!
ps:怕自己寄存器设置有错,采用自带的例程初始化语句,加了自己改了发送的内容。
请问程序有问题吗?
#include <MSP430x12x.h>

void main(void)
{int Data[6]={10,88,55,66,55,33};
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
UCTL0 = CHAR; // 8-bit character
UTCTL0 = SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; //
UMCTL0 = 0x6B; //
ME2 |= UTXE0 + URXE0; // Enabled USART0 TXD/RXD
IE2 |= URXIE0; // Enabled USART0 RX interrupt
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x10; // P3.4 output direction

for(i=0;i<=6;i++)
{

TXBUF0=Data[i];
while ((IFG2 & UTXIFG0) != UTXIFG0); //试过其他的几种方式也不行
}
} 1: 确认一下,你用的是串口0还是1,你程序里0和1混用了,好像是的.如果是0的话,ME2应该改为ME1,还有IFG2改为IFG1 2: 没有混用,12X系列只有1个串口,就是UASRT0,这应该没错,按照它的寄存器结构来的 3: 那你把ME2,IE2,IFG2都改为1试试看呢 4: 多谢!找到原因了,原来是寄存器设置上弄错了,串口没正常工作,仿真成功,但愿在硬件上跑不要出什么问题。 5: 应该没有问题的 ^_^ 6: wish

初级会员


注册日期: Jul 2004
帖子: 6
精华: 0
现金: 0 元
资产: 0 元
声望: 10
多谢!找到原因了,原来是寄存器设置上弄错了,串口没正常工作,仿真成功,但愿在硬件上跑不要出什么问题

楼主能不能告诉我你的经验,能不能给我发一个你的程序我看看。sir5163.com.谢谢
搂住 7: 其实也不叫经验之说了,例程IAR自带的就有,关键是要把自己用的型号的单片机的几个关于串口发送有关的寄存器弄清楚,设置正确就对了,一般不会有别的问题。 8: 那你怎么知道你的数据发对了。上位机的接受程序你用的是哪个?我现在正在调试串口程序,项目已经拖期两周,急需你的帮助。请问你的单片机的例子用的是那个,上位机的程序用的有是哪个?接口芯片用的是那个,我用的是max3232,请帮忙谢谢!!!!sir5163.com 9: 上位机用的是串口调试工具,利而达资料库中下载的;接口芯片用的是max232,其它的都行,这都无所谓的,只要芯片没问题就行。
我现在只是调试例程,用的是自带的,我用的是MSP430F123单片机;多看看datasheet和user guide。
慢慢来,我也摸索了很久。 10: 引用:

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]