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

📄 interrupt.c

📁 基于TI公司的CC1020芯片的无线通讯程序,程序的MCU是TI公司的MSP430系列。
💻 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 + -