tanzhiying 发表于 2015-5-20 10:18
这是我刚刚用msp430f122做的串口通信的程序,应该差不多的。你可以找相应的例程,注意你的时钟和波特率的计算,串口线接好就行了。
#include
void USART_Send(unsigned int pData);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
unsigned int i;
unsigned int sdata=0x34;//要发到电脑的数据
BCSCTL1 &= ~XT2OFF; //开高速晶振
BCSCTL1 |= XTS; // ACLK = LFXT1 = HF模式
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for(i = 0Xff;i > 0;i--); // 稳定时间
}
while((IFG1 & OFIFG) != 0); // 如果振荡器失效标志存在
BCSCTL2 |= SELM_2; //?MCLK主时钟选XT2为时钟源.XT2输入不分频.
BCSCTL2 |= SELS; //SMCLK选XT2为时钟源.(参考)
P3SEL |= 0x30; // P3.6,7 = USART1 TXD/RXD
ME2 |= UTXE0 + URXE0; // Enable USART1 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = SMCLK
U0BR0 = 0x41; // 8M/9600 -
U0BR1 = 0x03; //
UMCTL0 = 0x12; // Modulation
/*
U0BR0 = 0x15; // 8M/600 - 3.41
U0BR1 = 0x34; //
UMCTL0 = 0x12; // Modulation
*/
UCTL0 &= ~SWRST; // Initialize USART state machine
IE2 |= URXIE0; // Enable USART1 RX interrupt
_EINT(); // 不要忘了开中断
USART_Send(sdata);
}
//单片机给PC发数据
void USART_Send(unsigned int pData)
{
while ((IFG2 & UTXIFG0) == 0); // 判断:发送是否完成
TXBUF0 = pData; // 装入发送寄存器
}
//PC给单片机发数据
#pragma vector=USART0RX_VECTOR
__interrupt void usart1_rx (void)
{
while (!(IFG2 & UTXIFG0)); // USART1 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF1 to TXBUF1
}
多谢大侠 UART串口通信的 跟adc的例程段子我也找了不少 可是最后试验下来总是有问题