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

📄 main.lst

📁 8051f340实现cc1100软件SPI的正常数据收发
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  02/03/2009 10:53:16 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*************************************************
   2          ** 版权    :   杭州利尔达科技有限公司
   3          ** 文件名  :   1100/2500测试用
   4          ** 版本    :   v1.0
   5          ** 工作环境:   IAR4.11b
   6          ** 作者    :   panxiaojiang
   7          ** 生成日期:   2008.11
   8          ** 功能    :   基本通信功能测试
   9          ** 使用说明:   更改主程序中#if 后的值切换发送和接收,
  10                         当为“#if 0”为接收,否则为发送;
  11                         发送数据为变长数据包,发送60个字节,CRC校验+地址校验
  12                         接收方收到数据后显示发送的数据个数并切换亮灯状态
  13          ** 测试硬件:  LSD-TEST430FG461X-20XX-U V1.0b
  14          ** 修改日志:   2008.11
  15          **************************************************/
  16          #include "include.h"
  17          
  18          //变量声明
  19          char paTable[8] = {0x17,0x1c,0x26,0x57,0x60,0x85,0xc8,0xc0};//cc1100对应功率值-20,-15,-10,-5,0,5,7,1
             -0
  20          //char paTable[] = {0x97,0x6e,0x7f,0x97,0xa9,0xbb,0xfe,0xff,};//cc2500对应功率值-10,-8,-6,-4,-2,0,1
  21          char paTableLen = 4;                                         //对应功率值,默认4则为0dbm发送
  22          
  23          char txBuffer[60]={59,1,3,4,5,6,7,8,9,4,5,5,6,2};
  24          char rxBuffer[5];
  25          char delay=1;
  26          //char* LCD = LCDMEM;
  27          
  28          /*#define SEG_a       0x01
  29          #define SEG_b       0x02
  30          #define SEG_d       0x04
  31          #define SEG_g       0x08
  32          #define SEG_c       0x10
  33          #define SEG_f       0x20
  34          #define SEG_h       0x40
  35          #define SEG_e       0x80
  36          
  37          #define CHAR_ALL            (SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g|SEG_h)
  38          #define CHAR_SPACE          0
  39          #define CHAR_MINUS          (SEG_g)
  40          #define CHAR_0              (SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f)
  41          #define CHAR_1              (SEG_b|SEG_c)
  42          #define CHAR_2              (SEG_a|SEG_b|SEG_d|SEG_e|SEG_g)
  43          #define CHAR_3              (SEG_a|SEG_b|SEG_c|SEG_d|SEG_g)
  44          #define CHAR_4              (SEG_b|SEG_c|SEG_f|SEG_g)
  45          #define CHAR_5              (SEG_a|SEG_c|SEG_d|SEG_f|SEG_g)
  46          #define CHAR_6              (SEG_a|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g)
  47          #define CHAR_7              (SEG_a|SEG_b|SEG_c)
  48          #define CHAR_8              (SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g)
  49          #define CHAR_9              (SEG_a|SEG_b|SEG_c|SEG_d|SEG_f|SEG_g)
  50          #define CHAR_A              (SEG_a|SEG_b|SEG_c|SEG_e|SEG_f|SEG_g)
  51          #define CHAR_B              (SEG_c|SEG_d|SEG_e|SEG_f|SEG_g)
  52          #define CHAR_C              (SEG_a|SEG_d|SEG_e|SEG_f)
  53          #define CHAR_D              (SEG_b|SEG_c|SEG_d|SEG_e|SEG_g)
  54          #define CHAR_E              (SEG_a|SEG_d|SEG_e|SEG_f|SEG_g)
C51 COMPILER V7.06   MAIN                                                                  02/03/2009 10:53:16 PAGE 2   

  55          #define CHAR_F              (SEG_a|SEG_e|SEG_f|SEG_g)
  56          #define CHAR_t              (SEG_d|SEG_e|SEG_f|SEG_g)
  57          #define CHAR_L              (SEG_d|SEG_e|SEG_f)
  58          #define CHAR_X              (SEG_g)
  59          #define CHAR_SA             (SEG_d)
  60          #define CHAR_MA             (SEG_g|SEG_a)
  61          
  62          const char digit[15] =
  63          {
  64            CHAR_0,  // "0"  
  65            CHAR_1,  // "1"
  66            CHAR_2,  // "2"
  67            CHAR_3,  // "3"
  68            CHAR_4,  // "4"
  69            CHAR_5,  // "5"
  70            CHAR_6,  // "6"
  71            CHAR_7,  // "7"
  72            CHAR_8,  // "8"
  73            CHAR_9,  // "9"
  74            CHAR_X,  // "10"
  75            CHAR_D,  //"11"
  76            CHAR_L,  // "12"
  77            CHAR_SA,  //"13"
  78            CHAR_MA  //"14"
  79          };*/
  80          unsigned char send_num=0;
  81          unsigned char iii;
  82          //函数声明
  83          void  LCDinit(void);
  84          void  TimerSet(void);
  85          void  glit_light( unsigned int delay);
  86          void delay1(unsigned int i);
  87          void delay1(unsigned int i)
  88          {
  89   1        unsigned int j;
  90   1       for(j=0;j<i;j++)
  91   1       {
  92   2        _NOP();
*** WARNING C206 IN LINE 92 OF MAIN.C: '_NOP': missing function-prototype
  93   2       //_NOP();
  94   2       //_NOP();
  95   2       }
  96   1      
  97   1      
  98   1      }
  99          void  main (void)
 100          {
 101   1          WDTCTL = WDTPW + WDTHOLD;                         // Stop WDT
*** ERROR C202 IN LINE 101 OF MAIN.C: 'WDTCTL': undefined identifier
 102   1          DCOCTL  = CALDCO_1MHZ;
*** ERROR C202 IN LINE 102 OF MAIN.C: 'DCOCTL': undefined identifier
 103   1          BCSCTL1 = CALBC1_1MHZ;
*** ERROR C202 IN LINE 103 OF MAIN.C: 'BCSCTL1': undefined identifier
 104   1          P1OUT=0;
*** ERROR C202 IN LINE 104 OF MAIN.C: 'P1OUT': undefined identifier
 105   1          TI_CC_LED_PxDIR |=TI_CC_LED1;          //LED灯设置
 106   1          TI_CC_LED_PxOUT &=~(TI_CC_LED1);   
 107   1         // LCDinit();                                        //液晶初始化 
 108   1          TI_CC_SPISetup();                                 // spi设置初始化
 109   1          TI_CC_PowerupResetCCxxxx();                       // 复位RF 
 110   1          writeRFSettings();                                // 写RF配置信息
 111   1          
C51 COMPILER V7.06   MAIN                                                                  02/03/2009 10:53:16 PAGE 3   

 112   1          //SPI验证用于测试无线模块是否连接(工作)正常
 113   1         // txBuffer[63]= TI_CC_SPIReadReg(TI_CCxxx0_IOCFG2); //如果不等于0x06为错误
 114   1         // txBuffer[63]= TI_CC_SPIReadReg(TI_CCxxx0_IOCFG0); //如果不等于0x06为错误   
 115   1          txBuffer[3]= TI_CC_SPIReadReg(0x08);   //如果不等于0x00为错误
 116   1          //输出功率设置    
 117   1          TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, &paTable[paTableLen], 1);
 118   1                                                            //配置发送功率        
 119   1       delay1(50000);
 120   1        TI_CC_GDO0_PxIES |= 0X02;       // Int on falling edge (end of pkt)
*** ERROR C202 IN LINE 120 OF MAIN.C: 'TI_CC_GDO0_PxIES': undefined identifier
 121   1       // TI_CC_GDO0_PxIES &= ~TI_CC_GDO0_PIN;
 122   1        //address_bind=TI_CC_SPIReadReg(3);
 123   1        P1OUT=0x02;//输入上拉
*** ERROR C202 IN LINE 123 OF MAIN.C: 'P1OUT': undefined identifier
 124   1        TI_CC_GDO0_PxIFG &= ~0X02;      // Clear flag
*** ERROR C202 IN LINE 124 OF MAIN.C: 'TI_CC_GDO0_PxIFG': undefined identifier
 125   1        TI_CC_GDO0_PxIE |= 0X02;        // Enable int on end of packet
*** ERROR C202 IN LINE 125 OF MAIN.C: 'TI_CC_GDO0_PxIE': undefined identifier
 126   1        P1REN|=0X02;
*** ERROR C202 IN LINE 126 OF MAIN.C: 'P1REN': undefined identifier
 127   1         
 128   1          _EINT();
 129   1           _BIS_SR(GIE);
 130   1          txBuffer[1] = 0x01;
 131   1          while(1)
 132   1          {    
 133   2           //  WDTCTL=WDT_ARST_1000;
 134   2             TI_CC_LED_PxOUT ^=TI_CC_LED1;
 135   2             send_num++;                                   //发送数据个数累加
 136   2             TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);             //进入IDLE模式
 137   2             txBuffer[0] =6;                              // Packet length
 138   2             if(txBuffer[1] == 0x02)
 139   2             txBuffer[1] = 0x01;                           // Packet address
 140   2             else if(txBuffer[1] == 0x01)
 141   2             txBuffer[1] = 0x02;                           // Packet address
 142   2             txBuffer[3] = send_num;                       //写入当前发送数据个数
 143   2             RFSendPacket(txBuffer, 7);                   // 发送数据
 144   2                    
 145   2             TimerSet();                                   //设置TimerA定时器--定时大约一秒
 146   2             TI_CC_SPIStrobe(TI_CCxxx0_SPWD);             //进入IDLE模式
 147   2         //    WDTCTL=WDT_ARST_1000;
 148   2            // TI_CC_LED_PxOUT ^=TI_CC_LED1;
 149   2             LPM3;  
 150   2             
 151   2          }    
 152   1      
 153   1      }
 154          
 155          void TimerSet(void)
 156          {
 157   1          TACTL  =TASSEL_1+TACLR;
 158   1          TACCR0 =10000;
 159   1          TACCTL0 =CCIE;
 160   1          TACTL |= MC_1;
 161   1      }
 162          
 163          /*void LCDinit(void)
 164          {
 165            volatile unsigned int i;   
 166            BTCTL = BT_fCLK2_DIV128 | BT_fCLK2_ACLK_DIV256;
 167                                                              // 设置基本定时器 
 168            for (i = 0;  i < 20;  i++)
C51 COMPILER V7.06   MAIN                                                                  02/03/2009 10:53:16 PAGE 4   

 169                LCDMEM[i] = 0;
 170            P5SEL |= (BIT4 | BIT3 | BIT2);
 171            P5DIR |= (BIT4 | BIT3 | BIT2);
 172            LCDACTL = LCDFREQ_128 | LCD4MUX | LCDSON | LCDON;
 173            LCDAPCTL0 = LCDS0 | LCDS4 | LCDS8 | LCDS12 | LCDS16 | LCDS20 | LCDS24;
 174            LCDAPCTL1 = 0;
 175            LCDAVCTL0 = LCDCPEN;
 176            LCDAVCTL1 = 1 << 1;
 177          }*/
 178          
 179          #pragma vector=TIMERA0_VECTOR
 180          __interrupt void TimerA(void)
 181          {
 182             LPM3_EXIT;
 183             //iii++;
 184          }
 185          
 186          #pragma vector=PORT1_VECTOR
 187          __interrupt void port1_ISR (void)
 188          {
 189           /* char len=64;                                     //读取最多数据个数
 190            if (RFReceivePacket(rxBuffer,&len))              // 读数据并判断正确与否
 191            {
 192                 if((rxBuffer[1]==3)&&(rxBuffer[58]==6))     //校验接收到数据
 193                 {
 194                     TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);  
 195                     TI_CC_LED_PxOUT ^=TI_CC_LED1;           //闪烁灯表示数据接收正常
 196                       
 197                 }
 198            }
 199            TI_CC_SPIStrobe(TI_CCxxx0_SFRX);                 //清接收缓存
 200            TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);                //进空闲模式
 201            TI_CC_Wait(800);                                 //延时
 202            TI_CC_SPIStrobe(TI_CCxxx0_SRX);                  //进入接收状态
 203            TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;             // 清中断标示*/
 204            LPM3_EXIT;
 205                if(P1IFG&0X02)             // If int comes from rx'ed packet
 206            {
 207          
 208             delay1(5000);
 209             
 210            if((P1IN&0X02)==0)
 211            {
 212                TI_CC_LED_PxOUT ^=TI_CC_LED1;
 213                 send_num++;                                   //发送数据个数累加
 214                 TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);             //进入IDLE模式
 215                 txBuffer[0] =6;                              // Packet length
 216                 if(txBuffer[1] == 0x02)
 217                 txBuffer[1] = 0x01;                           // Packet address
 218                 else if(txBuffer[1] == 0x01)
 219                 txBuffer[1] = 0x02;                           // Packet address
 220                 txBuffer[3] = send_num;                       //写入当前发送数据个数
 221                 RFSendPacket(txBuffer, 7);                   // 发送数据
 222                        
 223               //  TimerSet();                                   //设置TimerA定时器--定时大约一秒
 224                 TI_CC_SPIStrobe(TI_CCxxx0_SPWD);             //进入IDLE模式
 225              }
 226            }
 227          
 228            P1IFG &= ~0X02;     // Clr flags set by switch and GDO0
 229          }

C51 COMPILATION COMPLETE.  1 WARNING(S),  9 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -