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

📄 timerauto.lst

📁 motor_control.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   TIMERAUTO                                                             09/05/2007 11:19:18 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TIMERAUTO
OBJECT MODULE PLACED IN timerauto.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timerauto.c BROWSE DEBUG OBJECTEXTEND SRC(.\timerauto.SRC)

line level    source

   1          /////////////////////////////////////
   2          //  Generated Initialization File  //
   3          /////////////////////////////////////
   4          
   5          #include "c8051F020.h"
   6          #include "intrins.h"
   7          #include "CH452CMD.H"   // 定义常用命令码及外部子程序
   8          #include "pin.h"
   9          #include "math.h"
  10          #include "key_display.h"                  
  11          
  12          
  13          //定义端口
  14          sbit LEDG       =       P3^4;
  15          sbit BACK       =       P0^4;
  16          sbit START      =       P0^5;
  17          sbit SPOKER =   P0^6;
  18          sbit IN0        =       P1^1;//左
  19          sbit IN1        =       P1^3;//中
  20          sbit IN2        =       P1^0;//右
  21          //sbit IN3      =       P1^5;//斜右
  22          //sbit IN4      =       P1^2;//斜左
  23          sbit IN5        =       P1^2;//正面左
  24          sbit IN6        =       P1^6;//正面右
  25          ulong xdata data0[15];
  26          ulong avge=0,avge0=0;
  27          uchar time1=0,time2=0,counter1=0,counter2=0;
  28          uchar a,bb,c,d,e,f,g,right,left;
  29          uchar forward=0,black=0,keykey=0,backward=0,xianshi=1;
  30          
  31          
  32          unsigned char T0_OF=0,min=0,sec=0;      //T0_OF时T0溢出次数     ,t_n=0
  33          unsigned char stage_sec=0,stage_clk_flag=0;             //stage_clk_flag为1是阶段计时标志位.不用stage_min
  34          //unsigned char stage_sec_record[];
  35          
  36          // Peripheral specific initialization functions,
  37          // Called from the Init_Device() function 
  38          
  39           
  40          void Port_IO_Init()
  41          {
  42   1          // P0.0  -  CEX0 (PCA),  Open-Drain, Digital
  43   1         // P0.1  -  CEX1 (PCA),  Open-Drain, Digital
  44   1             XBR0      = 0x10;        /*CEX0-->P0.0,CEX1-->P0.1*/
  45   1             XBR2      = 0x40;        
  46   1      }
  47          
  48          void Interrupts_Init()
  49          {   
  50   1      
  51   1              IE        = 0x0A; //使能定时器1中断//使能定时器0中断
  52   1          IP        = 0x0A;  //使定时器1,0优先级高
  53   1          EIE1      = 0x08; //使能PCA0中断
  54   1          EIE2      = 0x20;  //使能外部键盘中断
  55   1          EIP2      = 0x20;  //使外部键盘优先级高
C51 COMPILER V8.02   TIMERAUTO                                                             09/05/2007 11:19:18 PAGE 2   

  56   1      
  57   1      }
  58          
  59          // Initialization function for device,
  60          // Call Init_Device() from your main program
  61          void Init_Device(void)
  62          {
  63   1          Reset_Sources_Init();
  64   1          ADC_Init();
  65   1              PCA_Init();
  66   1              Timer_Init();
  67   1              Oscillator_Init();
  68   1          Voltage_Reference_Init();
  69   1          Port_IO_Init();
  70   1          Interrupts_Init();
  71   1      }
  72          
  73          
  74          void speedchange(uchar duty,uchar i)
  75          {
  76   1           if(i==0) PCA0CPH0 =(uchar)((100-duty)*2.56);               //把duty值转换,赋值给控制占空比的寄存器
  77   1               if(i==1) PCA0CPH1=(uchar)((100-duty)*2.56); 
  78   1      
  79   1      }
  80          ulong pingjun (void)
  81          {         uchar i;
  82   1            ulong avgad1=0,avgad=0,state=0;
  83   1                state=AD_IN();
  84   1            for(i=0;i<15;i++)
  85   1                    {
  86   2                      
  87   2                          data0[i]=state;
  88   2                          avgad+=data0[i];            
  89   2                          //delayms(10);
  90   2                    }
  91   1                 avgad=avgad/15;
  92   1                 for(i=0;i<15;i++)
  93   1                    {
  94   2                 
  95   2                           data0[i]=state;
  96   2                           avgad1+=data0[i];
  97   2                           //delayms(10);
  98   2                    }
  99   1                 avgad1=avgad1/15;
 100   1                 avge=(avgad+avgad1)/4;
 101   1                      
 102   1                 //CH452_Write(CH452_DIG1|bb);
 103   1                 //CH452_Write(CH452_DIG0|c);
 104   1                 return(avge);
 105   1      }
 106          
 107          
 108          
 109          void stage_clk_start()
 110          {       
 111   1              
 112   1              //CH452_Write(CH452_TWINKLE);
 113   1              DELAY_1US;DELAY_1US;DELAY_1US;DELAY_1US;DELAY_1US;
 114   1              stage_clk_flag=1;
 115   1              stage_sec=0;
 116   1              CH452_Write(CH452_DIG4);
 117   1              CH452_Write(CH452_DIG5 | 16);   
C51 COMPILER V8.02   TIMERAUTO                                                             09/05/2007 11:19:18 PAGE 3   

 118   1      }
 119          void stage_clk_stop()
 120          {
 121   1              stage_clk_flag=0;
 122   1              //stage_sec_record[ t_n ]=stage_sec;
 123   1              //CH452_Write(CH452_TWINKLE | 0x30);
 124   1              //t_n ++;
 125   1      }
 126          /****精确秒延时****/    
 127          
 128          void delay_s(uchar n)
 129          {       
 130   1              #pragma asm
 131   1              //USING 0
 132   1      n_:
 133   1              MOV R2,#50              //系统时钟如果分别是2M,4M,8M,16M
 134   1                                              //则R2值分别为          25,50,100,200
 135   1      R2_:
 136   1              MOV R1,#40
 137   1      R1_:
 138   1              MOV R0,#50      
 139   1      R0_:
 140   1              NOP
 141   1              NOP
 142   1              NOP
 143   1              NOP        
 144   1      
 145   1              NOP
 146   1              NOP
 147   1              NOP
 148   1              NOP             
 149   1      
 150   1              NOP
 151   1              NOP
 152   1              NOP
 153   1              NOP             
 154   1      
 155   1              NOP
 156   1              NOP
 157   1              NOP
 158   1              NOP             
 159   1      
 160   1              NOP
 161   1              NOP
 162   1              //NOP
 163   1              //NOP
 164   1              DJNZ R0,R0_       
 165   1              DJNZ R1,R1_       
 166   1              DJNZ R2,R2_       
 167   1              DJNZ n?746,n_  
 168   1              #pragma endasm
 169   1      }
*** WARNING C280 IN LINE 128 OF TIMERAUTO.C: 'n': unreferenced local variable
 170          /*void confirm(void)
 171          //{       
 172          //      uchar i;
 173                  for(i=5;i>0;i--)
 174                  {       
 175                          CH452_Write(CH452_DIG7 | i);
 176                          SPOKER=1;
 177                          delay_s(1);
 178                          SPOKER=0;
C51 COMPILER V8.02   TIMERAUTO                                                             09/05/2007 11:19:18 PAGE 4   

 179                          delay_s(1);
 180                  }
 181                  CH452_Write(CH452_DIG7);
 182                  
 183          //}*/
 184          void judgement (uchar modi,uchar modi1,uchar dem)
 185          {                         uchar i;
 186   1              if((a&&bb==0&&c==0)||(a&&bb&&c==0))
 187   1              {       left=1;
 188   2                      right=0;
 189   2                      speedchange(modi1,1);
 190   2                      speedchange(modi,0);
 191   2                      delayms(dem);
 192   2              }
 193   1              else if((a==0&&bb==0&&c)||(a==0&&bb&&c))
 194   1              {
 195   2                      left=0;
 196   2                      right=1;         
 197   2                  speedchange(modi1,0);
 198   2                      speedchange(modi,1);
 199   2                      delayms(dem);
 200   2              }
 201   1              else if(a==0&&bb&&c==0)
 202   1              {   
 203   2                      left=0;
 204   2                      right=0;
 205   2                  speedchange(modi,0);
 206   2                      speedchange(modi,1);
 207   2                      delayms(dem);
 208   2              }
 209   1              else if(a&&bb&&c)        //停止&&(d||e)
 210   1              {
 211   2                                              
 212   2                      START=0;
 213   2                      forward=0;
 214   2                      stage_clk_stop();//显示平衡后前进的时间
 215   2                      for(i=5;i>0;i--)
 216   2                  {   
 217   3                              CH452_Write(CH452_DIG7 | i);
 218   3                              SPOKER=1;
 219   3                              delay_s(1);
 220   3                              SPOKER=0;
 221   3                              delay_s(1);
 222   3                      }
 223   2                      CH452_Write(CH452_DIG7);
 224   2                      stage_clk_start();
 225   2                      backward=1;
 226   2              }         
 227   1              else //if (a==0&&bb==0&&c==0)
 228   1              {
 229   2                   if(left==1)
 230   2                       {
 231   3                              speedchange(modi1,0);
 232   3                              speedchange(modi,1); }
 233   2                       else if(right==1)
 234   2                       {
 235   3                              speedchange(modi,0);
 236   3                              speedchange(modi1,1);}
 237   2                       else
 238   2                       {
 239   3                      speedchange(modi,0);
 240   3                              speedchange(modi,1);}
C51 COMPILER V8.02   TIMERAUTO                                                             09/05/2007 11:19:18 PAGE 5   

 241   2                              delayms(dem);
 242   2              }
 243   1      
 244   1      }
 245          void judgementback (uchar modi,uchar modi1,uchar dem)
 246          {        
 247   1              if(f==1&&g==0)
 248   1              {
 249   2               speedchange(modi1,1);
 250   2               speedchange(modi,0);
 251   2               
 252   2              }
 253   1              else if(f==0&&g==1)
 254   1              {
 255   2               speedchange(modi,1);
 256   2               speedchange(modi1,0);
 257   2               
 258   2              }                                               

⌨️ 快捷键说明

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