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

📄 dianji001.lst

📁 用L298作为驱动器
💻 LST
字号:
C51 COMPILER V8.08   DIANJI001                                                             08/13/2008 13:50:26 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE DIANJI001
OBJECT MODULE PLACED IN dianji001.OBJ
COMPILER INVOKED BY: D:\电子设计程序\keil\C51\BIN\C51.EXE dianji001.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**************************************************************
   2          **项目名称:两相混合式步进电机驱动程序      
   3          **功能描述:
   4          **说    明:
   5          /**************************************************************
   6          头文件预处理:
   7          **************************************************************/
   8          #include <reg52.h>
   9          #include <math.h>
  10          #include <stdio.h>
  11          /**************************************************************
  12          数据类型宏定义:
  13          **************************************************************/
  14          #define uchar unsigned char
  15          #define uint  unsigned int
  16          /*============================================================
  17          I/O Ports' Definition:
  18          ============================================================*/
  19          sbit            IN1=P2^0;            
  20          sbit            IN2=P2^1;   
  21          sbit            IN3=P2^2;            
  22          sbit            IN4=P2^3;         
  23          sbit            Led_Clk=P1^5;   //clock port of 74HC164
  24          sbit            Led_Dat=P1^6;   //data port of 74HC164
  25          sbit            Led_Cs=P1^7;    //Led display controlling(using BJT's base)
  26          /**************************************************************
  27          全局变量声明:
  28          **************************************************************/
  29          uint    t=15;
  30          uchar   fx;
  31          uchar   power;
  32          uchar   step0=0;
  33          uchar   step1=0;
  34          uchar   Cnt0=0;
  35          uchar   Cnt1=0;
  36          uchar   key_value,key_value_temp;
  37          /**************************************************************
  38          函数说明:
  39          **************************************************************/
  40          void   Led_Display();
  41          void   Led_Write(uchar leddat);
  42          void   Key_Func();
  43          //void  zheng();
  44          //void  fan();
  45          void   delay(uint t);
  46          void   delay1();
  47          /**************************************************************
  48          code tab:
  49          **************************************************************/
  50          uchar code tab[]={
  51                  0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,//0-9
  52                  0xFF//dark all
  53          };
  54          
  55          
C51 COMPILER V8.08   DIANJI001                                                             08/13/2008 13:50:26 PAGE 2   

  56          void main()
  57          {       
  58   1              TMOD=0x11;         //甚至定时器0/1的工作方式
  59   1              ET0=1;                  //允许定时器0中断
  60   1              ET1=1;                  //允许定时器1中断
  61   1              EA=1;                           //允许总中断
  62   1              
  63   1              while(1)
  64   1              {       
  65   2                      Key_Func();
  66   2                      Led_Display();
  67   2                      
  68   2              }
  69   1      
  70   1      }
  71          
  72          
  73          /**************************************************************
  74          **函数名称:Key_Func
  75          **功能描述:键盘处理
  76          ***************************************************************
  77          **调用函数:None
  78          **参    数:None
  79          **返 回 值:None              
  80          **************************************************************/ 
  81          void Key_Func()
  82          {
  83   1             P1=0xff;
  84   1               
  85   1             key_value=P1;
  86   1             key_value=(key_value&0x1f);
  87   1             do
  88   1             {
  89   2                key_value_temp=P1;
  90   2                key_value_temp=(key_value_temp&0x1f);
  91   2                delay1();
  92   2             }while(key_value_temp!=0x1f);
  93   1      
  94   1             switch(key_value)
  95   1             {
  96   2      
  97   2              case 0x1e:              if(t<995) t+=5;
  98   2                                                      break;  
  99   2                                 
 100   2              case 0x1d:              if(t>5) t-=5;
 101   2                                              break;
 102   2      
 103   2              case 0x1b:              fx=0;           //正向向运转     
 104   2                                                      power=1;
 105   2                                                      TH0=0xBC;               
 106   2                                                      TL0=0xb0;                                               
 107   2                                                      TR1=0;                   //关闭定时器1
 108   2                                                      TR0=1;                  //启动定时器0
 109   2                                                      IN1=0;
 110   2                                                      IN2=1;
 111   2                                                      IN3=0;
 112   2                                                      IN4=1;
 113   2                                              break;              
 114   2      
 115   2              case 0x17:              fx=1;                   //反向运转  
 116   2                                                      power=1;
 117   2                                                      TH1=0xBC;               
C51 COMPILER V8.08   DIANJI001                                                             08/13/2008 13:50:26 PAGE 3   

 118   2                                                      TL1=0xb0;
 119   2                                                      TR0=0;                   //关闭定时器0
 120   2                                                      TR1=1;                  //启动定时器1                                   
 121   2                                                      IN1=0;
 122   2                                                      IN2=1;
 123   2                                                      IN3=0;
 124   2                                                      IN4=1;  
 125   2      
 126   2                                                      break;           
 127   2      
 128   2              case 0x0f:              power=0;        //停止运转  
 129   2                                                      TR0=0;                   //关闭定时器0
 130   2                                                      TR1=0;                  //关闭定时器1
 131   2      
 132   2      
 133   2                      default:   break;
 134   2             }
 135   1      }
 136          
 137          /*==================Key_Func 函数结束=======================*/
 138          
 139          
 140          
 141          /**************************************************************
 142          **函数名称:Led_Display
 143          **功能描述:LED数码管显示         
 144          ***************************************************************
 145          **调用函数:Led_Write
 146          **参    数:None
 147          **返 回 值:None
 148          ************************************************************/
 149          
 150          void Led_Display()
 151          {
 152   1              uint p=t ;
 153   1              uchar s ,i;
 154   1              Led_Cs=1;
 155   1              for     (i=0;i<3;i++)
 156   1              {
 157   2                      s=p%10;
 158   2                      p=p/10; 
 159   2                      Led_Write(s);
 160   2              }
 161   1                                                 //输出转速   
 162   1              Led_Write(10);                          //全黑,作为分割点        
 163   1              Led_Write(fx);                          //运转方向标识符  1为正向,0为反向 
 164   1              Led_Write(power);
 165   1              Led_Cs=0;
 166   1              delay1();                        //输出运转标识符   1为运转,0为停转 
 167   1      }       
 168          /********************Led_Display 函数结束*********************/
 169          
 170          /**************************************************************
 171          **函数名称:Led_Write
 172          **功能描述:移位寄存器送出一个字节的数据
 173          ***************************************************************
 174          **调用函数:None
 175          **参    数:None
 176          **返 回 值:None
 177          **************************************************************/
 178          void   Led_Write(uchar leddat)
 179          {
C51 COMPILER V8.08   DIANJI001                                                             08/13/2008 13:50:26 PAGE 4   

 180   1          uchar i;
 181   1              uchar dat=tab[leddat];
 182   1          for(i=0;i<8;i++)
 183   1         {
 184   2            if((dat&0x80)==0)  Led_Dat=0;
 185   2              else Led_Dat=1;
 186   2      
 187   2                 Led_Clk=0;           //时钟端产生脉冲    
 188   2                 Led_Clk=1;           //送出一位数据    
 189   2                 dat<<=1;                                                               
 190   2         }
 191   1      }
 192          
 193          /*********************Led_Write 函数结束**********************/
 194          /**************************************************************
 195          **函数名称:delay
 196          **功能描述:延时
 197          ***************************************************************
 198          **调用函数:None
 199          **参    数:None
 200          **返 回 值:None
 201          **************************************************************/
 202          
 203          void delay1()
 204          {
 205   1         uchar i,k;
 206   1         for(i=0;i<=50;i++)
 207   1         for(k=0;k<15;k++)
 208   1         {
 209   2             ;
 210   2         }
 211   1      }
 212          
 213          
 214          /********************* delay 函数结束**********************/
 215           void Tmr0_ISR() interrupt 1 using 1             //定时器0中断    正转 
 216          {
 217   1              Cnt0++;
 218   1          if(Cnt0==t) 
 219   1              {
 220   2                      Cnt0=0 ;
 221   2                      switch(step0)
 222   2                      {
 223   3                              case 0: IN1=1;
 224   3                                              IN2=0;
 225   3                                              break;
 226   3                              case 1: IN3=1;
 227   3                                              IN4=0;
 228   3                                              break;
 229   3                              case 2: IN2=1;
 230   3                                              IN1=0;
 231   3                                              break;
 232   3                              case 3: IN4=1;
 233   3                                              IN3=0;
 234   3                                              break;                            //正转输出顺序 
 235   3                      }
 236   2                      if(step0==3) step0=0;
 237   2                      else step0++;
 238   2                              
 239   2              } 
 240   1              TH0=0x3c;               
 241   1              TH0=0xb0;
C51 COMPILER V8.08   DIANJI001                                                             08/13/2008 13:50:26 PAGE 5   

 242   1      }
 243          /**************************************************************/
 244          void Tmr1_ISR() interrupt 3 using 2   //定时器1                           反转 
 245          {
 246   1              Cnt1++;
 247   1              if(Cnt1==t) 
 248   1              {
 249   2                      Cnt1=0 ;
 250   2                      switch(step1)
 251   2                      {
 252   3                              case 0: IN4=1;
 253   3                                              IN3=0;
 254   3                                              break;
 255   3                              case 1: IN2=1;
 256   3                                              IN1=0;
 257   3                                              break;
 258   3                              case 2: IN3=1;
 259   3                                              IN4=0;
 260   3                                              break;
 261   3                              case 3: IN1=1;
 262   3                                              IN2=0;
 263   3                                              break;                          //反转输出顺序 
 264   3                      }
 265   2                      if(step1==3) step1=0;
 266   2                      else step1++;
 267   2              }
 268   1              TH1=0x3c;               
 269   1              TH1=0xb0;
 270   1      }


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