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

📄 main.lst

📁 这是一个简单的步进电机的程序,用C51编写,主要可以定时控制电机进行180度的旋转
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  12/04/2007 01:27:31 PAGE 1   


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

stmt level    source

   1          #include <reg51.h>
   2          #define uchar unsigned char
   3          
   4          sbit key_cycleless=P3^3;
   5          sbit key_start=P3^4;
   6          sbit key_reset=P3^2;
   7          sbit key_set=P1^5;//定义键盘
   8          sbit key_add=P1^6;
   9          sbit key_esc=P1^7;
  10          sbit key_pause=P3^5;
  11          
  12          extern bit dir_flag;
  13          extern bit Glint_enable_flag;
  14          extern uchar Dis_bit_p;
  15          extern uchar Counter;
  16          extern void time_set();
  17          extern void run();
  18          extern void step_motor();
  19          uchar Time[5]={0,0,0,0,0,};//秒百位,秒十位,秒个位,循环十位,循环个位
  20          bit Second_flag;
  21          bit Run_mode;
  22          bit volatile Glint_time_flag;
  23          bit Time_set_mode;
  24          bit Pause_flag;
  25          bit reset_flag;
  26          bit reset_mode;
  27          /***********延时程序约10MS****************/
  28          
  29          void delay()
  30          {
  31   1       unsigned char i,j;
  32   1       for(i=0;i<50;i++)
  33   1      
  34   1       for(j=0;j<100;j++);
  35   1      }
  36            
  37          
  38          /*========================T0中断=============================*/
  39          void timer0() interrupt 1 using 1
  40          {
  41   1       unsigned int time;
  42   1       unsigned int sndacc;  /*秒累加器*/
  43   1       sndacc=sndacc+1;
  44   1       
  45   1       if(sndacc==4000)
  46   1       {
  47   2        
  48   2        Second_flag=1;
  49   2      
  50   2        if(Second_flag==1)//一秒时间到
  51   2        {
  52   3         time=Time[0]*100+Time[1]*10+Time[2];
  53   3         time--;
  54   3         Time[0]=time/100;
  55   3         Time[1]=(time-(time/100)*100)/10;
C51 COMPILER V7.06   MAIN                                                                  12/04/2007 01:27:31 PAGE 2   

  56   3         Time[2]=(time-(time/100)*100)%10;
  57   3         
  58   3       /*  
  59   3      Time[2]--;
  60   3      
  61   3         if(Time[2]==0)
  62   3         {
  63   3          if(Time[1]!=0)
  64   3          {
  65   3           Time[1]--;
  66   3           Time[2]=9;
  67   3          }
  68   3          else
  69   3           if(Time[0]!=0)
  70   3           {
  71   3            Time[0]--;
  72   3            Time[1]=9;
  73   3                Time[2]=9;
  74   3           }
  75   3           else
  76   3            Time[2]=0;
  77   3         } 
  78   3      */
  79   3         Second_flag=0;
  80   3        }
  81   2        sndacc=0;
  82   2       }
  83   1      }
  84          
  85          void reset()//////////////////////////////////////////////////
  86          {
  87   1       while(key_reset==0)
  88   1       key_reset=1;
  89   1      reset_mode=1;
  90   1       reset_flag=1;
  91   1       dir_flag=1;
  92   1       TR0=0;
  93   1       Second_flag=0;
  94   1       Time_set_mode=0;
  95   1       Run_mode=0;
  96   1       Pause_flag=0;
  97   1       Glint_time_flag=0;
  98   1       Counter=0;
  99   1       Glint_enable_flag=0;
 100   1       Dis_bit_p=0;
 101   1       Time[0]=10;
 102   1       Time[1]=10;
 103   1       Time[2]=10;
 104   1       Time[3]=10;
 105   1       Time[4]=10;//显示"--"
 106   1       key_cycleless=1;
 107   1       key_start=1;
 108   1       key_reset=1;
 109   1       key_set=1;
 110   1       key_add=1;
 111   1       key_esc=1;
 112   1      
 113   1       
 114   1      }
 115          
 116          void interrupt_int0 () interrupt 0 using 3
 117          {
C51 COMPILER V7.06   MAIN                                                                  12/04/2007 01:27:31 PAGE 3   

 118   1       reset();
 119   1      }
 120          
 121          
 122          void pause()
 123          {
 124   1       Pause_flag=1;
 125   1       Glint_enable_flag=1;
 126   1       while(Pause_flag==1)
 127   1       {
 128   2       TR0=0;
 129   2      
 130   2       if(key_start==0)
 131   2       {
 132   3        delay();
 133   3        if(key_start==0)
 134   3        {
 135   4         while(key_start==0)
 136   4         key_start=1;
 137   4         TR0=1;
 138   4         Pause_flag=0;
 139   4         Glint_enable_flag=0;
 140   4        }
 141   3       }
 142   2      
 143   2      
 144   2      
 145   2       }
 146   1      }
 147          
 148          main()
 149          {
 150   1       key_cycleless=1;
 151   1       key_start=1;
 152   1       key_reset=1;
 153   1       key_set=1;
 154   1       key_add=1;
 155   1       key_esc=1;
 156   1      
 157   1      
 158   1       if(key_cycleless==0)//如果是无限循环,则显示"--"
 159   1       {
 160   2        Time[4]=10;
 161   2        Time[3]=10;
 162   2       }
 163   1       
 164   1       TMOD&=0xf0;
 165   1       TMOD|=0x02;
 166   1       TH0=0x1a;//250us
 167   1       TL0=0x1a;
 168   1       ET0=1;
 169   1      
 170   1      
 171   1       TMOD&=0x0f;
 172   1       TMOD|=0x10;//T1工作方式1
 173   1       TH1=0xf8;
 174   1       TL1=0xcd;
 175   1       ET1=1;
 176   1       TR1=1;
 177   1       EA=1;
 178   1      
 179   1       IT0=1;
C51 COMPILER V7.06   MAIN                                                                  12/04/2007 01:27:31 PAGE 4   

 180   1       EX0=1;
 181   1       //@@@@reset();
 182   1       while(1)
 183   1       {
 184   2      
 185   2        if(key_set==0)
 186   2        {
 187   3         delay();
 188   3         if(key_set==0)
 189   3         {
 190   4          while(key_set==0)
 191   4          key_set=1;
 192   4          Counter=1;//@@@@@@@@@@@@@@@@@@@@@@@@@
 193   4      
 194   4          //while(key_set==0)
 195   4         // key_set=1;
 196   4          time_set();
 197   4         }
 198   3        }
 199   2      if(reset_mode==0)
 200   2       { if(key_start==0)
 201   3        {
 202   4         delay();
 203   4         if(key_start==0)
 204   4         {
 205   5          while(key_start==0)
 206   5          key_start=1;
 207   5          TR0=1;
 208   5          run();
 209   5         }
 210   4        }
 211   3       }
 212   2        
 213   2       }
 214   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    382    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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