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

📄 main.lst

📁 RFID模块发射接收的C源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.00   MAIN                                                                  08/21/2012 17:44:01 PAGE 1   


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

line level    source

   1          /*********************************************************************
   2          功能:
   3                  RFID TARGET发射程序
   4          说明:
   5                  本程序采用定时2秒发射ID一次,发射完毕进入低功耗模式,低功耗电流3uA
   6                  ID长度为6 byte
   7          **********************************************************************/
   8          
   9          
  10          #include <Nordic\reg24le1.h>
  11          #include <stdint.h>
  12          #include "API.h"
  13          
  14          //#define       PIN24
  15          #define PIN32
  16          //#define       PIN48
  17          
  18          #ifdef  PIN24
              sbit S3  = P0^6;                                // 1/0=未按/按下
              sbit S2  = P0^4;                                // 1/0=未按/按下
              sbit S1  = P0^3;                                // 1/0=未按/按下
              
              sbit LED3 = P0^2;                                       // 1/0=灭/亮
              sbit LED2 = P0^1;                               // 1/0=灭/亮
              sbit LED1 = P0^0;                               // 1/0=灭/亮
              
              #define p0dir   0xd8
              #define p1dir   0xff
              #endif
  30          
  31          #ifdef  PIN32
  32          sbit S3  = P1^4;                                // 1/0=未按/按下
  33          sbit S2  = P1^3;                                // 1/0=未按/按下
  34          sbit S1  = P1^2;                                // 1/0=未按/按下
  35          
  36          sbit LED3 = P0^2;                               // 1/0=灭/亮
  37          sbit LED2 = P0^1;                               // 1/0=灭/亮
  38          sbit LED1 = P0^0;                               // 1/0=灭/亮
  39          
  40          #define p0dir   0xf0
  41          #define p1dir   0xff
  42          #endif
  43          
  44          #ifdef  PIN48
              sbit S3  = P0^7;                                // 1/0=未按/按下
              sbit S2  = P0^6;                                // 1/0=未按/按下
              sbit S1  = P0^5;                                // 1/0=未按/按下
              
              sbit LED3 = P0^2;                               // 1/0=灭/亮
              sbit LED2 = P0^1;                               // 1/0=灭/亮
              sbit LED1 = P0^0;                               // 1/0=灭/亮
              
              #define p0dir   0xf0
              #define p1dir   0x02
              #endif
C51 COMPILER V9.00   MAIN                                                                  08/21/2012 17:44:01 PAGE 2   

  56          
  57          #define INTERRUPT_RFIRQ 9
  58          #define INTERRUPT_TICK  13  
  59          
  60          #define TX_ADR_WIDTH    6                                       // RF收发地址共5 bytes 
  61          #define TX_PLOAD_WIDTH  20                                      // 数据包长度为20 bytes
  62          
  63          uint8_t const TX_ADDRESS[TX_ADR_WIDTH]  = {0x34,0x56,0x78,0x90,0x12,0x26}; // 定义RF收发地址
  64          
  65          uint8_t data id_buf[TX_PLOAD_WIDTH]={ 1,2, 3, 4, 5, 6,7};    //typedef unsigned int uint8_t     
  66          
  67          uint8_t data rx_buf[TX_PLOAD_WIDTH];  
  68          
  69          uint8_t bdata sta;
  70          sbit    RX_DR   =sta^6;  //读取接收数据指令
  71          sbit    TX_DS   =sta^5;   // 写待发数据指令
  72          sbit    MAX_RT  =sta^4;
  73          
  74          /**************************************************
  75          功能:延时
  76          **************************************************/
  77          void delay(uint16_t x)
  78          {
  79   1          uint16_t i,j;
  80   1          i=0;
  81   1          for(i=0;i<x;i++)
  82   1          {
  83   2             j=108;
  84   2             while(j--);
  85   2          }
  86   1      }
  87          /**************************************************
  88          功能:硬件SPI读写
  89          **************************************************/
  90          uint8_t SPI_RW(uint8_t value)
  91          {
  92   1        SPIRDAT = value;
  93   1                                                                                                     
  94   1        while(!(SPIRSTAT & 0x02));                                    // 等待SPI传输完成
  95   1      
  96   1        return SPIRDAT;                                               // 返回读出值
  97   1      }
  98          /**************************************************
  99          功能:写RF寄存器,读RF状态值
 100          **************************************************/
 101          uint8_t SPI_RW_Reg(uint8_t reg, uint8_t value)
 102          {
 103   1              uint8_t status;
 104   1      
 105   1              RFCSN = 0;                      
 106   1              status = SPI_RW(reg);                                           // 选择RF寄存器
 107   1              SPI_RW(value);                                                  // 写入数据
 108   1              RFCSN = 1;                      
 109   1      
 110   1              return(status);                                                 // 返回RF状态值
 111   1      }
 112          /**************************************************
 113          功能:读RF寄存器
 114          **************************************************/
 115          uint8_t SPI_Read(uint8_t reg)
 116          {
 117   1              uint8_t reg_val;
C51 COMPILER V9.00   MAIN                                                                  08/21/2012 17:44:01 PAGE 3   

 118   1      
 119   1              RFCSN = 0;                                      
 120   1              SPI_RW(reg);                                                    // 选择RF寄存器
 121   1              reg_val = SPI_RW(0);                                            // 读出数据
 122   1              RFCSN = 1;                                      
 123   1      
 124   1              return(reg_val);                                                // 返回RF状态值
 125   1      }
 126          
 127          /**************************************************
 128          功能:读RF寄存器多字节数据到缓冲区
 129          **************************************************/
 130          uint8_t SPI_Read_Buf(uint8_t reg, uint8_t *pBuf, uint8_t bytes)
 131          {
 132   1              uint8_t status,byte_ctr;
 133   1      
 134   1              RFCSN = 0;                              
 135   1              status = SPI_RW(reg);                                   // 选择RF寄存器
 136   1      
 137   1              for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
 138   1               pBuf[byte_ctr] = SPI_RW(0);                            // 连接读出数据
 139   1      
 140   1              RFCSN = 1;                          
 141   1      
 142   1              return(status);                                         // 返回RF状态值
 143   1      }
 144          /**************************************************
 145          功能:把缓冲区的多字节数据写到RF寄存器
 146          **************************************************/
 147          uint8_t SPI_Write_Buf(uint8_t reg, uint8_t *pBuf, uint8_t bytes)
 148          {
 149   1              uint8_t status,byte_ctr;
 150   1      
 151   1              RFCSN = 0;                              
 152   1              status = SPI_RW(reg);                                           // 选择RF寄存器
 153   1              for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) // 连接写入数据
 154   1                         SPI_RW(*pBuf++); 
 155   1              RFCSN = 1;                                      
 156   1              return(status);                                                 // 返回RF状态值
 157   1      }
 158          /**************************************************
 159          功能:设置为掉电模式
 160          **************************************************/
 161          void PD_Mode(void)
 162          {
 163   1              RFCE=0;
 164   1              SPI_RW_Reg(WRITE_REG + CONFIG, 0x0c);           // PWR_UP=0
 165   1      }
 166          /**************************************************
 167          功能:设置为发射模式
 168          **************************************************/
 169          void TX_Mode(void)
 170          {
 171   1              SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);                           // 上电, CRC为2 bytes,接收模式,允许RX_DR产生中断

⌨️ 快捷键说明

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