//我想用这个程序来通过PC机向单片机发送0使板子上的LED灯亮,板子上的LED灯是共阳的!
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
P2DIR = 0XFF;
P2OUT = 0XFF;
BCSCTL1 |= XTS; //LFXT1工作于高速晶振模式
BCSCTL1 |= DIVA_3; //辅助时钟8分频,输出时钟频率为8分频
U0TCTL = SSEL0; //时钟源选择辅助时钟
U0BR1 = 0;
U0BR0 = 0x68;
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;
} |