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

📄 main.lst

📁 菜鸟,详细NRF24E1运用,程序,电路
💻 LST
字号:
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:58:42 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL C  V4\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

*** WARNING C500 IN LINE 1 OF MAIN.C: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))

   1          /**********************************************
   2          /程序说明:nRF24LE1超声波测距,串口显示测量数据
   3          ***********************************************/
   4          #include "reg24le1.h"
   5          #include  <intrins.h>
   6          /***********************************************
   7          /
   8          /宏定义部分
   9          /
  10          ***********************************************/
  11          #define Enableint()  do{EA=1;}while(0)
  12          #define Disableint() do{EA=0;}while(0)
  13          #define true   0x01
  14          #define false 0x00
  15          #define RX     P00
  16          #define TX     P01
  17          #define LED    P02
  18          /***********************************************
  19          /类型重新定义
  20          ***********************************************/
  21          typedef unsigned char uchar;
  22          typedef unsigned int  uint;
  23          /***********************************************
  24          /定义标志位
  25          ***********************************************/
  26          bit flag =0;                 /*溢出标志       */
  27          /********************************************
  28          /
  29          /延时函数
  30          /
  31          *********************************************/ 
  32          void delayms(unsigned int ms)
  33          {
  34   1              unsigned char i=100,j;
  35   1              for(;ms;ms--)
  36   1              {
  37   2                      while(--i)
  38   2                      {
  39   3                              j=10;
  40   3                              while(--j);
  41   3                      }
  42   2              }
  43   1      }
  44          /*********************************************
  45          /
  46          /nRF24LE1之I/O口初始化函数
  47          /
  48          **********************************************/
  49          void IO_init(void )
  50          {
  51   1       P0DIR|=BIT_0;       /*设置RX为输入*/
  52   1       P0DIR&=(~(BIT_1));  /*设置TX为输出*/
  53   1       P0DIR&=(~(BIT_2));
  54   1       RX=0;
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:58:42 PAGE 2   

  55   1       TX=0;
  56   1      }
  57          /*********************************************
  58          /
  59          /LedDebug函数通过调用显示程序状态
  60          /
  61          **********************************************/
  62          void LedDebug(void)
  63          {
  64   1      LED=!LED;
  65   1      delayms(200);
  66   1      }
  67          /*********************************************
  68          /
  69          /delayus()延时微秒
  70          /
  71          *********************************************/
  72          void delayus(uint us)
  73          {
  74   1      us-=5;
  75   1      while(us--)
  76   1      {
  77   2      _nop_();
  78   2      }
  79   1      }
  80          /*********************************************
  81          /
  82          /nRF24LE1工作时钟的初始化
  83          /
  84          *********************************************/
  85          void ClkSet(void)
  86          {
  87   1       CLKCTRL=0X28;
  88   1       CLKLFCTRL = 0x01;   
  89   1      }
  90          /*********************************************
  91          /
  92          /启动超声波模块
  93          /
  94          *********************************************/
  95          void  StartModule()                
  96          {
  97   1                TX=1;                            
  98   1            delayus(25);
  99   1                TX=0;
 100   1      }
 101          /********************************************
 102          /
 103          /定时器0初始化
 104          /
 105          *********************************************/
 106          void T0_init(void)
 107          {
 108   1       TMOD=0x01;
 109   1       TH0=0;
 110   1       TL0=0; 
 111   1       ET0=1;             /*允许T0中断                   */
 112   1       TR0=0;
 113   1      }
 114          /*******************************************
 115          /
 116          /串口初始化
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:58:42 PAGE 3   

 117          /
 118          *******************************************/
 119          void Uart_init(uint baud)
 120          {
 121   1              P0DIR &= 0xF7;     /*设置P0.3 (TxD)为输出       */
 122   1              P0DIR |= 0x10;     /*设置P0.4 (RxD)为输入       */
 123   1              P0|=0x18;               
 124   1              S0CON = 0x50;  
 125   1              PCON |= 0x80;      /* 波特率倍增                */
 126   1              WDCON |= 0x80;     /* 选定内部波特率发生器*/
 127   1              if(baud==38400)         
 128   1          {
 129   2              S0RELL = 0xF3;    /* 波特率38400                */
 130   2              S0RELH = 0x03;  
 131   2              }
 132   1              else if(baud==9600)
 133   1              {
 134   2              S0RELL = 0xCC;     /* 波特率9600       */
 135   2              S0RELH = 0x03;                                                              
 136   2              }
 137   1      }
 138          /*********************************************
 139          /
 140          /putch()函数通过串口输出一个字符
 141          /
 142          *********************************************/
 143          void putch(char ch)
 144          {
 145   1      S0BUF=ch;
 146   1      while(!TI0);
 147   1      TI0=0;
 148   1      }
 149          /*********************************************
 150          /
 151          /Puts()串口发送一个字符串
 152          /
 153          **********************************************/
 154          void Puts(char* str)
 155          {
 156   1      while(*str!='\0')
 157   1       {
 158   2       putch(*str++);
 159   2       }
 160   1      }
 161          /********************************************
 162          /
 163          /nextline()换行函数
 164          /
 165          *********************************************/
 166          void nextline(void)
 167          {
 168   1      putch('\n');
 169   1      }
 170          /**********************************************
 171          /
 172          /计算距离
 173          /
 174          ***********************************************/
 175          void Conut(void)
 176          {
 177   1      static uint time=0,TMP;
 178   1      static float S;
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:58:42 PAGE 4   

 179   1      time=TH0*256+TL0;
 180   1      TH0=0; 
 181   1      TL0=0;
 182   1      S=(time*1.87)/100;       /*算出来是CM             */
 183   1      if(flag==1)                      /*超出测量                   */
 184   1       {
 185   2       flag=0;
 186   2       Puts("can,t get the distance!!!");
 187   2       nextline(); 
 188   2        }
 189   1       else
 190   1       {
 191   2       Puts("distance S= ");
 192   2       TMP=S;
 193   2       if(TMP>=100&&TMP<1000)
 194   2       {
 195   3       putch((TMP/100)+'0');
 196   3       putch((TMP%100)/10+'0');
 197   3       putch((TMP%10)+'0');
 198   3       }
 199   2       else if(TMP>=10)
 200   2       {
 201   3       putch((TMP/10)+'0');
 202   3       putch((TMP%10)+'0');
 203   3       }
 204   2       else if(TMP<10)
 205   2       {
 206   3       putch(TMP+'0');
 207   3       }
 208   2       putch('.');
 209   2       TMP=((int)(S*100))%100;
 210   2       putch((TMP/10)+'0');
 211   2       putch((TMP%10)+'0');
 212   2       Puts(" cm");
 213   2       nextline();
 214   2       } 
 215   1      }
 216          /*********************************************
 217          /
 218          /定时器中断0服务函数
 219          /
 220          *********************************************/
 221          void TIMER0ISR0() interrupt INTERRUPT_TF0
 222          {
 223   1       flag=1;                                           
 224   1      }
 225          /*********************************************
 226          /
 227          /主函数部分
 228          /
 229          **********************************************/
 230          void main(void)
 231          {   
 232   1          static uint timeout=0; 
 233   1          Disableint();
 234   1              ClkSet();        /*nRF24LE1时钟初始化 */
 235   1              IO_init();          /*I/O口初始化         */
 236   1              T0_init();          /*定时器0初始化               */
 237   1              Uart_init(38400);/*波特率初始化           */
 238   1              Puts("超声波测距测试程序!");
 239   1              nextline();
 240   1              Enableint();
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:58:42 PAGE 5   

 241   1          while(1)
 242   1              {
 243   2               ST : StartModule();/*启动超声波测距    */
 244   2               while(0==RX)    /*当RX为零时等待    */
 245   2               {
 246   3               delayus(5);
 247   3               timeout++;
 248   3               if(timeout==3000)
 249   3                {
 250   4                 timeout=0;
 251   4                 goto ST;
 252   4                 }    
 253   3               }
 254   2               timeout=0;     
 255   2               if(RX==1)
 256   2               TR0=1;                 /*开启计数                      */
 257   2               while(1==RX);  /*当RX为1计数并等待 */
 258   2               if(RX==0)
 259   2               TR0=0;                 /*关闭计数                      */
 260   2           Conut();           /*计算距离,同时串口显示 */
 261   2               LedDebug();    /*LED程序状态显示       */
 262   2              }
 263   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    597    ----
   CONSTANT SIZE    =     64    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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