您的当前位置:首页MSP430单片机串口通信实例(已验证)

MSP430单片机串口通信实例(已验证)

2022-02-23 来源:飒榕旅游知识分享网


/*main.c

*******************************************************************************

功能:串口通信

日期:2013.9.11

姓名:MRT

notice:无论接收发送 只要标志位(TI RI)置位 立马进入中断 一般情况即使中断

不允许的情况下 buffer中任然接收到数据并存储

*******************************************************************************

*

**/

#include\"msp430x14x.h\"

#include\"whole.h\"

#include\"main.h\"

struct power guss;

unsigned char buffer_value;

void main()

{

WDTCTL = WDTPW + WDTHOLD;

init_usart();

init_clk();

_EINT();

while(1)

{

}

}

#pragma vector = USART0RX_VECTOR

__interrupt void usart0_rx(void)

{

buffer_value++;

guss.buffer[0] = RXBUF0;

if(buffer_value==1)

{

guss.buffer[1] = RXBUF0;

guss.value = guss.buffer[1];

guss.value<<=4;

}

if(buffer_value==2)

{

guss.buffer[2] = RXBUF0;

buffer_value = 0;

}

}

/*******************************end*****************************************/

/**basic.c

*************************************************************************

功能:串口通信基础函数配置

日期:2013.9.11

姓名:MRT

notice:无论接收发送 只要标志位(TI RI)置位 立马进入中断 一般情况即使中断

不允许的情况下 buffer中任然接收到数据并存储

*

*

**/

#include\"msp430x14x.h\"

#include\"whole.h\"

#include\"main.h\"

void init_usart()

{

UTCTL0 |= SSEL1;//串口时钟源选择的是SMCLK

UBR00 = 0Xa0;

UBR10 = 0X01;

UMCTL0 = 0Xc0;//波特率19200

UCTL0 &= ~SWRST;

UCTL0 = CHAR;

ME1 |=UTXE0 + URXE0;//串口接收中断打开

IE1 |=URXIE0; //使能接收中断

}

void init_clk()

{

unsigned int iq0;

BCSCTL1&=~XT2OFF; //打开XT2振荡器

do

{

IFG1 &= ~OFIFG; // 清除振荡器失效标志

for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振

}

while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振

BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2/

}

void init_io()

{

P4SEL |= BIT1;// P4.1接内部模块

}

void init_pwm()

{

TBCCR0 = 400;

TBCCTL1 = OUTMOD_7; // CCR1 reset/set

TBCCR1 = 50; // CCR1 PWM duty cycle

TBCTL = TBSSEL_2 + MC_1; //

}

/*******************************end*****************************************/

因篇幅问题不能全部显示,请点此查看更多更全内容