📄 1r0t.c
字号:
#include<msp430x14x.h>
//收到串口1数据把eaebec去掉再通过串口0发出去
unsigned char rx_flag0=0,rx_flag1=0;
unsigned int ecc=0;
unsigned char BUFF0[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char BUFF1[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
void Init0(void);
void Init1(void);
void msp430_RX(void);
void msp430_RX(void)
{
P4DIR|=0x10;//接收模式,P4.4清0,为输入
P4DIR|=0x60;//P4.5,P4.6置1,为输出
P4OUT|=0x20;//工作模式,P4.5输出1
P4OUT|=0x40;//频率434
P4OUT&=~0x10;
//P4OUT=0x00;
}
/*端口初始化*/
void Inti_Port(void)
{
//将所有的管脚在初始化的时候设置为输入方式
P3DIR=0;
//将所有的管脚设置为一般I/0口
P3SEL=0;
return;
}
//初始化串口0
void Init_UART0(void)
{//将寄存器的内容清零
U0CTL=0x00;
//数据位为8bit
U0CTL+=CHAR;
//将寄存器的内容清零
U0TCTL=0x00;
//波特率发生器选择ACLK
U0TCTL+=0x10;//此处可以删去默认外部时钟UCLK132768
// U1CTL&=0X0FE;
//波特率设置为4800
U0BR0=0x03;
U0BR1=0x00;
//调整寄存器
U0MCTL=0x4A;
//使能UART0的TXD和RXD
ME1|=UTXE0/*+URXE0*/;
//使能UART0的RX中断
//IE1|=URXIE0;
//使能UART0的TX中断
//IE1|=UTXIE0;
//设置P3.4为UART1的TXD
P3SEL|=0x10;
//P3.4为输出管脚
P3DIR|=0x10;
return;
}
//初始化串口1
void Init_UART1(void)
{//将寄存器的内容清零
U1CTL=0x00;
//数据位为8bit
U1CTL+=CHAR;
//将寄存器的内容清零
U1TCTL=0x00;
//波特率发生器选择ACLK
U1TCTL+=0x10;//此处可以删去默认外部时钟UCLK132768
// U1CTL&=0X0FE;
//波特率设置为4800
U1BR0=0x03;
U1BR1=0x00;
//调整寄存器
U1MCTL=0x4A;
//使能UART1的TXD和RXD
ME2|=URXE1;
// ME2&=~UTXE1;
//使能UART1的RX中断
IE2|=URXIE1;
//设置P3.7为UART1的RXD
P3SEL|=0x80;
//P3.6为输出管脚
P3DIR|=0x00;
return;
}
interrupt [UART1RX_VECTOR] void UART1_RX_ISR(void)
{
BUFF1[rx_flag1]=RXBUF1;
rx_flag1++;
if(rx_flag1==15)
{
IE2&=~URXIE1;
}
}
void main(void)
{
unsigned int i,j=65535,k=0;
WDTCTL=WDTPW+WDTHOLD;//关看门狗
P1DIR|=BIT0;
_DINT();
Inti_Port();
Init_UART0();
Init_UART1();
msp430_RX();
IFG2&=0xEF;/*清除接收中断标志*/
_EINT();/*使能中断*/
while(1)
{
IE2|=URXIE1;
P1OUT=BIT0;
do
{
j--;
if(rx_flag1)
{
while(!(rx_flag1==15));
rx_flag1=0;
_DINT();
j=0;
if((BUFF1[0]==0xea)&&(BUFF1[1]==0xeb)&&(BUFF1[2]==0xec))
{
for(k=0;k<14;k++)
{
ecc=ecc^BUFF1[k];
}
if(ecc==BUFF1[14])
{
ME1|=UTXE0;
UTCTL0&=~TXWAKE;
for(k=3;k<14;k++)
{
TXBUF0=BUFF1[k];
while((UTCTL0&0x01)!=0x01);
IFG1&=0xDF;//清除发送中断标志位
}
}
ME1&=~UTXE0;
}
_EINT();
}
}
while (j>1);
j=65535;
// IE2|=URXIE1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -