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

📄 main.lst

📁 无线收发原代码 24e1 ad 转换程序 希望抛砖引玉
💻 LST
📖 第 1 页 / 共 2 页
字号:
 172   1              ET0 = 1;                                    // Enable Timer0 interrupt
 173   1      }
 174          /*****************************************************************************************
 175          //函数名:ReadTimer()
 176          //输入:要读的计时器
 177          //输出:读出值
 178          //功能描述:读计时器
 179          /*****************************************************************************************/
C51 COMPILER V7.08   MAIN                                                                  11/07/2005 10:57:52 PAGE 4   

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

 242          /*****************************************************************************************
 243          //函数名:SendC()
 244          //输入:发送的数据
 245          //输出:无
 246          //功能描述:串口初始化
 247          /*****************************************************************************************/
 248          void SendCh(char c)
 249          {
 250   1              TI = 0;
 251   1              SBUF = c;
 252   1              while(!TI);
 253   1              TI = 0;
 254   1      }
 255          
 256          /*****************************************************************************************
 257          //函数名:Nrf24E1Init()
 258          //输入:无
 259          //输出:无
 260          //功能描述:Nrf24E1Init初始化,这里我们配置成32位地址。
 261          /*****************************************************************************************/
 262          void Nrf24E1Init()
 263          {
 264   1              int8u i;
 265   1              SPICLK = 0;                                 // Max SPI clock
 266   1              SPI_CTRL = 0x02;                            // Connect internal SPI controller to Radio
 267   1              CE = 0;
 268   1              CS = 1;                                     // RF SPI CS = 1
 269   1              Delay100us(0);
 270   1              SpiReadWrite(0x00);                         // We are not using the DuoCeiver functionallity
 271   1              for(i=1;i<15;i++)
 272   1              {
 273   2                      SpiReadWrite(RFConfig[i]);
 274   2              }
 275   1              CS = 0;
 276   1      
 277   1              Delay100us(30);  
 278   1      }
 279          /*****************************************************************************************
 280          //函数名:int8u WaitAck(void)
 281          //输入:无
 282          //输出:返回应答信号
 283          //功能描述:等待应答,并返回应答信号
 284          /*****************************************************************************************/
 285          int8u WaitAck(void)
 286          {
 287   1          int8u ack;
 288   1          SetRxMode();
 289   1          CE = 1;
 290   1          ResetTimer(0);
 291   1          while(DR1 == 0)
 292   1          {
 293   2              if (ReadTimer(0) > 10)                    // 3ms time-out/10MS
 294   2              {
 295   3                  CE = 0;
 296   3                  return 0;
 297   3              }
 298   2          }
 299   1          ack = SpiReadWrite(0);
 300   1          while(DR1)
 301   1          {
 302   2              SpiReadWrite(0);
 303   2          }
C51 COMPILER V7.08   MAIN                                                                  11/07/2005 10:57:52 PAGE 6   

 304   1          CE = 0;
 305   1          return ack;
 306   1      }
 307          /*****************************************************************************************
 308          //函数名:TransmitPacket(int8u *pBuf)
 309          //输入:发送的数据
 310          //输出:无
 311          //功能描述:发送发送缓冲区的数据
 312          /*****************************************************************************************/
 313          TransmitPacket(int8u *pBuf,int8u crc)
 314          {
 315   1              int8u i;
 316   1      
 317   1              SetTxMode();
 318   1              CE = 1;
 319   1              Delay100us(1);
 320   1      
 321   1              for (i=0;i<ADDR_COUNT;i++)
 322   1              {
 323   2                      SpiReadWrite(rfAddress[i]);
 324   2              }
 325   1              SpiReadWrite(crc);
 326   1              for (i=1;i<5;i++)
 327   1              {
 328   2                      SpiReadWrite(pBuf[i]);
 329   2              }
 330   1              CE = 0;
 331   1              Delay100us(6);                              // Wait until finished transmitting (200us + 256us)//delay(5)
 332   1      }
 333          
 334          /*****************************************************************************************
 335          //函数名:void InitADC(void)
 336          //输入:无
 337          //输出:无
 338          //功能描述:Nrf24E1ADC初始化
 339          /*****************************************************************************************/
 340          void InitADC()
 341          {
 342   1              ADCCON = 0x20;                  //  NPD=1,内部参考电压
 343   1      
 344   1              ADCSTATIC &= 0x1c;
 345   1              ADCSTATIC |= 0x03;              // 12位ADC
 346   1              
 347   1      }
 348          /*****************************************************************************************
 349          //函数名

⌨️ 快捷键说明

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