📄 0r1t.c
字号:
#include<msp430x14x.h>
//收到串口0数据加上eaebec再通过串口1发出
unsigned char rx_flag0=0,rx_flag1=0;
unsigned int ecc=0;
unsigned char BUFF0[11]={0,0,0,0,0,0,0,0,0,0,0};
unsigned char BUFF1[11]={0,0,0,0,0,0,0,0,0,0,0};
void Init0(void);
void Init1(void);
void msp430_TX(void);
void msp430_TX(void)
{
P4DIR|=0x10;//发送模式,P4.4置1,为输出
P4DIR|=0x60;//P4.5,P4.6置1,为输出
P4OUT|=0x20;//工作模式,P4.5输出1
P4OUT|=0x40;//频率434
P4OUT|=0x10;
}
/*端口初始化*/
void Inti_Port(void)
{
//将所有的管脚在初始化的时候设置为输入方式
P3DIR=0;
//将所有的管脚设置为一般I/0口
P3SEL=0;
return;
}
void Init0(void)
{
UCTL0=CHAR;
UTCTL0=SSEL0;
UBR00=0x03;
UBR10=0x00;
UMCTL0=0x4A;
ME1|=URXE0;
IE1|=URXIE0;
P3SEL|=0x20;
P3DIR|=0x00;
//return;
}
void Init1(void)
{
UCTL1=CHAR;
UTCTL1=0x10;
UBR01=0x03;
UBR11=0x00;
UMCTL1=0x4A;
ME2|=UTXE1;
//IE2|=UTXIE1;
P3SEL|=0x40;
P3DIR|=0x40;
//return;
}
/*接收*/
interrupt [UART0RX_VECTOR] void UART0_RX_ISR(void)
{
BUFF0[rx_flag0]=RXBUF0;
rx_flag0++;
if(rx_flag0==11)
{
IE1&=~URXIE0;
}
}
void main(void)
{
unsigned int i,j=65535,k=0;
WDTCTL=WDTPW+WDTHOLD;//关看门狗
_DINT();
P1DIR|=BIT0;
Inti_Port();
Init0();
Init1();
msp430_TX();
IFG1&=0xBF;/*清除接收中断标志*/
_EINT();/*使能中断*/
while(1)
{
IE1|=URXIE0;
P1OUT=BIT0;
while(!(rx_flag0==11));
{
_DINT();
ecc=0xea;
//UTCTL1&=~TXWAKE;
TXBUF1=0xea;
while((UTCTL1&0x01)!=0x01);// 等待直到没有数据发送,执行下一步
IFG2&=0xDF;//清除发送中断标志位
TXBUF1=0xeb;
while((UTCTL1&0x01)!=0x01);// 等待直到没有数据发送,执行下一步
IFG2&=0xDF;//清除发送中断标志位
ecc=ecc^(0xeb);
TXBUF1=0xec;
while((UTCTL1&0x01)!=0x01);// 等待直到没有数据发送,执行下一步
IFG2&=0xDF;//清除发送中断标志位
ecc=ecc^(0xec);
for(i=0;i<11;i++)
{
TXBUF1=BUFF0[i];
while((UTCTL1&0x01)!=0x01);
ecc=ecc^BUFF0[i];
}
TXBUF1=ecc;
while((UTCTL1&0x01)!=0x01);// 等待直到没有数据发送,执行下一步
IFG2&=0xDF;//清除发送中断标志位
rx_flag0=0;
//IE1|=URXIE0;
_EINT();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -