|
发表于 2012-2-17 15:32:18
|
显示全部楼层
串口调试不通需从硬件和软件两个方面找问题。硬件方面考虑电路及串口线。软件方面就要考虑你初始化的问题了。要善于使用调试助手来配合调试。给你一个串口的程序吧
#include "msp430x14x.h"
#define uchar unsigned char
void init(void);
uchar data1[6]={'a','b','c','d','e'};
uchar buff[4];
uchar i=0,flag=0,k=0,n=0;
uchar j=0;
/* PC机发以Oxff开头,最后发送的数据为前几个数据的和结束的数据包,430发送字符串"abcde"给PC机*/
void main( void )
{
WDTCTL=WDTPW+WDTHOLD;
//BCSCTL1=0x07;
//BCSCTL2=0x88;
init();
_EINT();
while(1)
{
//TXBUF1=0xff;
//while(UTCTL1&0x01==0);
//i=0;
if(j==1)
{
//i=0;
for(n=0;n<6;n++)
{
TXBUF1=data1[n];
//for(i=0;i<10;i++);
while((UTCTL1&0x01)==0);
}
j=0;
}
}
}
void init(void)
{
UCTL1|=SWRST;
//UCTL1&=~SWRST;
UCTL1=0x10; //8 bit数据,1bit停止位,无校验
UBR01=0x03; //9600波特率
UBR11=0x00;
UMCTL1=0x4A; //位调整
UTCTL1=0x10; //选32768ACLK为时钟源
ME2|=0x30; //发送接受均允许
//ME2|=UTXE0+URXE0; //发送接受均允许
//P3SEL=0x31; //设置端口。P3.0,P3.4,P3.5
//ME2|=0x20;
P3SEL=0xC0;
P3DIR=0x40; // P3.0,P3.4为输出
//P3OUT|=BIT0; //设置75176的DE为1,表示使能发送。
UCTL1&=~SWRST;
IE2|=URXIE1; //中断使能接收
//IE2|=UTXIE1; //中断使能发送
}
#pragma vector=UART1RX_VECTOR
__interrupt void UART1RX(void)
{
// if(!RXERR)
//{
if(flag==0)
{
if(RXBUF1==0xff)
{
flag=1;
i=0;
}
}
else
{
buff=RXBUF1;
if(i>0)
{
k+=buff[i-1];
}
//i++;
//k+=buff;
if(buff==k)
{
flag=0;
j=1;
k=0;
}
i++;
}
//}
} |
|