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

📄 main.lst

📁 此为无线单片机,2.4G无线收发内部带51核,此为它的发射程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 1   


C51 COMPILER V7.08, 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          #include <Nordic\reg24e1.h>
   2          #include <stdlib.h>
   3          //include "ISD51.H"
   4          
   5          
   6          sbit    LEDR = P0^4;
   7          sbit    LEDG = P0^5;
   8          sbit    KEYR = P0^3;
   9          sbit    KEYT = P0^6;
  10          
  11          #define         int8u           unsigned char
  12          #define         int16u          unsigned int 
  13          #define         FRESELE         0x28                            
  14          #define         ADDR_INDEX      8                         // Index to default address bytes in RxTxConf.buf 
  15          #define         ADDR_COUNT      4                         // Number of address bytes
  16          
  17          
  18          
  19          
  20          struct UARTBUF
  21          {
  22                  int8u Buf[20];
  23                  int8u Counter;
  24                  int8u NewData;
  25          }Rx;
  26          
  27          int8u RFConfig[15] ={
  28                                  0x08,                           //接收频道二有效数据长度
  29                          
  30                                  0x08,                           //接收频道一有效数据长度
  31                          
  32                                  0x00,0x00,0x00,0x00,0x00,       //接收频道二地址
  33                          
  34                                  0x00,0xcd,0xef,0x12,0xaa,       //接收频道一地址
  35                          
  36                                  0x83,                           //32位地址,16位CRC,使能CRC
  37                                                          //bit7~2:ADDR_W,最大40位
  38                                                          
  39                                                          //bit1:CRC_L
  40                                                          //Logic 0: 8 bit CRC    
  41                                                          //Logic 1: 16 bit CRC
  42                                                          
  43                                                          
  44                                                          //BIT0:CRC_EN
  45                                                          //Logic 0: On-chip CRC generation/checking disabled
  46                                                          //Logic 1: On-chip CRC generation/checking enabled
  47                                                          
  48                                                          
  49                                  0x4f,                           //ShockBurst模式,250 kbps,16M晶振,0dBm最大功率
  50                          
  51                                                          //Bit 15:RX2_EN
  52                                                          //Logic 0: One channel receive
  53                                                          //Logic 1: Two channels receive
  54                                                          
  55                                                          //Bit 14:
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 2   

  56                                                          //Communication Mode:
  57                                                          //Logic 0: nRF2401 operates in direct mode.
  58                                                          //Logic 1: nRF2401 operates in ShockBurst. mode
  59          
  60                                                          //Bit 13:
  61                                                          //RF Data Rate:
  62                                                          //Logic 0: 250 kbps
  63                                                          //Logic 1: 1 Mbps
  64                                                          
  65                                                          //Bit 12-10:Selects the nRF2401 crystal frequency to be used:
  66                                                          //      D12     D11     D10     Crystal Frequency [MHz]
  67                                                          //      0       0       0               4
  68                                                          //      0       0       1               8
  69                                                          //      0       1       0               12
  70                                                          //      0       1       1               16
  71                                                          //      1       0       0               20
  72                                                          
  73                                                          //Bit 9-8:RF_PWR: Sets nRF2401 RF output power in transmit mode:
  74                                                          //      D9      D8      P [dBm]
  75                                                          //      0       0       -20
  76                                                          //      0       1       -10
  77                                                          //      1       0       -5
  78                                                          //      1       1       0
  79                                                          
  80                                                          
  81                                                          
  82                                  0x08                            //2400+4*1=2404MHZ=2.404G,发送模式
  83                          
  84                                                          //Bit 7 – 1:RF_CH#: Sets the frequency channel the nRF2401 operates on.
  85                                                          //Channelrf = 2400MHZ + RF_CH# * 1.0MHZ
  86                                                          
  87                                                          //Bit 0:Set active mode:
  88                                                          //Logic 0: transmit mode
  89                                                          //Logic 1: receive mode
  90                                  };
  91          
  92          int8u rfAddress[4] = { 0xcd, 0xef, 0x12, 0xaa };//地址
  93          
  94          int8u timer[2];                                 //超时计数器
  95          int8u t0lrel, t0hrel;                           //定时器初值
  96          int8u TxBuf[8];                                 //发送绶冲区
  97          
  98          
  99          
 100          
 101          
 102          void ADCINIT(void)
 103          {
 104   1              ADCSTATIC&=0X1C;
 105   1          ADCSTATIC|=0X03;
 106   1              ADCCON=0X32;
 107   1      }
 108          
 109          /*****************************************************************************************
 110          //函数名:void Delay100us(int8u n)
 111          //输入:时间
 112          //输出:无
 113          //功能描述:廷时
 114          /*****************************************************************************************/
 115          void Delay100us(int8u n)
 116          {
 117   1              int8u i;
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 3   

 118   1              while(n--)
 119   1              for(i=0;i<35;i++);
 120   1      }
 121          
 122          /*****************************************************************************************
 123          //函数名:delay(unsigned int s)
 124          //输入:时间
 125          //输出:无
 126          //功能描述:普通廷时
 127          /*****************************************************************************************/
 128          delay(unsigned int s)
 129          {
 130   1              unsigned int i;
 131   1              for(i=0; i<s; i++);
 132   1              for(i=0; i<s; i++);
 133   1              for(i=0; i<s; i++);
 134   1      }
 135          /*****************************************************************************************
 136          //函数名:int8u SpiReadWrite(int8u b)
 137          //输入:发送的数据
 138          //输出:收到的数据
 139          //功能描述:SPI发送接收一个字节
 140          /*****************************************************************************************/
 141          int8u SpiReadWrite(int8u b)
 142          {
 143   1              EXIF &= ~0x20;                              // Clear SPI interrupt
 144   1              SPI_DATA = b;                               // Move byte to send to SPI data register
 145   1              while((EXIF & 0x20) == 0x00);                // Wait until SPI hs finished transmitting
 146   1              return SPI_DATA;
 147   1      }
 148          
 149          /*****************************************************************************************
 150          //函数名:TimerInit()
 151          //输入:无
 152          //输出:无
 153          //功能描述:定时器0初始化
 154          /*****************************************************************************************/
 155          void TimerInit(void)
 156          {
 157   1              timer[0] = timer[1] = 0;
 158   1      
 159   1              TR0 = 0;
 160   1              TMOD &= ~0x03;
 161   1              TMOD |= 0x01;                               // mode 1
 162   1              CKCON |= 0x08;                              // T0M = 1 (/4 timer clock)
 163   1              t0lrel = 0x60;                              // 1KHz tick...
 164   1              t0hrel = 0xF0;                              // ... = 65536-16e6/(4*1e3) = F060h
 165   1              TF0 = 0;                                    // Clear any pending Timer0 interrupts
 166   1              TR0 = 1;                                    // Start Timer0
 167   1              ET0 = 1;                                    // Enable Timer0 interrupt
 168   1      }
 169          
 170          /*****************************************************************************************
 171          //函数名:ResetTimer(int8u n)
 172          //输入:要复位的计时器
 173          //输出:无
 174          //功能描述:复位计时器
 175          /*****************************************************************************************/
 176          void ResetTimer(int8u n)
 177          {
 178   1              ET0 = 0;                                    // Disable Timer0 interrupt
 179   1              timer[n & 0x01] = 0;                        // Clear timer[n]
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 4   

 180   1              ET0 = 1;                                    // Enable Timer0 interrupt
 181   1      }
 182          /*****************************************************************************************
 183          //函数名:ReadTimer()
 184          //输入:要读的计时器
 185          //输出:读出值
 186          //功能描述:读计时器
 187          /*****************************************************************************************/
 188          unsigned ReadTimer(int8u n)
 189          {
 190   1              unsigned tmp;
 191   1              ET0 = 0;                                    // Disable Timer0 interrupt
 192   1              tmp = timer[n];                             // Clear timer[n]
 193   1              ET0 = 1;                                    // Enable Timer0 interrupt
 194   1              return tmp;
 195   1      }
 196          
 197          /*****************************************************************************************
 198          //函数名:SciInit()
 199          //输入:无
 200          //输出:无
 201          //功能描述:串口初始化
 202          /*****************************************************************************************/
 203          void SciInit(void)
 204          {
 205   1              TH1 = 0xcc;      // 4800@16MHz (when T1M=1 and SMOD=1)
 206   1              CKCON |= 0x10;  // T1M=1 (/4 timer clock)
 207   1              PCON = 0x80;    // SMOD=1 (double baud rate)
 208   1              SCON = 0x52;    // Serial mode1, enable receiver
 209   1              TMOD = 0x20;    // Timer1 8bit auto reload 
 210   1              TR1 = 1;        // Start timer1
 211   1              P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2
 212   1              P0_DIR &= 0x0F;        //led p0.4  p0.5 output
 213   1              P0_DIR |= 0x48;    // P0.3 is input  p0.6 input
 214   1              ES = 0;
 215   1              EA=1;
 216   1      }
 217          
 218          
 219          /*****************************************************************************************
 220          //函数名:SetTxMode()
 221          //输入:无
 222          //输出:无
 223          //功能描述:转为发送模式
 224          /*****************************************************************************************/
 225          void SetRxMode(void)
 226          {
 227   1              int8u ch;
 228   1              CS = 1;
 229   1              Delay100us(0);
 230   1              ch = FRESELE << 1;
 231   1              SpiReadWrite(ch | 0x01);
 232   1              CS = 0;
 233   1      }
 234          /*****************************************************************************************
 235          //函数名:SetRxMode()
 236          //输入:无
 237          //输出:无
 238          //功能描述:转为接收模式
 239          /*****************************************************************************************/
 240          void SetTxMode(void)
 241          {
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 5   

 242   1              int8u ch;
 243   1              CS = 1;
 244   1              Delay100us(0);

⌨️ 快捷键说明

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