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

📄 main.lst

📁 测量车的车速和轴距的文件(包括原理图和程序).rar
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  05/29/2010 11:53:43 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #define uchar unsigned char
   3          #define uint  unsigned int
   4          #define juli 1
   5          //------------------- 定义1602液晶控制管脚-------------------------------------------------
   6          sbit RS=P2^0;             
   7          sbit RIW=P2^1;
   8          sbit E=P2^2;
   9          sbit int0=P3^2;  
  10          sbit int1=P3^3;  
  11          sbit kuan=P3^4;  
  12          uchar i;
  13          
  14          uint timecount=0;
  15          uchar biaozhi=0;  //第一个开关
  16          float jishi1=0;
  17          float jishi2=0;
  18          float speed;
  19          float length;
  20          
  21          //-------------------------定义数组----------------------------------------------------------
  22          uchar tab[16]="                ";
  23          
  24          
  25          void delay(uint xms)   //按键扫描延时子程序
  26          {
  27   1         uint i,j;
  28   1         for(i=xms;i>0;i--)
  29   1            for(j=110;j>0;j--);
  30   1      }
  31          //---------------------1602写指令时序开始------------------------------------------------------
  32          void wi(uchar com)        
  33          {
  34   1        uint i=200;
  35   1        RS=1;
  36   1        RIW=1;
  37   1        RS=0;
  38   1        RIW=0;
  39   1        E=0;
  40   1        E=1;
  41   1        P0=com;
  42   1        while(i--);
  43   1        E=0;
  44   1      }
  45          //---------------------1602写指令时序结束---------------------------------------------------
  46          //---------------------1602写数据时序开始--------------------------------------------------
  47          void wd(uchar dat)       
  48          {
  49   1         uint i=200;
  50   1         RS=0;
  51   1         RIW=1;
  52   1         RS=1;
  53   1         RIW=0;
  54   1         E=0;
  55   1         E=1;
C51 COMPILER V7.50   MAIN                                                                  05/29/2010 11:53:43 PAGE 2   

  56   1         P0=dat;
  57   1         while(i--);
  58   1         E=0;
  59   1      }
  60          //---------------------1602写数据时序结束------------------------------------------------
  61          void chushi()            //1602初始化程序
  62          {
  63   1      
  64   1         wi(0x01);             //清屏
  65   1         wi(0x06);             //设置输入方式  AC自动加1,显示不发生移位
  66   1         wi(0x0F);             //显示开关控制 开显示 开光标 闪烁
  67   1         wi(0x38);             //功能设置 双行显示 5*8点阵   八位数据
  68   1      }
  69          
  70          void xianshi_speed(void)
  71          {
  72   1      unsigned long zancun=speed/1000;
  73   1        tab[6]=zancun%10+0x30;
  74   1        zancun=zancun/10;
  75   1        tab[5]=zancun%10+0x30;
  76   1        zancun=zancun/10;
  77   1        tab[3]='.';
  78   1        tab[4]=zancun%10+0x30;
  79   1        zancun=zancun/10;
  80   1        tab[2]=zancun%10+0x30;
  81   1        zancun=zancun/10;
  82   1        tab[1]=zancun%10+0x30;
  83   1        zancun=zancun/10;
  84   1        tab[0]=zancun%10+0x30;
  85   1        wi(0x89); 
  86   1        for(i=0;i<16;i++)
  87   1           {wd(tab[i]);}         //显示数组
  88   1      }
  89          void xianshi_length(void)
  90          {
  91   1        unsigned long zancun=length/100;
  92   1        tab[6]=zancun%10+0x30;
  93   1        zancun=zancun/10;
  94   1        tab[5]=zancun%10+0x30;
  95   1        zancun=zancun/10;
  96   1        tab[4]='.';
  97   1        tab[3]=zancun%10+0x30;
  98   1        zancun=zancun/10;
  99   1        tab[2]=zancun%10+0x30;
 100   1        zancun=zancun/10;
 101   1        tab[1]=zancun%10+0x30;
 102   1        zancun=zancun/10;
 103   1        tab[0]=zancun%10+0x30;
 104   1        wi(0xc9); 
 105   1        for(i=0;i<16;i++)
 106   1           {wd(tab[i]);}         //显示数组
 107   1      }
 108          
 109          void main()
 110          {
 111   1          IT0=1;
 112   1          EX0=1;
 113   1      
 114   1          IT1=1;
 115   1          EX1=1;
 116   1      
 117   1          PT1=1;
C51 COMPILER V7.50   MAIN                                                                  05/29/2010 11:53:43 PAGE 3   

 118   1      
 119   1          TMOD=0x11;                 //T0工作为16位计数器(方式1),T1工作方式为16位定时器 
 120   1          TH0=0;                     //计数为65536                      
 121   1          TL0=0;                     // 
 122   1          TH1=0;     //定时器采用定时4ms.  初值为4000 
 123   1          TL1=0; 
 124   1          //TR1=1;                    //TR1=1,控制开关闭合,计数脉冲进入T1计数器,启动定时 
 125   1          //TR0=1;                    //TR0=1,控制开关闭合,计数脉冲进入T1计数器,启动计数 
 126   1          ET0=1;                    //定时器0开中断 
 127   1          ET1=1;                    //定时器1开中断
 128   1      
 129   1          EA=1;
 130   1      
 131   1      
 132   1         chushi();             //初始化
 133   1      
 134   1         wi(0x80);
 135   1         wd('s');
 136   1         wd('p');
 137   1         wd('d');
 138   1         wd('(');
 139   1         wd('m');
 140   1         wd('/');
 141   1         wd('s');
 142   1         wd(')');
 143   1         wd('=');
 144   1         wi(0xc0);
 145   1         wd('l');
 146   1         wd('e');
 147   1         wd('n');
 148   1         wd('(');
 149   1         wd('c');
 150   1         wd('m');
 151   1         wd(')');
 152   1         wd(' ');
 153   1         wd('=');
 154   1         while(1)
 155   1        {
 156   2          speed=41000/jishi1*1000000;
 157   2          length=speed*jishi2/1000000;
 158   2          if(speed>41000000000&&biaozhi==0)
 159   2              {
 160   3                speed=0;
 161   3                length=0;
 162   3                biaozhi=0;
 163   3                EX0=0;
 164   3                EX1=1;
 165   3              }
 166   2          xianshi_speed();
 167   2          xianshi_length();
 168   2         if(kuan==0)
 169   2         {
 170   3           wi(0xc7);
 171   3           wd(0xff);
 172   3         }
 173   2         else if(kuan==1)
 174   2         {
 175   3           wi(0xc7);
 176   3           wd(' ');
 177   3         }
 178   2        }
 179   1      
C51 COMPILER V7.50   MAIN                                                                  05/29/2010 11:53:43 PAGE 4   

 180   1      }
 181          
 182          
 183          void INT0_interrupt() interrupt 0 using 1
 184          {
 185   1        //delay(30);
 186   1        //int0=1;
 187   1        delay(10);
 188   1        if(int0==0)
 189   1        {
 190   2          switch(biaozhi)
 191   2          {
 192   3           case 1:
 193   3                {
 194   4             jishi1=timecount*65536+TH1*256+TL1;
 195   4                 EX0=0;
 196   4                 EX1=1;
 197   4             biaozhi=2;
 198   4            }break;
 199   3           case 3:   
 200   3            {
 201   4                biaozhi=0;
 202   4                 EX0=0;
 203   4                 EX1=1;
 204   4             }break;
 205   3                 default :break;
 206   3          } 
 207   2        }
 208   1      }
 209          
 210          void INT1_interrupt() interrupt 2 using 1
 211          {
 212   1        //delay(30);
 213   1        //int1=1;
 214   1        delay(10);
 215   1        if(int1==0)
 216   1        {
 217   2          if(biaozhi==0)  //开始计数
 218   2          {
 219   3           biaozhi=1;
 220   3           TR1=1;
 221   3      
 222   3               EX1=0;
 223   3               EX0=1;
 224   3          }
 225   2              else if(biaozhi==2)
 226   2              {
 227   3                 jishi2=timecount*65536+TH1*256+TL1;
 228   3             biaozhi=3;
 229   3             TR1=0;          //停止计时
 230   3             TH1=0;               //计数初值重装载 
 231   3             TL1=0; 
 232   3             timecount=0;
 233   3      
 234   3                 EX1=0;
 235   3                 EX0=1;
 236   3              }
 237   2        }
 238   1      }
 239          
 240          
 241          void t1(void) interrupt 3 using 0       //T1中断服务 
C51 COMPILER V7.50   MAIN                                                                  05/29/2010 11:53:43 PAGE 5   

 242          { 
 243   1        TH1=0;               //计数初值重装载 
 244   1        TL1=0; 
 245   1        timecount++; 
 246   1         if(timecount==65535) 
 247   1          {
 248   2                  timecount=0;
 249   2          }
 250   1      }
 251          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1260    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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