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

📄 脉宽测量.lst

📁 避障模块
💻 LST
字号:
C51 COMPILER V8.02   耞宽测量                                                              10/28/2009 20:41:11 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          /*********************************************************************************************************
             -**/
   2          //DYP-ME007 超声波测距模块 DEMO 程序
   3          //晶振:11。0592
   4          //程序编写:廖文丹        QQ:  80184985
   5          //网站:智能微控工作室 http://www.mcustudio.com.cn
   6          //taobao店铺:http://shop37091187.taobao.com/
   7          //接线:模块TRIG接 P0.2  ECH0 接P0.1
   8          //数码管:共阳数码管P1接数据口,P2.5 P2.4 P2.3接选通数码管
   9          /*********************************************************************************************************
             -**/            
  10                               #include <AT89x51.H>               //器件配置文件
  11                                   #include <intrins.h>
  12                                   #define  RX  P0_1
  13                                   #define  TX  P0_2
  14                                   unsigned int  time=0;
  15                                   unsigned int  timer=0;
  16                                   unsigned char posit=0;
  17                                   unsigned long S=0;
  18                                   bit      flag =0;
  19                                   unsigned char const discode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
  20                                   unsigned char const positon[3]={ 0xdf,0xef,0xf7};
  21                                   unsigned char disbuff[4]          ={ 0,0,0,0,};
  22          /********************************************************/
  23              void Display(void)                           //扫描数码管
  24                  {
  25   1               if(posit==0)
  26   1               {P1=(discode[disbuff[posit]])&0x7f;}
  27   1               else
  28   1               {P1=discode[disbuff[posit]];}
  29   1                P2=positon[posit];
  30   1                if(++posit>=3)
  31   1                posit=0;
  32   1              }
  33          /********************************************************/
  34              void Conut(void)
  35                  {
  36   1               time=TH0*256+TL0;
  37   1               TH0=0;
  38   1               TL0=0;
  39   1              
  40   1               S=(time*1.7)/100;     //算出来是CM
  41   1               if((S>=700)||flag==1) //超出测量范围显示“-”
  42   1               {       
  43   2                flag=0;
  44   2                disbuff[0]=10;           //“-”
  45   2                disbuff[1]=10;           //“-”
  46   2                disbuff[2]=10;           //“-”
  47   2               }
  48   1               else
  49   1               {
  50   2                disbuff[0]=S%1000/100;
  51   2                disbuff[1]=S%1000%100/10;
  52   2                disbuff[2]=S%1000%10 %10;
  53   2               }
C51 COMPILER V8.02   耞宽测量                                                              10/28/2009 20:41:11 PAGE 2   

  54   1              }
  55          /********************************************************/
  56               void zd0() interrupt 1              //T0中断用来计数器溢出,超过测距范围
  57            {
  58   1          flag=1;                                                      //中断溢出标志
  59   1        }
  60          /********************************************************/
  61             void  zd3()  interrupt 3              //T1中断用来扫描数码管和计800MS启动模块
  62            {
  63   1               TH1=0xf8;
  64   1               TL1=0x30;
  65   1               Display();
  66   1               timer++;
  67   1               if(timer>=400)
  68   1               {
  69   2                timer=0;
  70   2                TX=1;                                 //800MS  启动一次模块
  71   2                _nop_(); 
  72   2                _nop_(); 
  73   2                _nop_(); 
  74   2                _nop_(); 
  75   2                _nop_(); 
  76   2                _nop_(); 
  77   2                _nop_(); 
  78   2                _nop_(); 
  79   2                _nop_(); 
  80   2                _nop_(); 
  81   2                _nop_(); 
  82   2                _nop_(); 
  83   2                _nop_(); 
  84   2                _nop_(); 
  85   2                _nop_(); 
  86   2                _nop_(); 
  87   2                _nop_();
  88   2                _nop_(); 
  89   2                _nop_(); 
  90   2                _nop_(); 
  91   2                _nop_();
  92   2                TX=0;
  93   2               } 
  94   1        }
  95          /*********************************************************/
  96          
  97                  void  main(  void  )
  98          
  99            {  
 100   1          TMOD=0x11;             //设T0为方式1,GATE=1;
 101   1              TH0=0;
 102   1              TL0=0;          
 103   1              TH1=0xf8;                  //2MS定时
 104   1              TL1=0x30;
 105   1              ET0=1;             //允许T0中断
 106   1              ET1=1;                     //允许T1中断
 107   1              TR1=1;                     //开启定时器
 108   1              EA=1;                      //开启总中断
 109   1      
 110   1              while(1)
 111   1              {
 112   2               while(!RX);            //当RX为零时等待
 113   2               TR0=1;                     //开启计数
 114   2               while(RX);                     //当RX为1计数并等待
 115   2               TR0=0;                         //关闭计数
C51 COMPILER V8.02   耞宽测量                                                              10/28/2009 20:41:11 PAGE 3   

 116   2           Conut();                   //计算
 117   2              }
 118   1      
 119   1        }
 120                          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    410    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28    ----
   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 + -