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

📄 超声波程序.lst

📁 超声波传感器测距 能准确测出物体据传感器之间的距离
💻 LST
字号:
C51 COMPILER V8.05a   砡蒧波程序                                                           05/27/2008 20:26:04 PAGE 1   


C51 COMPILER V8.05a, 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 <REGX51.H>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          #define v 0.34                  //声波在空气中的传播速度
   5          
   6          sbit out=P3^2;  
   7          bit flag=0;
   8          uchar N;
   9          uchar  dis_SMG[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //数码管显示码
  10                  uint time;
  11                   float s;               //距离长度
  12                   uchar sm=0;      //数码管段位
  13                   uint fir,sec,thi,four;   //显示值
  14                   
  15            void scan( );
  16            void delay( uint i) ;      //延时函数
  17            
  18            void main (void)
  19            {      
  20   1           delay(500);
  21   1               TMOD=0x11;        //TO为计时(发脉冲的时间),T1为计数(算出超声波的传输时间)
  22   1                         // IE1=1;
  23   1               IT1=1;
  24   1               EA=1;
  25   1               ET0=1;
  26   1               ET1=1;
  27   1               EX1=1;
  28   1               
  29   1               TH0=(65536-200)/256;
  30   1               TL0=(65536-200)%256;   //T0发200微秒的时间
  31   1               TR0=1;
  32   1           TH1=0x00;
  33   1               TL1=0x00; 
  34   1                                   //高电平发脉冲
  35   1                 N=0;          //计时标记
  36   1                 
  37   1                 while(1)
  38   1                 {                         // if(TF1==1)      { TF1=0;N++;  }
  39   2              
  40   2      
  41   2                      if(flag==1)
  42   2                               {      EA=0;
  43   3                                  flag=0;
  44   3                               
  45   3                                 s=v*time*100;
  46   3                   fir=s/1000;
  47   3                       sec=(s-1000*fir)/100;
  48   3                       thi=(s-fir*1000-sec*100)/10;
  49   3                       four=s-1000*fir-100*sec-thi; }
  50   2                         
  51   2                        scan(); }
  52   1                
  53   1         }
  54          
  55                   void scan(  )    //显示函数
C51 COMPILER V8.05a   砡蒧波程序                                                           05/27/2008 20:26:04 PAGE 2   

  56                   {
  57   1                 switch(sm++)
  58   1                        {
  59   2                          case 1: P0=dis_SMG[fir];
  60   2                                     P1=0x01; delay(20);   break;
  61   2                              case 2: P0=dis_SMG[sec];
  62   2                                     P1=0x02;  delay(20);  break;
  63   2                              case 3: P0=dis_SMG[thi];
  64   2                                     P1=0x04;  delay(20);  break;
  65   2                              case 4: P0=dis_SMG[four];
  66   2                                     P1=0x08;  delay(20);  break;
  67   2                               default: {  }               break;
  68   2                         }
  69   1                              if(sm>4)  sm=0;     }
  70          
  71          
  72                     void outer1(void)interrupt 2 using 2
  73                   {    
  74   1                    EA=0;
  75   1                   TR1=0;                   //关定时器
  76   1                       time=(65536*N+TH1*256+TL1)/2;
  77   1                    flag=1;                 //标记开始算时间
  78   1                         EX1=0; 
  79   1                         EA=1;
  80   1      
  81   1                           }
  82          
  83          
  84                     void timer0(void)interrupt 1 using 1
  85                     {   
  86   1                   TR0=0;
  87   1                   out=0;                //关闭3.2的高电平
  88   1                         TR1=1;                //打开定时器1
  89   1                         
  90   1                         }
  91                            
  92                            
  93                             void delay( uint i)
  94                             {  
  95   1                            for(i;i>0;i--);
  96   1                 }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    586    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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