⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comunicate.c

📁 5个430系列微控制器源代码
💻 C
字号:
#include "msp430x12x.h"

#define uchar unsigned char
uchar txbuf,i=0,flag=0;
uchar sum=0;
uchar databuf[3],buffer[20];

void init_uart();
void delay(unsigned int);
void communicate();

void main(void)
{
_DINT();
WDTCTL=WDTPW+WDTHOLD;
IE1&=~OFIE;                      //禁止振荡器失效中断
BCSCTL1|=XTS;                  //选择LFTX1振荡器 
BCSCTL2|=SELM1+SELM0;          //用LFTX1CLK作为MCLK的时钟源
do{
IFG1&=~OFIFG;
delay(255);                    //等待晶振转换完成
}
while((IFG1&OFIFG)!=0);
IFG1&=~OFIFG;

init_uart();
_EINT();

while(1)
{if(flag==1)
//communicate();
{P2OUT^=BIT0;flag=0;}
else _NOP();
}
}


void init_uart()
{
UCTL0&=~SWRST;             //SWRST复位,USART允许
UCTL0|=CHAR;                //8 位数据位,1位停止位,无校验
UBR00=0XC0;
UBR10=0X00;                //使用 波特率为19200 BPS
UMCTL0=0X00;               //位调整
UTCTL0|=SSEL0;
ME2|=UTXE0+URXE0;                 //发送及接收模块允许
P3SEL=0X30;
P3DIR=0X10;
IE2|=URXIE0;               //接收中断允许 
P1DIR=0X00;
P2DIR=0X01;
P2OUT&=~BIT0;

//P3OUT=0XFF;
}

void delay(unsigned int v)   //延时程序
{while(v!=0)v--;
}

#pragma vector=UART0RX_VECTOR
__interrupt void uart0rx(void)
{
if(flag==0)
{
buffer[i]=RXBUF0;


while((IFG2&UTXIFG0)==0);
TXBUF0=RXBUF0;
if(buffer[0]==0x7e)
{
 i++;}
else i=0;

if(i==5)
{
if(buffer[4]==0x7e){flag=1;i=0;}

else
{flag=0;i=0;sum=0;}
}
else {flag=0;}
}

}

void communicate()
{
uchar j,bytes;
_DINT();
P3DIR=0XDF;
P1DIR=BIT4;
P3OUT&=~BIT2;        // intterupt
delay(10);
P3OUT|=BIT2;

for(bytes=0;bytes<3;bytes++)
{txbuf=buffer[bytes+1];
for(j=0;j<8;j++)
{//P1OUT&=~BIT4;        //clk=0
delay(10);
//P3OUT&=~BIT6;

if(txbuf&0x80)
{
P3OUT|=BIT6;         //dat=1
}
else{ P3OUT&=~BIT6;}  //dat=0
P1OUT&=~BIT4;        //clk=0
delay(10);
P1OUT|=BIT4;          //clk=1

txbuf=txbuf<<1;
}
}
flag=0;
//P3OUT|=BIT6;
P3DIR=0X10;
P1DIR=0X00;
_EINT();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -