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

📄 usbfortest.lst

📁 24l01无线模块的C51的发送程序
💻 LST
字号:
C51 COMPILER V8.05a   USBFORTEST                                                           04/20/2012 11:23:55 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE USBFORTEST
OBJECT MODULE PLACED IN Usbfortest.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Usbfortest.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*福州天虹电脑科技有限公司 苏秋锦2011年2月*/
   2          #include <reg51.h> 
   3          #include <max7219.h>
   4          //#include <74Ls165.h>
   5          #include <api.h>
   6          
   7          /*数据字显示说明*/
   8          //10-A|11-b|12-c|13-d|14-e|15-F|16-H|17-J|18-L|19-n|20-P|21-q|22-U|23-[|24-]|25--|26-=|27-三横|28-┤|29-├
             -|30-E|31-h|31-空|33-N
   9          
  10          
  11          
  12          #define uchar unsigned char
  13          
  14          /***************************************************/
  15          #define TX_ADR_WIDTH   5  // 5字节宽度的发送/接收地址
  16          #define TX_PLOAD_WIDTH 4  // 数据通道有效数据宽度
  17          #define LED P2
  18          
  19          uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};  // 定义一个静态发送地址
  20          uchar RX_BUF[TX_PLOAD_WIDTH];
  21          uchar TX_BUF[TX_PLOAD_WIDTH];
  22          uchar flag;
  23          uchar DATA = 0x01;
  24          uchar bdata sta;
  25          sbit  RX_DR      = sta^6;
  26          sbit  TX_DS      = sta^5;
  27          sbit  MAX_RT = sta^4;
  28          /**************************************************/
  29          
  30          /**************************************************
  31          函数: init_io()
  32          
  33          描述:
  34              初始化IO
  35          /**************************************************/
  36          void init_io(void)
  37          {
  38   1              CE  = 0;        // 待机
  39   1              CSN = 1;        // SPI禁止
  40   1              SCK = 0;        // SPI时钟置低
  41   1              IRQ = 1;        // 中断复位
  42   1              LED = 0xff;             // 关闭指示灯
  43   1      }
  44          /**************************************************/
  45          
  46          /**************************************************
  47          函数:delay_ms()
  48          
  49          描述:
  50              延迟x毫秒
  51          /**************************************************/
  52          void delay_ms(uchar x)
  53          {
  54   1          uchar i, j;
C51 COMPILER V8.05a   USBFORTEST                                                           04/20/2012 11:23:55 PAGE 2   

  55   1          i = 0;
  56   1          for(i=0; i<x; i++)
  57   1          {
  58   2             j = 250;
  59   2             while(--j);
  60   2                 j = 250;
  61   2             while(--j);
  62   2          }
  63   1      }
  64          /**************************************************/
  65          
  66          /**************************************************
  67          函数:SPI_RW()
  68          
  69          描述:
  70              根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01
  71                  读出一字节
  72          /**************************************************/
  73          uchar SPI_RW(uchar byte)
  74          {
  75   1              uchar i;
  76   1              for(i=0; i<8; i++)          // 循环8次
  77   1              {
  78   2                      MOSI = (byte & 0x80);   // byte最高位输出到MOSI
  79   2                      byte <<= 1;             // 低一位移位到最高位
  80   2                      SCK = 1;                // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
  81   2                      byte |= MISO;           // 读MISO到byte最低位
  82   2                      SCK = 0;                // SCK置低
  83   2              }
  84   1          return(byte);               // 返回读出的一字节
  85   1      }
  86          /**************************************************/
  87          
  88          /**************************************************
  89          函数:SPI_RW_Reg()
  90          
  91          描述:
  92              写数据value到reg寄存器
  93          /**************************************************/
  94          uchar SPI_RW_Reg(uchar reg, uchar value)
  95          {
  96   1              uchar status;
  97   1              CSN = 0;                   // CSN置低,开始传输数据
  98   1              status = SPI_RW(reg);      // 选择寄存器,同时返回状态字
  99   1              SPI_RW(value);             // 然后写数据到该寄存器
 100   1              CSN = 1;                   // CSN拉高,结束数据传输
 101   1              return(status);            // 返回状态寄存器
 102   1      }
 103          /**************************************************/
 104          
 105          /**************************************************
 106          函数:SPI_Read()
 107          
 108          描述:
 109              从reg寄存器读一字节
 110          /**************************************************/
 111          uchar SPI_Read(uchar reg)
 112          {
 113   1              uchar reg_val;
 114   1              CSN = 0;                    // CSN置低,开始传输数据
 115   1              SPI_RW(reg);                // 选择寄存器
 116   1              reg_val = SPI_RW(0);        // 然后从该寄存器读数据
C51 COMPILER V8.05a   USBFORTEST                                                           04/20/2012 11:23:55 PAGE 3   

 117   1              CSN = 1;                    // CSN拉高,结束数据传输
 118   1              return(reg_val);            // 返回寄存器数据
 119   1      }
 120          /**************************************************/
 121          
 122          /**************************************************
 123          函数:SPI_Read_Buf()
 124          
 125          描述:
 126              从reg寄存器读出bytes个字节,通常用来读取接收通道
 127                  数据或接收/发送地址
 128          /**************************************************/
 129          uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
 130          {
 131   1              uchar status, i;
 132   1              CSN = 0;                    // CSN置低,开始传输数据
 133   1              status = SPI_RW(reg);       // 选择寄存器,同时返回状态字
 134   1              for(i=0; i<bytes; i++)
 135   1              pBuf[i] = SPI_RW(0);    // 逐个字节从nRF24L01读出
 136   1              CSN = 1;                    // CSN拉高,结束数据传输
 137   1              return(status);             // 返回状态寄存器
 138   1      }
 139          /**************************************************/
 140          
 141          /**************************************************
 142          函数:SPI_Write_Buf()
 143          
 144          描述:
 145              把pBuf缓存中的数据写入到nRF24L01,通常用来写入发
 146                  射通道数据或接收/发送地址
 147          /**************************************************/
 148          uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)
 149          {
 150   1              uchar status, i;
 151   1              CSN = 0;                    // CSN置低,开始传输数据
 152   1              status = SPI_RW(reg);       // 选择寄存器,同时返回状态字
 153   1              for(i=0; i<bytes; i++)
 154   1              SPI_RW(pBuf[i]);        // 逐个字节写入nRF24L01
 155   1              CSN = 1;                    // CSN拉高,结束数据传输
 156   1              return(status);             // 返回状态寄存器
 157   1      }
 158          /**************************************************/
 159          
 160          /**************************************************
 161          函数:RX_Mode()
 162          
 163          描述:
 164              这个函数设置nRF24L01为接收模式,等待接收发送设备的数据包
 165          /**************************************************/
 166          void RX_Mode(void)
 167          {
 168   1              CE = 0;
 169   1              SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // 接收设备接收通道0使用和发送设备相

⌨️ 快捷键说明

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