本帖最后由 grainlive 于 2014-11-23 00:08 编辑
刚刚开始接触串口
通信这一块……下面是根据例程写的代码#include <msp430f149.h>
unsigned char pre[4];
int i,j;
/********************主函数********************/
void main(void)
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口
ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受
UCTL0 |= CHAR; // 选择8位字符
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x03; // 波特率9600
UBR10 = 0x00; //
UMCTL0 = 0x4A; // Modula
tion
UCTL0 &= ~SWRST; // 初始化UART状态机
for(i=0;i<4;i++) //这个地方写的好像不对
{
while((IFG1 & URXIFG0)==0);
pre
=URXIFG0;
}
for(j=0;j<4;j++)
{
while (!(IFG1 & UTXIFG0)); //等待以前的数据发送完毕
TXBUF0=pre[3-j];
}
while(1);
}
结果不对,比如我发送11 22 33 44,或者1A 2B 3C 4D,收到的都是40 40 40 40
{
while((IFG1 & URXIFG0)==0);
pre=URXIFG0;
}
确实不对,改成这样:
for(i=0;i<4;i++) //这个地方写的好像不对
{
while((IFG1 & URXIFG0)==0);
pre[i]=RXBUF0;
}
一周热门 更多>