📄 interrupt.c
字号:
#include "global.h"
#include "cc1020.h"
#include "msp430x14x.h"
#pragma vector=UART0TX_VECTOR
__interrupt void USART0_TX(void)
{
SPI_TX_OK = 0xFF;
}
#pragma vector=UART0RX_VECTOR
__interrupt void USART0_RX(void)
{
SPI_RX_OK = 0xFF;
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT2(void)
{
P2IFG &= ~BIT2;
P6OUT |= BIT0;
if(RF_OK)
{
////RF_DIR==1, tx 发
if(RF_DIR)
{
if(BUFF_FULL)
{
//before ,have buff-full=1,and value of p-len.
if(BYTE_CNT < PACKAGE_LEN)
{
if(BIT_CNT == 0)
{
BUFFER = TX_BUF[BYTE_CNT];
BIT_CNT++;
}
else if(BIT_CNT > 6)
{
BUFFER = BUFFER << 1;
BIT_CNT = 0;
BYTE_CNT++;
}
else
{
BUFFER = BUFFER << 1;
BIT_CNT++;
}
if(BUFFER & BIT7)
{
P2OUT |= BIT3;
}
else
{
P2OUT &= ~BIT3;
}
}
else
{
BUFF_FULL = 0;
BYTE_CNT = 0;
}
}
}
else
{
////RF_DIR==0,rx
if(BUFF_FULL == 0)
{
BIT_CNT++;
BUFFER = BUFFER << 1;
if(P2IN&BIT3)
{
BUFFER = BUFFER | 0x1;
}
//have d391
if(BYTE_CNT == 0)
{
if(BUFFER == 0xD391)
{
BYTE_CNT++;
BIT_CNT = 0;
}
}
//have byte of length
else if((BYTE_CNT == 1)&&(BIT_CNT == 8))
{
switch(BUFFER&0xFF)
{
case BYTE2 : PACKAGE_LEN = 2+1;
BYTE_CNT++;
BIT_CNT = 0;
break;
case BYTE8 : PACKAGE_LEN = 8+1;
BYTE_CNT++;
BIT_CNT = 0;
break;
case BYTE16 : PACKAGE_LEN = 16+1;
BYTE_CNT++;
BIT_CNT = 0;
break;
case BYTE32 : PACKAGE_LEN = 32+1;
BYTE_CNT++;
BIT_CNT = 0;
break;
default : BYTE_CNT = 0;
break;
}
}
//if is the last byte?
else if((BYTE_CNT == PACKAGE_LEN)&&(BIT_CNT == 8))
{
RX_BUF[BYTE_CNT - 2] = BUFFER;
BYTE_CNT = 0;
BIT_CNT = 0;
BUFF_FULL = 1;
}
// during the 0~8,0~32.....
else if((BYTE_CNT > 1)&&(BIT_CNT == 8))
{
RX_BUF[BYTE_CNT - 2] = BUFFER;
BYTE_CNT++;
BIT_CNT = 0;
}
}
}
}
P6OUT &= ~BIT0;
}
#pragma vector=TIMERA1_VECTOR
__interrupt void TIMERA1(void)
{
TACTL &= ~TAIFG;
TIME_FLAG = 1;
P6OUT &= ~BIT1; //shut p6.1
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -