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

📄 card.lst

📁 9E5收发程序
💻 LST
字号:
C51 COMPILER V8.02   CARD                                                                  07/30/2007 17:26:50 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CARD
OBJECT MODULE PLACED IN card.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE card.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg24e1.h>
   2          #define sn1  0x27                   // card ID 
   3          #define sn2  0x12
   4          
   5          sbit LED        = P0^6;            //LED: P0.6
   6          #define ADDR_INDEX  10   // Index to address bytes in RFConfig.buf 
   7          #define ADDR_COUNT  2   // Number of address bytes
   8          /******************************************************************
   9          Fun : RTC interrupt service routine        //RTC中断唤醒掉电模式
  10          ******************************************************************/
  11          
  12          void RTCISR (void) interrupt 12
  13          {
  14   1              WDTI = 0;      //clear WDTI 
  15   1      } 
  16          //定义结构体来装入RF寄存器配置
  17          struct RFConfig
  18          {
  19              unsigned char n;
  20              unsigned char buf[15];
  21          };
  22          
  23          typedef struct RFConfig RFConfig;
  24          
  25          //配置字
  26          const RFConfig tconf =
  27          {
  28              15,
  29              0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  30              0x00, 0x00, 0x72, 0xaa, 0x43, 0x6f, 0x04
  31          };
  32          
  33          
  34          //延时时间=n*100us
  35          void Delay100us( unsigned char n)
  36          {
  37   1          unsigned char i;
  38   1          while(n--)
  39   1              for(i=0;i<35;i++)
  40   1                  ;
  41   1      }
  42          /****************************************************************
  43          Fun: SPI_DATA R/W                            //SPI数据读写()
  44          ****************************************************************/
  45          unsigned char SpiReadWrite(unsigned char b)
  46          {
  47   1          EXIF &= ~0x20;                  // Clear SPI interrupt
  48   1          SPI_DATA = b;                   // Move byte to send to SPI data register
  49   1          while((EXIF & 0x20) == 0x00) ;   // Wait until SPI hs finished transmitting
  50   1              
  51   1          return SPI_DATA;
  52   1      }
  53          
  54          //发送数据
  55              void TransmitPacket ( unsigned char b1,unsigned char b2 )
C51 COMPILER V8.02   CARD                                                                  07/30/2007 17:26:50 PAGE 2   

  56          {
  57   1          unsigned char i;
  58   1              PWR_UP = 1;                     // 打开Radio
  59   1          Delay100us(30);                                 //等3ms
  60   1          CE = 1;
  61   1          Delay100us(0);
  62   1          for(i=0;i<ADDR_COUNT;i++)
  63   1               SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
  64   1          SpiReadWrite(b1);
  65   1              SpiReadWrite(b2);
  66   1          CE = 0;
  67   1              Delay100us(3);                              //等300us
  68   1      }
  69          //初始化
  70          void Init( void )
  71          
  72          {
  73   1          unsigned char b;
  74   1      
  75   1          PSW = 0x20;                     //用工作寄存器R0 
  76   1      
  77   1          P0_ALT = 0x00;                                  //不用P0口的第二功能
  78   1          P0_DIR = 0x00;                                      //P0为输出
  79   1      
  80   1                  
  81   1          LED = 0;                       // Led on    led :p0.6
  82   1          Delay100us(50);
  83   1          LED = 1;                       //Led off
  84   1      
  85   1              EA = 1;                                                 //中断允许
  86   1      
  87   1      
  88   1          SPICLK = 0;                     // Max SPI clock,为1/2CPU速度               .
  89   1          SPI_CTRL = 0x02;                // 将SPI口接到905
  90   1              //配置FR
  91   1              PWR_UP = 1;                     // 打开Radio
  92   1          Delay100us(30);                                 //等3ms
  93   1      
  94   1          CS = 1;
  95   1          Delay100us(0);
  96   1          for(b=0;b<tconf.n;b++)                      
  97   1          {
  98   2              SpiReadWrite(tconf.buf[b]);
  99   2          }
 100   1          CS = 0;
 101   1              // 设置、启动RTC
 102   1              //REGX_CTRL为看门狗的控制
 103   1              //4空闲标志,0:空,1:忙  (只读)
 104   1              //3读/写,   0:读,1:写
 105   1              //2-0间接寻址
 106   1                while( REGX_CTRL & 0x10 );            //Wait until REGX_CRTL.4 == 0 (i.e. not busy)
 107   1      
 108   1          REGX_MSB = 0x07;                //2s
 109   1          REGX_LSB = 0xd0;
 110   1          
 111   1          REGX_CTRL = 0x0A;                           //1010    写RTC寄存器
 112   1              
 113   1      
 114   1          EWDI = 1;                       //  Enable RTC interrupt
 115   1          
 116   1        
 117   1      }
C51 COMPILER V8.02   CARD                                                                  07/30/2007 17:26:50 PAGE 3   

 118          
 119          
 120          
 121          /***************************************************************
 122          
 123          Fun:  send card ID
 124          ***************************************************************/
 125          
 126          void main ( void )
 127          {
 128   1      
 129   1      
 130   1          Init();                        //initialize nrf24e1
 131   1          
 132   1          while ( 1 )                    // main loop
 133   1          {
 134   2                      
 135   2              TransmitPacket(sn1,sn2);
 136   2                  
 137   2              while ( DR1 == 0 );           //transmit data is over
 138   2           
 139   2              PWR_UP = 0;                  //关闭FR
 140   2      
 141   2              Delay100us(16);              
 142   2              LED = 0;                       // Led on    led :p0.6
 143   2              Delay100us(5);
 144   2              LED = 1;                       //Led off
 145   2      
 146   2                  CK_CTRL = 0x04;                                     //Deep power down 
 147   2      
 148   2              
 149   2          }
 150   1      
 151   1      }
 152          
 153          
 154          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    196    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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