yanghaoxiu 发表于 2015-12-23 20:46:35

pc无法向单片机发送数据


串口调试明明输入"AAAA",显示会有“AA”“A8”"BA"。直接输入“0”,是无发显示的,这是好什么问题

饭桶 发表于 2015-12-23 22:52:13

一个图说明什么?没有程序,不知道什么单片机,玩啥?

yanghaoxiu 发表于 2015-12-24 19:08:11

#include <msp430x14x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
P2DIR = 0XFF;
P2OUT = 0XFF;
// BCSCTL1 |= XTS;               //LFXT1工作于高速晶振模式
// BCSCTL1 |= DIVA_3;            //辅助时钟8分频,输出时钟频率为8分频
U0TCTL = SSEL0;                //时钟源选择辅助时钟
U0BR1 = 00;
U0BR0 = 0x03;
U0MCTL = 0x40;                //设置波特率9600
//我的板子上接的晶振比较奇葩:是8000khz的,以上的波特率设置经过验证,是没有问题的。
UCTL0 &= ~SWRST; // 初始化UART状态机
UCTL0 |= CHAR; // 数据格式为8位数据
ME1 |= UTXE0 + URXE0; // 使能USART0的发送TXD和接受RXD
IE1 |= URXIE0; // 使能USART0的接收中断,让串口接收到数据后能产生中断
P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口
P3DIR |= 0x10; // 串口发送数据端口为输出,接收数据端口为输入
_EINT(); // 整个系统使能中断(开总中断)
LPM1; // 进入LPM1模式
while(1);
}

//--------------------------------------------------------------------------------------------------------------
//中断服务函数
//--------------------------------------------------------------------------------------------------------------
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
while ((IFG1 & UTXIFG0) == 0);
//等待UTXIFG0=1,只有UTXIFG0=1才可以将接收缓存器的值写给发送缓存器
//即:当UTXIFG0=1时,才可以进行数据的发送,
TXBUF0= RXBUF0; // 将接收到的数据发送到串口
P2OUT =TXBUF0;
}

单片机是MSP430f149
页: [1]
查看完整版本: pc无法向单片机发送数据