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

📄 ultrasonic.lst

📁 超声波程序.rar
💻 LST
字号:
C51 COMPILER V8.12   ULTRASONIC                                                            09/05/2009 17:42:31 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE ULTRASONIC
OBJECT MODULE PLACED IN ultrasonic.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ultrasonic.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG52.h>                  
   2          #include<stdio.h>
   3          
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          extern char *itoa(int  i); 
   7          
   8          uint code SEG7[16]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,
   9                               0x30,0x25,0xa9,0x26,0xa1,0xb1};//0 1 2 3 4 5 6 7 8 9 A-E
  10          
  11          uchar code ACT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管显示位置
  12          
  13          uchar dis[4];
  14          sbit trig=P1^0;
  15          sbit echo=P1^1;
  16          
  17          void delay(uint k)
  18          {
  19   1          uint i,j;
  20   1          for(i=0;i<k;i++)
  21   1          {
  22   2              for(j=0;j<121;j++)
  23   2              {;}
  24   2          }
  25   1      }
  26          
  27          void display(uint dis)
  28          {
  29   1          P0=SEG7[dis%10];
  30   1          P2=ACT[3];
  31   1          delay(1);
  32   1      
  33   1          P0=SEG7[(dis/10)%10];
  34   1          P2=ACT[2];
  35   1          delay(1); 
  36   1      
  37   1              P0=SEG7[(dis/100)%10];
  38   1              P2=ACT[1];
  39   1              delay(1);
  40   1      
  41   1              P0=SEG7[dis/1000];
  42   1              P2=ACT[0];
  43   1              delay(1);
  44   1      }  
  45          
  46          void display2(uint Hi,uint Low)
  47          {
  48   1          P0=SEG7[Hi%10];
  49   1          P2=ACT[3];
  50   1          delay(1);
  51   1      
  52   1          P0=SEG7[(Hi/10)%10];
  53   1          P2=ACT[2];
  54   1          delay(1); 
  55   1      
C51 COMPILER V8.12   ULTRASONIC                                                            09/05/2009 17:42:31 PAGE 2   

  56   1              P0=SEG7[(Hi/100)%10];
  57   1              P2=ACT[1];
  58   1              delay(1);
  59   1      
  60   1      /*      P0=SEG7[Hi/1000];
  61   1              P2=ACT[0];
  62   1              delay(1);
  63   1       */
  64   1          //Low
  65   1          P0=SEG7[Low%10];
  66   1          P2=ACT[7];
  67   1          delay(1);
  68   1      
  69   1          P0=SEG7[(Low/10)%10];
  70   1          P2=ACT[6];
  71   1          delay(1); 
  72   1      
  73   1              P0=SEG7[(Low/100)%10];
  74   1              P2=ACT[5];
  75   1              delay(1);
  76   1      
  77   1      /*      P0=SEG7[Low/1000];
  78   1              P2=ACT[4];
  79   1              delay(1);   */
  80   1      }
  81          
  82          void delay10us()    
  83          {
  84   1          uchar i;
  85   1          for(i=11;i>0;i--);
  86   1      }
  87          
  88          void init()
  89          {
  90   1          TMOD=0x21;//模式1
  91   1          TH1=0xf3;//4800bps fosc=12M
  92   1          TL1=0xf3;
  93   1          TR0=0;
  94   1          trig=0;                             
  95   1          echo=0;
  96   1          TH0=0;
  97   1          TL0=0;
  98   1          TCON=0x00;
  99   1          SCON=0x50;//SM0=0 SM1=1 SM2=0 REN=1 TB8=0 R8=0 TI=0 RI=0
 100   1          PCON=0x80;//SMOD=1
 101   1          TR1=1;
 102   1          ES=1;
 103   1          EA=1;
 104   1      }
 105          
 106          uint getDistance()
 107          {
 108   1          uint i=29412;//5m来回需要的时间(us)   (5*2/340)*1000000
 109   1          TR0=0;
 110   1          TH0=0;
 111   1          TL0=0;
 112   1          //接收信号端置0
 113   1          echo=0;
 114   1          //开始触发
 115   1          trig=1;
 116   1          //延时10微秒
 117   1          delay10us();
C51 COMPILER V8.12   ULTRASONIC                                                            09/05/2009 17:42:31 PAGE 3   

 118   1          //停止触发                         
 119   1          trig=0;
 120   1          //没有信号返回并且在5米障碍物信号返回需要的时间前则等待 (无信号即时返回,防止死循环,阻碍其它程序的执

⌨️ 快捷键说明

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