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

📄 stepmotor.lst

📁 全国机器人机械创新大赛的程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.09   STEPMOTOR                                                             04/29/2007 19:22:53 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE STEPMOTOR
OBJECT MODULE PLACED IN stepmotor.OBJ
COMPILER INVOKED BY: D:\c51\C51\BIN\C51.EXE stepmotor.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************************
   2            爬楼梯机器人
   3             谭安助
   4            2007,4,28   
   5          ***********************************************************/
   6          /*-----------------------------------------
   7          REF I/0:
   8          P0.0 - P0.6 行程开关输入
   9          P1.0  p2.6- 上升电机控制
  10          P1.1  p1.6 - 前后电机控制
  11          -----------------------------------------*/
  12          #include <Reg932.h>                     //Keil header file name
  13          #include <stdio.h>
  14          #define uchar unsigned char
  15          #define uint unsigned int
  16          #define ulong unsigned long
  17          #define ccu_inter_count 2
  18          #define TH0_DATA        0x0d4                   // 0xd4cc<-->2mS (0xa999<-->4mS)
  19          #define TL0_DATA        0x0cc
  20          #define CSM  6           //参数设定范围,有6个参数
  21          #define CMID 0x80 
  22          
  23          sbit sw1=P0^1 ;
  24          sbit sw2=P0^0 ;
  25          sbit sw3=P0^2 ;
  26          sbit sw4=P0^3 ;
  27          sbit sw5=P0^4 ;
  28          sbit sw6=P0^5 ;
  29          sbit sw7=P0^6 ;
  30          sbit wait=P0^7;
  31          sbit P22=P2^2;
  32          sbit P23=P2^3;
  33          sbit P24=P2^4;
  34          sbit P25=P2^5;
  35          sbit wait_down=P1^7;
  36          sbit direct_A=P1^0;
  37          sbit direct_B=P1^1;
  38          sbit power_A=P2^6;
  39          sbit RCLK=P2^4;
  40          sbit IN=P2^2;          //数据发送口
  41          sbit SCLK=P2^5;        //同步时钟信号
  42          sbit KEY=P2^3;         //读键口      
  43          sbit st=P1^5 ;             //复位
  44          bit SF=0;              //闪烁标志位
  45          uchar TK=0x09;         //按键按下位寄存器1
  46          uchar DATA0[8],DATA1[8];//发送数据库
  47          uchar EDATA[2];                 //E^2PROM读写暂存器
  48          uint CS[CSM];            //修改参数寄存器组(CS[0],CS[1]为,CS[2]为RA,CS[3]为KPB,CS[4]为KIB,CS[5]为RB,CS[
             -6]为外环调整基量)
  49          uchar x=0,y=0,k=0,j=0,p=0,l=0; //指针型变量,k对DATA0&DATA1&selectable;x&y对digitable;j对EDATA;p/l对FA&
             -FB;
  50          uchar w=0;             //取数计数器     ,定时器T0中断计数
  51          uchar M=0,R=4;//M用于参数选择,M等于0时没有键按下,不等到0时有键按下;R为右移选择.
  52          uchar floor=1;
  53          uchar row=1;
C51 COMPILER V7.09   STEPMOTOR                                                             04/29/2007 19:22:53 PAGE 2   

  54          sbit A_up=P2^0;
  55          sbit A_down=P2^7;
  56          sbit B_up=P1^2;
  57          sbit B_down=P1^3;
  58          //sbit power_B=P1^6;
  59          //uint i=0;
  60          
  61          uchar flag_over=1;
  62          uchar idata digitable[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  63          uchar idata selectable[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  64          //extern void _nop_(void);
  65          void Delays(uint i);
  66           void init(void)
  67          {
  68   1      
  69   1              sw1=1;
  70   1              sw2=1;
  71   1              sw3=1;
  72   1              sw4=1;
  73   1              sw5=1;
  74   1              sw6=1;
  75   1              sw7=1;
  76   1      
  77   1              direct_A=1;
  78   1              direct_B=1;
  79   1              power_A=0;
  80   1      
  81   1              P1=0xff;               
  82   1              P2=0xff;
  83   1      }
  84          
  85           void Delays(uint i)
  86          {
  87   1              //j=1000;
  88   1              //j1=1000;
  89   1              //j1=i;
  90   1           uint s;
  91   1              for(i;i>0;i--)
  92   1                      for(s=3000;s>0;j--);
  93   1                      //      for(j1=1000;j1>0;j1--);
  94   1      }
  95          
  96          //**********************************************************************************************
  97          // 初始化CCU单元:       void    InitCCU(void);
  98          void    InitCCU(void)
  99          {       
 100   1              TOR2H=0xFF;
 101   1              TOR2L=0xFF;
 102   1              TH2=0xFF;
 103   1              TL2=0xFF;               //SET THE T2 REPEAT VALUE
 104   1              TPCR2H=0x00;
 105   1              TPCR2L=0x00;    //SET CCUCLK=PLLCLK/((TPCR2H,TPCR2L)+1);
 106   1      
 107   1      //      CCCRA=0x19;
 108   1              OCB=1;
 109   1              CCCRB=0x19;     //SET CCCRX REGISTER,OCM1 AND OCM2 
 110   1      //      CCCRC=0x01;
 111   1      //      CCCRD=0x01;
 112   1      
 113   1              TCR21=0x86;     //SET TCOU2=1 AND ENTER THE VALUE,PLLCLK=((Fosc/2)/(TCR21&0x0F+1))*32;
 114   1              TCR20=0x00;
 115   1      
C51 COMPILER V7.09   STEPMOTOR                                                             04/29/2007 19:22:53 PAGE 3   

 116   1              OCRBH=0x00;
 117   1              OCRBL=0x00;
 118   1              TCR20=0x86;
 119   1      }
 120          
 121          void start_B(void)
 122          {
 123   1              OCRBH=0xa0;                               //原文件中是0x66
 124   1              OCRBL=0x00;                               //原文件中是0x66
 125   1              TCR21=0x86;
 126   1      }
 127          
 128          void stop_B(void)
 129          {
 130   1              OCRBH=0x00;
 131   1              OCRBL=0x00;
 132   1              TCR21=0x86;
 133   1      }
 134           /*********************************************************
 135                   二进制数转BCD码
 136            **********************************************************/   
 137                  //二进制数转BCD码子程序0
 138                  void CONVBIT0(uint num,uchar hor)
 139                  {       
 140   1                      DATA0[hor] = num/1000;
 141   1                      DATA0[hor+1] = num%1000/100;
 142   1                      DATA0[hor+2] = num%100/10;
 143   1                      DATA0[hor+3] = num%10/1;
 144   1      
 145   1              }
 146                  
 147                  //二进制数转BCD码子程序1
 148                  void CONVBIT1(uint num,uchar hor)
 149                  {
 150   1                      DATA1[hor] = num/1000;
 151   1                      DATA1[hor+1] = num%1000/100;
 152   1                      DATA1[hor+2] = num%100/10;
 153   1                      DATA1[hor+3] = num%10/1;
 154   1          }
 155          
 156            /*********************************************************
 157                   数据发送子程序
 158            **********************************************************/   
 159          
 160                  void SEND()
 161                  {
 162   1                      SPSTAT=0x80;
 163   1                      SPDAT=digitable[x];
 164   1                      while(SPSTAT!=0xbf)
 165   1                       {
 166   2                       };
 167   1                      SPSTAT=0x80;
 168   1                      SPDAT=digitable[y];
 169   1                      while(SPSTAT!=0xbf)
 170   1                       {
 171   2                       };
 172   1                      SPSTAT=0x80;
 173   1                      SPDAT=selectable[k];
 174   1                      while(SPSTAT!=0xbf)
 175   1                       {
 176   2                       };
 177   1                      RCLK=0;
C51 COMPILER V7.09   STEPMOTOR                                                             04/29/2007 19:22:53 PAGE 4   

 178   1                      RCLK=0;
 179   1                      RCLK=0;
 180   1                      RCLK=1;
 181   1                      RCLK=1;
 182   1                      RCLK=1;
 183   1                      RCLK=1;
 184   1                      RCLK=0;
 185   1                      RCLK=0;
 186   1                      RCLK=0;
 187   1      
 188   1              }
 189          
 190            /*********************************************************
 191                    读取EEPROM子程序
 192            **********************************************************/   
 193          
 194                  void rEEPROM()
 195                  {
 196   1                for(j=1;j<2*CSM;j++)
 197   1                {
 198   2                   DEECON=0x00;                //初始化DEECON
 199   2                   DEEADR=(2*j-2);
 200   2                       while((DEECON&0x80)==0);
 201   2                       EDATA[0]=DEEDAT;
 202   2                       DEECON&=0x7F;
 203   2                       DEEADR=(2*j-1);
 204   2                       while((DEECON&0x80)==0);
 205   2                       EDATA[1]=DEEDAT;
 206   2                       CS[j-1]=(EDATA[0]*0x100+EDATA[1]);
 207   2                       DEECON&=0x7F;
 208   2                 }
 209   1              }
 210           /*********************************************************
 211                  初始化定时器优先级
 212            **********************************************************/   
 213          
 214                   void IP_ini(void)
 215                   {
 216   1                 IP0H=IP0H&0xFD;
 217   1                 IP0=IP0&0xFD;   //将定时器0中断优先级降最低
 218   1                 IP1H=IP1H|0x10;
 219   1                 IP1=IP1|0x10;        //将CCU中断优先级升为最高
 220   1               }
 221          /*********************************************************
 222                   初始化SPI
 223            **********************************************************/   
 224          
 225                   void SPI_ini(void)
 226                   { 
 227   1                 IN=1;
 228   1                 SCLK=1;
 229   1                 RCLK=0;
 230   1                 SPCTL=0xD0;
 231   1                 SPDAT=0x00;
 232   1                 }
 233          /*********************************************************
 234                    初始化定时器
 235            **********************************************************/   
 236          
 237                   void TIME_ini(void)
 238                   {
 239   1                 TMOD=0x01;
C51 COMPILER V7.09   STEPMOTOR                                                             04/29/2007 19:22:53 PAGE 5   

 240   1                 TAMOD=0x00;
 241   1                 TH0=TH0_DATA;                        // 0xd4cc<-->2mS (0xa999<-->4mS)
 242   1                 TL0=TL0_DATA;
 243   1                 EA=1;
 244   1                 ET0=1;
 245   1                 TR0=1;
 246   1                 }
 247          

⌨️ 快捷键说明

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