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

📄 main.lst

📁 在别人有错误的基础上改进的超声波测距程序
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  12/16/2007 21:25:43 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include "intrins.h"
   3          #include "Lcd1602.h"
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          
   7          sbit BEEP = P1^6;  //报警提示口
   8          sbit vout = P1^7;  //脉冲发送口
   9          sbit P3_2 = P3^2;  //中断接收口
  10          //sbit INT = P1^6; 
  11          bit flag;
  12          
  13          //unsigned char discol[4]={0xef,0xdf,0xbf,0x7f};
  14          unsigned char code Anum_code[]={"0123456789"};
  15          //unsigned char disbuf[4]={0,1,2,3};
  16          float high,low;
  17          unsigned char qian,bai,shi,ge;
  18          //unsigned char j=600;
  19          
  20          /*void delay_1ms(void)  //12mhz delay 1.01ms
  21          {
  22             unsigned char x,y;   
  23             x=3;
  24             while(x--) 
  25            {
  26               y=40;
  27               while(y--);
  28            }
  29          }
  30          
  31          void delay_1us(unsigned char i) //i=1, 5us; i=2,7us; i=3,9us
  32          { 
  33              while(--i); 
  34          }*/
  35          
  36          void delay_50us(unsigned int t) // t=100, 5ms; t=1000, 50ms
  37          {
  38   1       unsigned char j;  
  39   1       for(;t>0;t--)   
  40   1        for(j=19;j>0;j--);
  41   1      }
  42          
  43          /*void delay_50ms(unsigned int t) // t=10, 500ms; t=100, 5s;
  44          {
  45           unsigned int j; 
  46           for(;t>0;t--) 
  47            for(j=6245;j>0;j--);
  48          }*/
  49          void display(void)
  50          {
  51   1        Write_Comm(0x01); //清显示屏
  52   1        Write_Comm(0x80);
  53   1        Write_Data(Anum_code[qian]);
  54   1        //Write_Comm(0x80);
  55   1        Write_Data(Anum_code[bai]);
C51 COMPILER V7.50   MAIN                                                                  12/16/2007 21:25:43 PAGE 2   

  56   1        //Write_Comm(0x80);
  57   1        Write_Data(Anum_code[shi]);
  58   1        //Write_Comm(0x83);
  59   1        Write_Data(Anum_code[ge]);
  60   1      }
  61          
  62          void work(void)
  63          { 
  64   1        //unsigned char qian,bai,shi,ge;
  65   1        float value;
  66   1        value=(high*256+low)*17/100;
  67   1        qian=value/1000;
  68   1        bai=(value-qian*1000)/100;
  69   1        shi=(value-qian*1000-bai*100)/10;
  70   1        ge=value-qian*1000-bai*100-shi*10;
  71   1        if(value<=1000)
  72   1        {
  73   2          BEEP=0;
  74   2        }
  75   1        else
  76   1        {
  77   2          BEEP=1;
  78   2        }
  79   1        /*disbuf[0] = qian;
  80   1        disbuf[1] = bai;
  81   1        disbuf[2] = shi;
  82   1        disbuf[3] = ge;*/
  83   1      }
  84          main()
  85          { 
  86   1        //unsigned char i;
  87   1        //unsigned int t;
  88   1        Lcd_Init();  
  89   1        TMOD = 0x11;
  90   1        TH0 =  0;
  91   1        TL0 = 0;
  92   1        TH1 = 0;
  93   1        TL1 = 0;
  94   1        P0 = 0xff;
  95   1        P1 = 0xff;
  96   1        P2 = 0xff;
  97   1        P3 = 0xff;
  98   1        //EX0 = 1;         //允许外部中断0
  99   1        ET1 = 1;         //允许定时器1中断
 100   1        EA = 1;
 101   1        TR1 = 1;
 102   1        while(1)
 103   1       {
 104   2        //display();
 105   2        if(flag)
 106   2        {
 107   3          EA = 0;
 108   3          work();
 109   3          //EA = 0;
 110   3          display();
 111   3              //delay_50ms(100);
 112   3              //for(i=5;i>0;i--) 
 113   3             //for(t=6245;t>0;t--);
 114   3          flag = 0;
 115   3          ET0 = 0;        //禁止定时器0中断
 116   3          TH0 = 0;
 117   3          TL0 = 0;
C51 COMPILER V7.50   MAIN                                                                  12/16/2007 21:25:43 PAGE 3   

 118   3          ET1 = 1;
 119   3              TR1 = 1;
 120   3          EA = 1;
 121   3        }
 122   2       }
 123   1      }
 124          
 125          void INTT1() interrupt 3 
 126          { 
 127   1        unsigned char i;
 128   1        EA = 0;
 129   1        TR1 = 0;
 130   1        EX0 = 0;           //禁止外部中断
 131   1        TH0 = 0;
 132   1        TL0 = 0;
 133   1        TH1 = 0;
 134   1        TL1 = 0;
 135   1        EA = 1;
 136   1        TR0 = 1;
 137   1        for(i=0;i<4;i++)
 138   1         {
 139   2           vout = ~vout;
 140   2           _nop_();
 141   2           _nop_();
 142   2           _nop_();
 143   2           _nop_();
 144   2           _nop_();
 145   2           _nop_();
 146   2           _nop_();
 147   2           _nop_();
 148   2         }
 149   1         delay_50us(40);
 150   1         EX0 = 1;        //开启外部中断
 151   1         //ET0 = 1;          //允许定时器0中断
 152   1         /*if(j==600)
 153   1         {
 154   1         j=j+200;
 155   1         TR0 = 1;
 156   1         EX0 = 1;        //开启外部中断  
 157   1         delay_50us(j);
 158   1         INT=0; 
 159   1         }
 160   1         else
 161   1         {
 162   1         j=j-200;
 163   1         TR0 = 1;
 164   1         EX0 = 1;        //开启外部中断  
 165   1         delay_50us(j);
 166   1         INT=0; 
 167   1         }*/
 168   1         
 169   1      }
 170          
 171          void PINT0() interrupt 0 
 172          {
 173   1        //_nop_();
 174   1        TR0 = 0;       //关闭定时器0
 175   1        EX0 = 0;
 176   1        EA = 0;
 177   1        low = TL0;
 178   1        high = TH0;
 179   1        flag = 1;
C51 COMPILER V7.50   MAIN                                                                  12/16/2007 21:25:43 PAGE 4   

 180   1        while(P3_2==0)
 181   1        {
 182   2          //TR0 = 0;       //关闭定时器0
 183   2              //EX0 = 0;
 184   2          //EA = 0;
 185   2          //low = TL0;
 186   2          //high = TH0;
 187   2          //low = 0x50;
 188   2          //high = 0xc3;
 189   2          //TH0 = 0;
 190   2          //TL0 = 0;
 191   2              //INT=1;
 192   2          //flag = 1;    
 193   2              //Write_Comm(0x01); //清显示屏
 194   2              //Write_Comm(0x8f);
 195   2          //Write_Data('k');
 196   2              //delay_50ms(10);
 197   2        }  
 198   1      }
 199          
 200          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    763    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       4
   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 + -