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

📄 rec_ptr8000.lst

📁 PTR8000的一段程序
💻 LST
字号:
C51 COMPILER V7.02a   REC_PTR8000                                                          04/23/2006 19:19:57 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE REC_PTR8000
OBJECT MODULE PLACED IN Rec_ptr8000.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Rec_ptr8000.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <AT89X52.h>
   2          #include <ABSACC.h>
   3          #include <intrins.h>
   4          #include <stdio.h>
   5          #define uint  unsigned int
   6          #define uchar unsigned char
   7          //配置口定义//
   8          sbit TXEN    =    P2^6;
   9          sbit TRX_CE =    P2^5;
  10          sbit PWR    =    P2^4;
  11          //SPI口定义//
  12          sbit MISO    =    P2^3;
  13          sbit MOSI    =    P2^2;
  14          sbit SCK    =    P2^1;
  15          sbit CSN    =    P2^0;
  16          //sbit P2_0  = P2^0;
  17          //状态输出口//
  18          sbit AM         =P3^2;
  19          sbit DR        =    P3^3;
  20          sbit LCD    =    P3^4;
  21          
  22          //RF寄存器配置//
  23          unsigned char idata RFConf[11]=
  24          {
  25              0x00,        //配置命令//
  26              0x6C,        //CH_NO,配置频段在433.2MHZ
  27              0x0E,        //输出功率为10db,不重发,节电为正常模式
  28              0x44,        //地址宽度设置,为4字节
  29              0x03,0x03,    //接收发送有效数据长度为3字节
  30              0xE7,0xE7,0xE7,0xE7,    //接收地址
  31              0xC0,        //CRC充许,16位CRC校验16M晶振
  32          };
  33          
  34          uchar TxRxBuffer[5];
  35          bit lcdbit;
  36          ///////////延时/////////////////
  37          void Delay(uint x)
  38          {
  39   1          uint i;
  40   1          for(i=0;i<x;i++){
  41   2              _nop_();
  42   2          }
  43   1      }
  44          
  45          ////////////用SPI口写数据至NRF905内//////////
  46          void SpiWrite(unsigned char b)
  47          {
  48   1          unsigned char i=8;
  49   1          while (i--)
  50   1          {
  51   2              Delay(10);
  52   2              SCK=0;
  53   2              MOSI=(bit)(b&0x80);
  54   2              b<<=1 ; 
  55   2              Delay(10);
C51 COMPILER V7.02a   REC_PTR8000                                                          04/23/2006 19:19:57 PAGE 2   

  56   2              SCK=1; 
  57   2              Delay(10);
  58   2              SCK=0;
  59   2          }
  60   1          SCK=0;
  61   1      }
  62          ///////////////from 905 read data////////////////
  63          unsigned char SpiRead(void)
  64          {
  65   1          register unsigned char i=8;
  66   1          unsigned char ddata=0;
  67   1          while (i--)
  68   1          {
  69   2              ddata<<=1 ;
  70   2              SCK=0;
  71   2              Delay(20);
  72   2              ddata|=MISO;
  73   2              SCK=1 ;
  74   2              Delay(20);
  75   2          }
  76   1          SCK=0;
  77   1          return ddata;
  78   1      }
  79          ///////////////接收数据包/////////////////
  80          void RxPacket(void)
  81          {
  82   1          uchar i;
  83   1          i=0;
  84   1          while(DR)
  85   1          {
  86   2              TxRxBuffer[i] = SpiRead();
  87   2              i++;
  88   2          }
  89   1      }
  90          
  91          /*
  92          ;写发射数据命令:20H
  93          ;读发射数据命令:21H
  94          ;写发射地址命令:22H
  95          ;读发射地址命令:23H
  96          ;读接收数据命令:24H
  97          */
  98          void TxPacket(void)
  99          {   PWR=1;
 100   1          TXEN=1;
 101   1          CSN=0;
 102   1          SpiWrite(0x22);        //写发送地址,后面跟4字节地址//
 103   1          SpiWrite(0xE7);
 104   1          SpiWrite(0xE7);
 105   1          SpiWrite(0xE7);
 106   1          SpiWrite(0xE7);
 107   1          CSN=1;
 108   1          Delay(2);
 109   1          CSN=0;
 110   1          SpiWrite(0x20);        //写发送数据命令,后面跟三字节数据//
 111   1          SpiWrite(0x41);
 112   1          SpiWrite(0x42);
 113   1          SpiWrite(0x43);
 114   1          SpiWrite(0x44);
 115   1          SpiWrite(0x45);
 116   1          CSN=1;
 117   1          Delay(2);
C51 COMPILER V7.02a   REC_PTR8000                                                          04/23/2006 19:19:57 PAGE 3   

 118   1          TRX_CE=1;                    //使能发射模式//
 119   1          Delay(100);                    //等带发送完成//
 120   1              TRX_CE=0;
 121   1          while(!DR);
 122   1      
 123   1      }
 124          ////////////////等待接收数据包///////////////////
 125          uchar temp;
 126          void Wait_Rec_Packet(void)
 127          {
 128   1          TXEN=0;
 129   1          TRX_CE=1;
 130   1              PWR=1;
 131   1              Delay(1000);
 132   1          while(1)
 133   1          { //if (LCD==1) P0=~P0;
 134   2              if(DR)
 135   2              { //P0=~P0;
 136   3                  TRX_CE=0;            //如果数据准备好,则进入待机模式,以便SPI口操作
 137   3                  CSN=0;
 138   3                  SpiWrite(0x24);
 139   3                  RxPacket();
 140   3                  CSN=1;
 141   3                  temp=TxRxBuffer[0]+TxRxBuffer[1]+TxRxBuffer[2];
 142   3                  if(temp==0x06){        
 143   4                      lcdbit=!lcdbit;
 144   4                      LCD=lcdbit;     
 145   4                              P0=~P0;
 146   4                                      //如果接收的数据正确
 147   4                  }
 148   3                  break;
 149   3              }
 150   2          }
 151   1      }
 152          ////////////初始化配置寄存器////////////////
 153          void Ini_System(void)
 154          {
 155   1          uchar i;
 156   1          LCD=0;
 157   1          Delay(10000);
 158   1          LCD=1;
 159   1          lcdbit=1;
 160   1          CSN=1;
 161   1          SCK=0;
 162   1          PWR=1;
 163   1          TRX_CE=0;
 164   1          TXEN=0;
 165   1          Delay(2);
 166   1          CSN=0;
 167   1      
 168   1          SpiWrite( 0x00);        //配置命令//
 169   1          SpiWrite( 0x6C);        //CH_NO,配置频段在433.2MHZ
 170   1          SpiWrite( 0x0E);        //输出功率为10db,不重发,节电为正常模式
 171   1          SpiWrite( 0x44);        //地址宽度设置,为4字节
 172   1          SpiWrite( 0x03);SpiWrite( 0x03);    //接收发送有效数据长度为3字节
 173   1          SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);    //接收地址
 174   1          SpiWrite( 0xDE); 
 175   1      
 176   1      
 177   1          /*for(i=0;i<11;i++){
 178   1              SpiWrite(RFConf[i]);
 179   1          }*/
C51 COMPILER V7.02a   REC_PTR8000                                                          04/23/2006 19:19:57 PAGE 4   

 180   1          CSN=1;
 181   1          PWR=1;
 182   1          TRX_CE=1;
 183   1          TXEN=0;
 184   1          Delay(1000);
 185   1      }
*** WARNING C280 IN LINE 155 OF REC_PTR8000.C: 'i': unreferenced local variable
 186                  
 187          void main(void)
 188          {
 189   1          uchar i;
 190   1       
 191   1       Ini_System();
 192   1       PWR=0;
 193   1       P0=0;
 194   1       DR=0;
 195   1       //TxPacket();
 196   1          while(1)
 197   1          { 
 198   2         //Wait_Rec_Packet();        //等待接收完成
 199   2        //  for(i=0;i<2;i++)
 200   2        //  Delay(65530);
 201   2        TxPacket();
 202   2         Delay(5000);
 203   2                      P0=~P0;
 204   2          }
 205   1      }
*** WARNING C280 IN LINE 189 OF REC_PTR8000.C: 'i': unreferenced local variable
 206          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    362    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       2
   IDATA SIZE       =     11    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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