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

📄 转弯.lst

📁 单片机控制小车(两个步进电机)前进后退及转弯程序
💻 LST
字号:
C51 COMPILER V7.50   转弯                                                                  09/04/2007 12:57:12 PAGE 1   


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

line level    source

   1          /**************************************************************
   2          头文件预处理:
   3          **************************************************************/
   4          #include<reg52.h>
   5          #include <absacc.h>
   6          #include <intrins.h>
   7          #include<stdio.h>
   8          /**************************************************************
   9          数据类型宏定义:
  10          **************************************************************/
  11          #define uchar unsigned char
  12          #define uint  unsigned int
  13          /**************************************************************
  14          I/O端口说明:
  15          **************************************************************/
  16          sbit    Led_Clk=P1^5;            //clock port of 74HC164
  17          sbit    Led_Dat=P1^6;            //data port of 74HC164
  18          sbit    Led_Cs=P1^7;            //Led display controlling(using BJT's base)
  19          sbit    SDA=P3^4;            //I2C数据线
  20          sbit    SCL=P3^5;            //I2C时钟线
  21          sbit    A0=P1^0;
  22          /**************************************************************
  23          全局变量声明:
  24          **************************************************************/
  25          uchar NP1,NP2,temp2,Count;
  26          uint temp,temp1,Sec;
  27          const uchar motor1[8]={0x30,0x60,0xc0,0x90};
  28          const uchar motor2[8]={0x03,0x06,0x0c,0x09};//{0x11,0x99,0x88,0xaa,0x22,0x66,0x44,0x55};  //八拍为一步
  29          /**************************************************************
  30          函数说明:
  31          **************************************************************/
  32          void RS232_SendData(uchar d)
  33          {
  34   1              SBUF=d;while(TI==0);TI=0;
  35   1      }
  36          /**************************************************************
  37          **函数名称:Delay
  38          **功能描述:延时
  39          ***************************************************************
  40          **调用函数:NONE
  41          **参    数:NONE
  42          **返 回 值:NONE
  43          **************************************************************/
  44          void delay(uchar t)// 每步延时的子程序  
  45          { 
  46   1              uchar i,j,k; 
  47   1              for (k=0;k<50;k++)      
  48   1                              for (j=0;j<t;j++)
  49   1                                      _nop_(); 
  50   1      } 
*** WARNING C280 IN LINE 46 OF 转弯.C: 'i': unreferenced local variable
  51          /**************************************************************
  52          **函数名称:Delay1
  53          **功能描述:延时1ms*t子程序
  54          ***************************************************************
C51 COMPILER V7.50   转弯                                                                  09/04/2007 12:57:12 PAGE 2   

  55          **调用函数:NONE
  56          **参    数:NONE
  57          **返 回 值:NONE
  58          **************************************************************/
  59          void delay1(uchar t)// 
  60          { 
  61   1              uchar j,k; 
  62   1                      for (k=0;k<t;k++)       
  63   1                              for (j=0;j<60;j++)
  64   1                                      _nop_(); 
  65   1      } 
  66          
  67          /**********************Delay  函数结束************************/
  68          
  69          
  70          
  71          /**************************************************************
  72          **函数名称:round_step
  73          **功能描述:转弯
  74          ***************************************************************
  75          **调用函数:delay
  76          **参    数:d,t
  77          **返 回 值:NONE
  78          **************************************************************/
  79          void car_round_step(uchar d,uchar t)     //步进电机走一步d=0 右转d=1 左转。t 越大转得越慢  
  80          {     
  81   1              uchar e;                        
  82   1           if (d&0x01)                   
  83   1           { 
  84   2             if (NP1==0) 
  85   2                NP1=3; 
  86   2             else NP1--; //NP1记录步数,全局变量
  87   2           } 
  88   1           else  
  89   1           { 
  90   2             if (NP1==3) 
  91   2                      NP1=0; 
  92   2             else 
  93   2                              NP1++; 
  94   2           } 
  95   1           temp=motor1[NP1]; 
  96   1      
  97   1               e=!d;
  98   1               if (e&0x01)                   
  99   1           { 
 100   2             if (NP2==0) 
 101   2                NP2=3; 
 102   2             else NP2--; //NP2记录步数,全局变量
 103   2           } 
 104   1           else  
 105   1           { 
 106   2             if (NP2==3) 
 107   2                      NP2=0; 
 108   2             else 
 109   2                              NP2++; 
 110   2           } 
 111   1               temp1=motor2[NP2];
 112   1               P2=temp|temp1;//输出到单片机的P2口
 113   1               RS232_SendData(P2);//motortb[NP]);
 114   1           delay(t); 
 115   1      } 
 116          /**************************************************************
C51 COMPILER V7.50   转弯                                                                  09/04/2007 12:57:12 PAGE 3   

 117          **函数名称:mov_step
 118          **功能描述:转弯
 119          ***************************************************************
 120          **调用函数:delay
 121          **参    数:d,t
 122          **返 回 值:NONE
 123          **************************************************************/
 124          void car_movstep(uchar d,uchar t)     //步进电机走一步d=0 前进d=1 后退。t 越大转得越慢  
 125          {                            
 126   1           if (d&0x01)                   
 127   1           { 
 128   2             if (NP1==0) 
 129   2                NP1=3; 
 130   2             else NP1--; //NP1记录步数,全局变量
 131   2           } 
 132   1           else  
 133   1           { 
 134   2             if (NP1==3) 
 135   2                      NP1=0; 
 136   2             else 
 137   2                              NP1++; 
 138   2           } 
 139   1           temp=motor1[NP1]; 
 140   1      
 141   1               if (d&0x01)                   
 142   1           { 
 143   2             if (NP2==0) 
 144   2                NP2=3; 
 145   2             else NP2--; //NP2记录步数,全局变量
 146   2           } 
 147   1           else  
 148   1           { 
 149   2             if (NP2==3) 
 150   2                      NP2=0; 
 151   2             else 
 152   2                              NP2++; 
 153   2           } 
 154   1               temp1=motor2[NP2];
 155   1               P2=temp|temp1;//输出到单片机的P2口
 156   1               RS232_SendData(P2);//motortb[NP]);
 157   1           delay(t); 
 158   1      } 
 159          
 160          
 161          /**************************************************************
 162          **函数名称:timer0
 163          **功能描述:定时器中断服务程序
 164          ***************************************************************
 165          **调用函数:NONE
 166          **参    数:NONE
 167          **返 回 值:NONE
 168          **************************************************************/
 169          
 170          void ISR_Tmr0() interrupt 1 using 2
 171          {
 172   1              uchar i;
 173   1              TH0=0x9e;            //T0定时25ms
 174   1          TL0=0x58;             //0xD8F0
 175   1              if(!A0)
 176   1              {
 177   2              }
 178   1              else if(!A1)
C51 COMPILER V7.50   转弯                                                                  09/04/2007 12:57:12 PAGE 4   

*** ERROR C202 IN LINE 178 OF 转弯.C: 'A1': undefined identifier
 179   1              {
 180   2              }
 181   1      //      temp2++;
 182   1      //      RS232_SendData(temp2);
 183   1      }
 184          
 185          /**************************************************************
 186          **函数名称:timer0
 187          **功能描述:定时器中断服务程序
 188          ***************************************************************
 189          **调用函数:NONE
 190          **参    数:NONE
 191          **返 回 值:NONE
 192          **************************************************************/
 193          
 194          void ISR_Tmr1() interrupt 1 using 3
 195          {
 196   1              uchar i;
 197   1              TH0=0x9e;            //T0定时25ms
 198   1          TL0=0x58;             //0xD8F0
 199   1              if(Count==20)
 200   1              {
 201   2                      Count=0;
 202   2                      Sec++;
 203   2                      //
 204   2              }
 205   1              else
 206   1                      Count++;
 207   1      //      temp2++;
 208   1      //      RS232_SendData(temp2);
 209   1      }
 210          
 211          /**************************************************************
 212          **函数名称:zd_int0()
 213          **功能描述:int0中断服务子程序
 214          ***************************************************************
 215          **调用函数:NONE
 216          **参    数:NONE
 217          **返 回 值:NONE
 218          **************************************************************/
 219          
 220          void zd_int0() interrupt 0 using 2
 221          {
 222   1              uchar i;
 223   1              for(i=0;i<10;i++)
 224   1              car_round_step(0,100);
 225   1              RS232_SendData(P2);     
 226   1      
 227   1      }
 228          
 229          
 230          
 231          /**************************************************************
 232          **函数名称:main()
 233          **************************************************************/
 234          void main()
 235          {               uchar i,j,k,l;
 236   1                      temp2=0;
 237   1                      Sec=Count=0;
 238   1      init:   TMOD=0x11;           //设置定时器0,工作方式1,
 239   1                      TH0=0x9e;            //T0定时25ms
C51 COMPILER V7.50   转弯                                                                  09/04/2007 12:57:12 PAGE 5   

 240   1              TL0=0x58;            //0xD8F0
 241   1      //        TH1=0xFE;            //T1定时500us
 242   1      //        TL1=0x0C;            //理论值为FE0CH
 243   1              ET0=1;               //允许定时器0中断
 244   1      //        ET1=1;               //允许定时器1中断
 245   1              TR0=1;               //关定时器0
 246   1      //        TR1=1;               //关定时器1
 247   1      //              EA=1;                //允许CPU总中断
 248   1      
 249   1      //              IE=0x1b;                                                //ET0=ET1=EX0=ES=1;EX1=0;T0,T1,INT0,COM中断允许INT1不允许
 250   1              SCON = 0x50;                                    //串口方式1,允许接收
 251   1              RCAP2H=0xff;RCAP2L=0x64;T2CON=0x34;//波特率2400 bps
 252   1      
 253   1                      EA=1;
 254   1      //              NP=3;
 255   1                      while(1)                     
 256   1              {
 257   2                              for(i=0;i<150;i++)
 258   2                                      for(k=0;k<10;k++)
 259   2                                      {
 260   3                                              car_movstep(0,10);
 261   3      //                                      RS232_SendData(temp2);
 262   3                                      }
 263   2                              for(j=0;j<150;j++)
 264   2                                      car_round_step(0,10);
 265   2              
 266   2              }
 267   1      }

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

⌨️ 快捷键说明

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