?? 1r0t.c
字號(hào):
#include<msp430x14x.h>
//收到串口1數(shù)據(jù)把eaebec去掉再通過串口0發(fā)出去
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)
{
//將所有的管腳在初始化的時(shí)候設(shè)置為輸入方式
P3DIR=0;
//將所有的管腳設(shè)置為一般I/0口
P3SEL=0;
return;
}
//初始化串口0
void Init_UART0(void)
{//將寄存器的內(nèi)容清零
U0CTL=0x00;
//數(shù)據(jù)位為8bit
U0CTL+=CHAR;
//將寄存器的內(nèi)容清零
U0TCTL=0x00;
//波特率發(fā)生器選擇ACLK
U0TCTL+=0x10;//此處可以刪去默認(rèn)外部時(shí)鐘UCLK132768
// U1CTL&=0X0FE;
//波特率設(shè)置為4800
U0BR0=0x03;
U0BR1=0x00;
//調(diào)整寄存器
U0MCTL=0x4A;
//使能UART0的TXD和RXD
ME1|=UTXE0/*+URXE0*/;
//使能UART0的RX中斷
//IE1|=URXIE0;
//使能UART0的TX中斷
//IE1|=UTXIE0;
//設(shè)置P3.4為UART1的TXD
P3SEL|=0x10;
//P3.4為輸出管腳
P3DIR|=0x10;
return;
}
//初始化串口1
void Init_UART1(void)
{//將寄存器的內(nèi)容清零
U1CTL=0x00;
//數(shù)據(jù)位為8bit
U1CTL+=CHAR;
//將寄存器的內(nèi)容清零
U1TCTL=0x00;
//波特率發(fā)生器選擇ACLK
U1TCTL+=0x10;//此處可以刪去默認(rèn)外部時(shí)鐘UCLK132768
// U1CTL&=0X0FE;
//波特率設(shè)置為4800
U1BR0=0x03;
U1BR1=0x00;
//調(diào)整寄存器
U1MCTL=0x4A;
//使能UART1的TXD和RXD
ME2|=URXE1;
// ME2&=~UTXE1;
//使能UART1的RX中斷
IE2|=URXIE1;
//設(shè)置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;//關(guān)看門狗
P1DIR|=BIT0;
_DINT();
Inti_Port();
Init_UART0();
Init_UART1();
msp430_RX();
IFG2&=0xEF;/*清除接收中斷標(biāo)志*/
_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;//清除發(fā)送中斷標(biāo)志位
}
}
ME1&=~UTXE0;
}
_EINT();
}
}
while (j>1);
j=65535;
// IE2|=URXIE1;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -