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

📄 cc1100_f310_t00.lst

📁 用c8051f310开发的433M无线模块cc1100的完整程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.08   CC1100_F310_T00                                                       06/13/2008 15:24:04 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE CC1100_F310_T00
OBJECT MODULE PLACED IN .\object\CC1100_F310_T00.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 源代码\CC1100_F310_T00.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE N
                    -OCOND PRINT(.\list\CC1100_F310_T00.lst) TABS(8) OBJECT(.\object\CC1100_F310_T00.obj)

line level    source

   1          /******************************************************************************
   2          文件名:        CC1100F310_main.c
   3          说  明:        本文件为“CC1100-F310”数传模块V1.0版的主函数。
   4                          模块工作与透明串口(半双工)。
   5                          无线速率=500kbps
   6                          UART的波特率=38400。
   7          作  者:        赵华森
   8          开  始:        2008.4.12
   9          修  改:        V1.0 初次开发实验调试。
  10          ******************************************************************************/
  11          
  12          #include "CC1100_func.h"        //访问CC1100的函数
  13          #include "CC1100_z.h"           //CC1100寄存器定义,一些常数定义。
  14          #include "CC1100_MCU_z.h"       //MCU操作CC1100的SPI口的硬件相关的函数。
  15          #include "CC1100_SMARTRF.h"     //SmartRF Stdio软件计算的CC1100寄存器配置值。
  16          #include "globe_val.h"          //全局变量定义。
  17          
  18          /******************************************************************************/
  19          
  20          #define FRX_idle        0
  21          #define FRX_ready       1
  22          #define FRX_wait        2
  23          #define FRX_end         3
  24          
  25          #define FTX_start       4
  26          #define FTX_wait        5
  27          
  28          #define URX_GAP         20      //帧间隔复位值(ms)
  29          /******************************************************************************/
  30          void Start_FRX( void );
  31          void switch_URX_buf( void );
  32          void switch_UTX_buf( void );
  33          
  34          /**************************************************************************************
  35                  主函数
  36          (1):CC1100平时处于RX模式(或WOR)。
  37          (2):串口(8N1,9600)收到数据后:启动TX模式,分包发送。
  38          (3):RX收到一包后:启动串口,送出收到数据。
  39          **************************************************************************************/
  40          void main()
  41          {
  42   1      //CC1100复位《CC1100_MCU_z.c》。
  43   1              CC1100_Reset();
  44   1      //芯片切换到IDEL状态《CC1100_func.c》。
  45   1              turn_IDLE();
  46   1      
  47   1      //配置CC1100寄存器《CC1100_SMARTRF.c》。
  48   1              CC1100_Config();
  49   1      //SLEEP或XOFF时不保留这些寄存器,故唤醒后必须恢复。《CC1100_func.c》
  50   1              Recover_TEST();
  51   1      //根据本应用补充变更配置CC1100《CC1100_func.c》
  52   1              CC1100_function();
  53   1      //工作单元清零,启动定时器T2运行,开中断等。
  54   1              SYS_Flag = 0;           //清零所有标志位。
C51 COMPILER V8.08   CC1100_F310_T00                                                       06/13/2008 15:24:04 PAGE 2   

  55   1              URX_time = 0;           //帧间隔复位值
  56   1              FRX_time = 0;
  57   1              URX_i = 0;
  58   1              FRX_len = 0;
  59   1              switch_URX_buf();
  60   1              switch_UTX_buf();
  61   1      
  62   1              Start_FRX();
  63   1      
  64   1              TMR2CN = 0x04;          //T2运行。
  65   1              EA = 1;                 //开中断。
  66   1      
  67   1              while ( 1 )
  68   1              {//《主循环·开始》
  69   2                      if ( S_1ms )
  70   2                      {//《1ms定时器到时·开始》
  71   3                              S_1ms = 0;
  72   3                              Deal_with_LED();        //《CC1100_MCU_z.C》
  73   3      
  74   3                              if ( URX_time && (!(--URX_time)) )
  75   3                              {//URX结束。
  76   4                                      S_FTX = 0;
  77   4                                      if ( URX_i )
  78   4                                      {//无线发射最后分组。
  79   5                                              FTX_len = URX_i;        //URX收到的字节数
  80   5                                              URX_i = 0;
  81   5                                              switch_URX_buf();
  82   5                                              RF_case = FTX_start;    //启动无线发射任务
  83   5                                      }
  84   4                              }
  85   3                              if ( FRX_time && (!(--FRX_time)) )
  86   3                                      {//FRX结束
  87   4                                              S_FRX = 0;
  88   4                                      }
  89   3                      }//《1ms定时到时·结束》
  90   2      
  91   2                      switch ( RF_case )      //GDO0=0x06,   GDO2=0x07。
  92   2                      {//《任务调度·开始》
  93   3                      //无线发射任务
  94   3                              case FTX_start:
  95   3                              {//无线发射1个分组。
  96   4                                      turn_IDLE();
  97   4                                      Write_URX_buf_33();     //发射1个分组+字节数。
  98   4                                      turn_FTX();
  99   4                                      RF_case = FTX_wait;
 100   4                                      break;
 101   4                              }
 102   3                              case FTX_wait:
 103   3                              {//等待发射完。
 104   4                                      if ( !CC1100_GDO0 )
 105   4                                      {//1个分组发完。
 106   5                                              clear_TXFIFO();
 107   5                                              Start_FRX();    //切换到FRX
 108   5                                      }
 109   4                                      break;
 110   4                              }
 111   3                      //无线接收任务
 112   3                              case FRX_idle:
 113   3                              {//FRX等待同步字
 114   4                                      if ( CC1100_GDO0  )
 115   4                                      {//FRX收到同步字
 116   5                                              RF_case =  FRX_wait;
C51 COMPILER V8.08   CC1100_F310_T00                                                       06/13/2008 15:24:04 PAGE 3   

 117   5                                      }
 118   4                                      break;
 119   4                              }
 120   3                              case FRX_wait:
 121   3                              {//等待FRX收完
 122   4                                      if ( !CC1100_GDO0 )
 123   4                                      {//FRX收完
 124   5                                              RF_case = FRX_end;
 125   5                                      }
 126   4                                      break;
 127   4                              }
 128   3                              case FRX_end:
 129   3                              {//收到1个分组
 130   4                                      if ( CC1100_GDO2 )
 131   4                                      {//收到1个分组
 132   5                                              if ( !S_FRX )
 133   5                                              {
 134   6                                                      S_FRX = 1;      //FRX灯亮。
 135   6                                                      switch_UTX_buf();
 136   6                                              }
 137   5                                              FRX_time = 10;
 138   5                                              read_UTX_buf_33();      //读取1个分组+字节数。
 139   5                                              //《永久频率偏差补偿》
 140   5                                              while ( S_TI0 );        //等待UTX完
 141   5                                              S_TI0 = 1;
 142   5                                              switch_UTX_buf();       //切换UTX缓冲区,启动UTX。
 143   5                                              TI0 = 1;                //启动UTX
 144   5                                      }
 145   4                                      clear_RXFIFO();         //清除溢出错误。
 146   4                                      Start_FRX();            //启动FRX。
 147   4                                      break;
 148   4                              }
 149   3                              default:break;
 150   3                      }//《任务调度·结束》
 151   2              }//《主循环·结束》
 152   1      }//main()
 153          
 154          /***************************************************************
 155          函数名:        void Start_FRX( void )
 156          功能说明:      启动无线接收。
 157          ***************************************************************/
 158          void Start_FRX( void )
 159          {
 160   1              turn_FRX();
 161   1              RF_case = FRX_idle;
 162   1      }
 163          
 164          /***************************************************************
 165          函数名:        void switch_URX_buf( void )
 166          功能说明:      切换URX缓冲区。
 167          ***************************************************************/
 168          void switch_URX_buf( void )
 169          {
 170   1              if ( !S_URX )
 171   1              {//URX:1号缓冲区,FTX:0号缓冲区
 172   2                      URX_ptr = &UART_buf_1;
 173   2                      FTX_ptr = &UART_buf_0;
 174   2              }
 175   1              else
 176   1              {//URX:0号缓冲区,FTX:1号缓冲区
 177   2                      URX_ptr = &UART_buf_0;
 178   2                      FTX_ptr = &UART_buf_1;
C51 COMPILER V8.08   CC1100_F310_T00                                                       06/13/2008 15:24:04 PAGE 4   

 179   2              }
 180   1              S_URX = !S_URX;
 181   1      }
 182          
 183          /***************************************************************
 184          函数名:        void switch_UTX_buf( void )
 185          功能说明:      切换URX缓冲区。
 186          ***************************************************************/
 187          void switch_UTX_buf( void )
 188          {
 189   1              UTX_i = FRX_len & 0x3F; //FRX收到的字节数
 190   1              if ( !S_UTX )
 191   1              {//UTX:1号缓冲区,FRX:0号缓冲区
 192   2                      UTX_ptr = &UART_buf_1;

⌨️ 快捷键说明

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