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

📄 cc1100_tx.lst

📁 用51单片机控制cc1100发送接收模块的参考程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   CC1100_TX                                                             11/26/2006 22:02:36 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CC1100_TX
OBJECT MODULE PLACED IN CC1100_TX.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE CC1100_TX.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include "CC1100.h"
   4          
   5          
   6          #define         INT8U                           unsigned char
   7          #define         INT16U                          unsigned int
   8          
   9          #define         time0h                  (65535-1000)/256
  10          #define         time0l                  (65535-1000)%256                        //定时1MS
  11          #define         WRITE_BURST             0x40                                            //连续写入
  12          #define         READ_SINGLE             0x80                                            //读
  13          #define         READ_BURST              0xC0                                            //连续读
  14          #define         BYTES_IN_RXFIFO     0x7F                                                //接收缓冲区的有效字节数
  15          #define         CRC_OK              0x80                                                //CRC校验通过位标志
  16          
  17          
  18          
  19          #define         INT8U           unsigned char 
  20          #define         INT16U          unsigned int
  21          
  22          #define         FOSC            11059200        
  23          #define         BAUD            9600
  24          #define         TIMER1          0XFD    //256-(110592/(12*32*96))
  25          #define         TIMER0H         (65535-3*FOSC/12/1000)/256
  26          #define         TIMER0L         (65535-3*FOSC/12/1000)%256                      //定时3MSVR
  27          
  28          //--------------------------------------------------------------------------------------------------------
             ---
  29          //内部寄存器定义
  30          //--------------------------------------------------------------------------------------------------------
             ---
  31          sfr             P4                      =       0xc0;   
  32          sfr     ADC_CONTR       =       0xC5;
  33          sfr     AUXR            =       0x8E;
  34          sfr     ADC_DATA        =       0xC6;
  35          sfr     P1_ADC_EN       =       0x97;
  36          
  37          sbit    DAT1    =       P3^5;
  38          sbit    DAT2    =       P3^4;
  39          sbit    DAT3    =       P3^3;
  40          sbit    DAT4    =       P3^2;
  41          sbit    DAT5    =       P4^3;
  42          sbit    DAT6    =       P1^7;
  43          sbit    DAT7    =       P1^6;
  44          sbit    DAT8    =       P1^5;
  45          sbit    DAT9    =       P1^4;
  46          sbit    DAT10   =       P4^2;  
  47          
  48          //定义CC1100模块接口
  49          #define GDO1    DAT1
  50          #define GDO2    DAT2
  51          #define CSN             DAT4
  52          #define MOSI    DAT5
  53          #define MISO    DAT6
C51 COMPILER V7.50   CC1100_TX                                                             11/26/2006 22:02:36 PAGE 2   

  54          #define SCK             DAT7
  55          
  56          sbit    LED1    =       P4^1;
  57          sbit    LED2    =       P4^0;
  58          
  59          /****************************************************************************************
  60          //全局变量定义
  61          /****************************************************************************************/
  62          INT16U TimeOutCount[2]={0,0};                                                   //超时计数器
  63          INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};
  64          
  65          
  66          //*****************************************************************************************
  67          //函数名:delay(unsigned int s)
  68          //输入:时间
  69          //输出:无
  70          //功能描述:普通廷时
  71          //*****************************************************************************************             
  72          delay(unsigned int s)
  73          {
  74   1              unsigned int i;
  75   1              for(i=0; i<s; i++);
  76   1              for(i=0; i<s; i++);
  77   1      }
  78          
  79          
  80          void halWait(INT16U timeout) {
  81   1          do {
  82   2              _nop_();
  83   2                      _nop_();
  84   2                      _nop_();
  85   2                      _nop_();
  86   2                      _nop_();
  87   2                      _nop_();
  88   2                      _nop_();
  89   2                      _nop_();
  90   2                      _nop_();
  91   2                      _nop_();
  92   2                      _nop_();
  93   2                      _nop_();
  94   2                      _nop_();
  95   2                      _nop_();
  96   2                      _nop_(); 
  97   2          } while (--timeout);
  98   1      }
  99          
 100          /*****************************************************************************************
 101          //函数名:UartInit()
 102          //输入:无
 103          //输出:无
 104          //功能描述:串口初始化程序
 105          /*****************************************************************************************/
 106          void UartInit(void)
 107          {
 108   1              SCON = 0x50;            //串口方式1,允许接收
 109   1              TMOD = 0x21;            //定时器1工作方式2,定时器0工作方式1
 110   1              TH1 = TIMER1;   
 111   1              TL1 = TIMER1;   
 112   1              TR1 = 1;                //启动定时器1
 113   1      }
 114          
 115          
C51 COMPILER V7.50   CC1100_TX                                                             11/26/2006 22:02:36 PAGE 3   

 116          /*****************************************************************************************
 117          //函数名:void TimerInit(void)
 118          //输入:无
 119          //输出:无
 120          //功能描述:定时器0初始化程序
 121          /*****************************************************************************************/
 122          void TimerInit(void)
 123          {
 124   1              TH0 = TIMER0H;
 125   1              TL0 = TIMER0L;
 126   1              ET0 = 1;                        //定时器0中断允许
 127   1              TF0 = 0;
 128   1              TR0 = 1;                        //启动定时器0
 129   1              EA = 1;                         //开全局中断
 130   1      }
 131          
 132          void SpiInit(void)
 133          {
 134   1              CSN=0;
 135   1              SCK=0;
 136   1              CSN=1;
 137   1      }
 138          
 139          /*****************************************************************************************
 140          //函数名:CpuInit()
 141          //输入:无
 142          //输出:无
 143          //功能描述:SPI初始化程序
 144          /*****************************************************************************************/
 145          CpuInit(void)
 146          {
 147   1                      UartInit();
 148   1      //              TimerInit();
 149   1                      SpiInit();
 150   1                      delay(5000);
 151   1      }
 152                  
 153          /*
 154          //*****************************************************************************************
 155          //函数名:ResetTimer(INT8U n)
 156          //输入:要复位的计时器
 157          //输出:无
 158          //功能描述:复位计时器
 159          //*****************************************************************************************
 160          void ResetTimer(INT8U n)
 161          {
 162                  ET0 = 0;                                    // Disable Timer0 interrupt
 163                  timer[n & 0x01] = 0;                        // Clear timer[n]
 164                  ET0 = 1;                                    // Enable Timer0 interrupt
 165          }
 166          
 167          
 168          //*****************************************************************************************
 169          //函数名:INT16U ReadTimer(INT8U n)
 170          //输入:要读的计时器
 171          //输出:读出值
 172          //功能描述:读计时器
 173          //*****************************************************************************************
 174          INT16U ReadTimer(INT8U n)
 175          {
 176                  INT16U tmp;
 177                  ET0 = 0;                                    // Disable Timer0 interrupt
C51 COMPILER V7.50   CC1100_TX                                                             11/26/2006 22:02:36 PAGE 4   

 178                  tmp = timer[n];                             // Clear timer[n]
 179                  ET0 = 1;                                    // Enable Timer0 interrupt
 180                  return tmp;
 181          }
 182          */
 183          /*****************************************************************************************
 184          //函数名:SendCh(ch)
 185          //输入:无
 186          //输出:无
 187          //功能描述:串口发送一个字符
 188          /*****************************************************************************************/
 189          void SendCh(INT8U ch)
 190          {
 191   1              SBUF = ch;
 192   1              while(!TI);
 193   1              TI = 0;
 194   1      }
 195          
 196          
 197          /*****************************************************************************************
 198          //函数名:void SendStr(INT8U *arr)
 199          //输入:发送的字符串
 200          //输出:无
 201          //功能描述:发送一个字符串
 202          /*****************************************************************************************/
 203          void SendStr(INT8U *arr)
 204          {
 205   1              INT8U i;
 206   1              
 207   1              i = 0;
 208   1              while(arr[i] != '\0')
 209   1              {
 210   2                      SendCh(arr[i]);
 211   2                      i++;
 212   2              }
 213   1      }
 214          
 215          //*****************************************************************************************
 216          //函数名:SpisendByte(INT8U dat)
 217          //输入:发送的数据
 218          //输出:无
 219          //功能描述:SPI发送一个字节
 220          //*****************************************************************************************
 221          INT8U SpiTxRxByte(INT8U dat)
 222          {
 223   1              INT8U i,temp;
 224   1              temp = 0;
 225   1              
 226   1              SCK = 0;
 227   1              for(i=0; i<8; i++)
 228   1              {
 229   2                      if(dat & 0x80)
 230   2                      {
 231   3                              MOSI = 1;
 232   3                      }
 233   2                      else MOSI = 0;
 234   2                      dat <<= 1;
 235   2      
 236   2                      SCK = 1; 
 237   2                      _nop_();
 238   2                      _nop_();
 239   2      
C51 COMPILER V7.50   CC1100_TX                                                             11/26/2006 22:02:36 PAGE 5   

 240   2                      temp <<= 1;
 241   2                      if(MISO)temp++; 
 242   2                      SCK = 0;
 243   2                      _nop_();
 244   2                      _nop_();        
 245   2              }
 246   1              return temp;
 247   1      }
 248          
 249          //*****************************************************************************************
 250          //函数名:void RESET_CC1100(void)
 251          //输入:无
 252          //输出:无
 253          //功能描述:复位CC1100
 254          //*****************************************************************************************
 255          void RESET_CC1100(void) 
 256          {
 257   1              CSN = 0; 
 258   1              while (GDO1); 
 259   1              SpiTxRxByte(CCxxx0_SRES);               //写入复位命令
 260   1              while (GDO1); 
 261   1              CSN = 1; 
 262   1      }
 263          
 264          //*****************************************************************************************
 265          //函数名:void POWER_UP_RESET_CC1100(void) 
 266          //输入:无
 267          //输出:无
 268          //功能描述:上电复位CC1100
 269          //*****************************************************************************************
 270          void POWER_UP_RESET_CC1100(void) 
 271          {
 272   1              CSN = 1; 
 273   1              halWait(1); 
 274   1              CSN = 0; 
 275   1              halWait(1); 
 276   1              CSN = 1; 
 277   1              halWait(41); 
 278   1              RESET_CC1100();                 //复位CC1100
 279   1      }
 280          
 281          //*****************************************************************************************
 282          //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
 283          //输入:地址和配置字

⌨️ 快捷键说明

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