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

📄 超声测距.lst

📁 一个超声测距程序
💻 LST
字号:
C51 COMPILER V8.02   砡蒧测__                                                              09/01/2007 01:37:26 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 砡蒧测__
OBJECT MODULE PLACED IN 超声测距.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 超声测距.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          
   6          sbit dula=P2^7;
   7          sbit wela=P2^6;    //数码管段,位定义
   8          
   9          sbit send=P1^0;    //发送端定义
  10          
  11          
  12          uint count=0,js,L,a,b;
  13          uchar a1,a2,a3;
  14          
  15          void display(uchar,uchar,uchar);
  16          void delay(uchar);
  17          void tx();
  18          
  19          uchar code table[]={
  20          0x3f,0x06,0x5b,0x4f,
  21          0x66,0x6d,0x7d,0x07,
  22          0x7f,0x6f,0x77,0x7c,
  23          0x39,0x5e,0x79,0x71};     //段码数组
  24          
  25          void main()
  26          {                
  27   1       EA=0;
  28   1       send=0;
  29   1       delay(100);
  30   1       
  31   1      
  32   1       TH0=0x00;
  33   1       TL0=0x00;  //T0设初值刚好驱动探头
  34   1       TMOD=0x11;        //定时器0,1都为模式1,16位
  35   1      /* TH1=0x00;
  36   1       TL1=0x00;*/  //T1计数设初值
  37   1       TR0=1;     //开启定时0
  38   1       /*TR1=1;*/             //开启定时1
  39   1      
  40   1       
  41   1       
  42   1       EA=1;
  43   1       ET0=1;
  44   1       PT0=1;
  45   1       tx();
  46   1       /*PT0=1;*/       //开启定时器0中断并设优先级
  47   1      /* ET1=1;
  48   1       PX1=1; */
  49   1      
  50   1       IT0=1;    // 低电平触发方式
  51   1       EX0=1;   //开启外部中断0
  52   1       IE=0x83;
  53   1      
  54   1       /*PX0=1;*/
  55   1      
C51 COMPILER V8.02   砡蒧测__                                                              09/01/2007 01:37:26 PAGE 2   

  56   1      
  57   1         
  58   1      /*while(rec=1)
  59   1       {
  60   1        TR1=0;
  61   1        js=TH1*256+TL1;  
  62   1      
  63   1        L=(js*85)/10000; 
  64   1        
  65   1        a1=L/100;
  66   1        a2=L%100/10;
  67   1        a3=L%100%10;
  68   1        display(a1,a2,a3);
  69   1        }
  70   1        rec=0;*/
  71   1        
  72   1      }
  73          
  74          
  75          void tx() //从P1.0发出40KHz的脉冲
  76          {
  77   1       uchar n,p;
  78   1       for(n=0;n<40;n++)
  79   1       {
  80   2       send=1;
  81   2       for(p=0;p<3;p++);
  82   2       send=0;
  83   2       for(p=0;p<2;p++);
  84   2       send=0;
  85   2       }
  86   1      }
  87                          
  88          
  89           void display(uchar bai,uchar shi,uchar ge)
  90          {
  91   1       for(;;)
  92   1       {
  93   2        dula=1;
  94   2        P0=table[bai];
  95   2        dula=0;
  96   2        wela=1;
  97   2        P0=0x0d;
  98   2        wela=0;
  99   2        delay(1);
 100   2      
 101   2        dula=1;
 102   2        P0=table[shi];
 103   2        dula=0;
 104   2        wela=1;
 105   2        P0=0x0b;
 106   2        wela=0;
 107   2        delay(1);
 108   2      
 109   2        dula=1;
 110   2        P0=table[ge];
 111   2        dula=0;
 112   2        wela=1;
 113   2        P0=0x07;
 114   2        wela=0;
 115   2        delay(1);
 116   2       }                                                                       
 117   1      } 
C51 COMPILER V8.02   砡蒧测__                                                              09/01/2007 01:37:26 PAGE 3   

 118          
 119          
 120          void delay(uchar x5ms)
 121          {
 122   1       for(b=x5ms;b>0;b--)
 123   1        for(a=532;a>0;a--);
 124   1      }
 125                  
 126          
 127          
 128          /*void time0_int(void) interrupt 1
 129          {
 130           count++;
 131           send=~send;
 132           TH0=0x1F;
 133           TL0=0xF4;
 134           if(count==17)
 135           {
 136            count=0;
 137            TR0=0;
 138            ET0=0;
 139            TH0=0x00;
 140            TL0=0x00;
 141           }      
 142          }*/
 143          
 144           void rec(void) interrupt 0         //外部中断0,接收信号
 145          {
 146   1        TR0=0;
 147   1        js=TH0*256+TL0;
 148   1        if(js<300);
 149   1        if(js>=300) 
 150   1       {
 151   2         L=(170*js)/1000;
 152   2         a1=L/100;
 153   2         a2=L%100/10;
 154   2         a3=L%100%10;
 155   2         display(a1,a2,a3);
 156   2       }
 157   1      }  
 158          
 159          
 160          /*void time1_over(void) interrupt 1      //T1溢出则无效测量,显示FFF
 161          {
 162           a1=table[15];
 163           a2=table[15];
 164           a3=table[15];
 165           display(a1,a2,a3);
 166           ET0=0;
 167          }*/               
 168             
 169          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    346    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V8.02   砡蒧测__                                                              09/01/2007 01:37:26 PAGE 4   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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