/*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*****************************************/
因篇幅问题不能全部显示,请点此查看更多更全内容