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

📄 dc.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DC
OBJECT MODULE PLACED IN D:\程序05~1\DC\DC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\程序05~1\DC\DC.C DB SB OE

stmt level    source

   1          #include <dc.h>
   2          
   3          sbit stop=P3^5;
   4          sbit wire_back=P4^4;
   5          sbit wire_front=P4^5;
   6          sbit rot_right=P4^6;
   7          sbit rot_left=P4^7;
   8          sbit send_enable=P3^4;
   9          sbit limit=P4^3;
  10          sbit wire_over_i=P1^2;
  11          xdata unsigned char rbuffer[55],sbuffer[6];
  12          unsigned char   COMM,SLA,FF,GET,POINTER0,SSUM,POINTER1,RSUM,c_t1,s_byte_nums,r_byte_nums,pulse_num,
  13                          err,WIRE,S_ANSW,nonce_sec,work,p_sec,K21,K3,K31,tooth_num,
  14                          temp_pulse_num,delt_state;
  15                          
  16          unsigned int    rot_vp,temp_rot_vp,rot_vb,temp_rot_vb,wire_vp,temp_wire_vp,wire_vb,
  17                          temp_wire_vb,n_cm0,c_cm0,n_cm1,c_cm1,FINISH,delt_rot,delt_wire
  18                          ,*point;
  19          bit     send,overtime,start,decrease,urgent_stop,rot_front,rot_reverse,wire_add,
  20                  wire_dec,rot_ok,wire_ok,in_sector,receive_p_out,receive_p_in,demand,need_para,
  21                  rot_stop,rot_stop_ok,called,p_b,new_sector,start_rot,start_wire,stop_wire,r_slope_ok,
  22                  w_slope_ok,retract,return_ok,retract_ok,motor_stop,auto_return,resend,ans,
  23                  to_begin,noans_ok,ask_return_ok,k_r_p_add,k_r_b_add,k_r_p_dec,k_r_b_dec,k22,k33,k44;
  24          bit     kk,rw_err,err_ok;
  25          
  26          void start_t2()
  27          {
  28   1              TM2CON=0x85;    //16位溢出,分频系数2,f/12
  29   1              EA=1;
  30   1              TM2IR=0;
  31   1      }
  32          
  33          void ini_sbuf(unsigned char a,b,c,d,e,f)
  34          {
  35   1              sbuffer[0]=a;
  36   1              sbuffer[1]=b;
  37   1              sbuffer[2]=c;
  38   1              sbuffer[3]=d;
  39   1              sbuffer[4]=e;
  40   1              sbuffer[5]=f;
  41   1      }
  42          
  43          unsigned char get_byte_nums(unsigned char type)
  44          {
  45   1              unsigned char numbers;
  46   1              switch(type)
  47   1              {
  48   2                      case    infor_sec:
  49   2                      case    command:
  50   2                      case    program:
  51   2                      case    answer:         numbers=4;
  52   2                                              break;
  53   2                      case    err_infor:
  54   2                      case    parameter1:     numbers=5;
  55   2                                              break;
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 2   

  56   2                      case    parameter:
  57   2                      case    infor:          numbers=6;
  58   2                                              break;
  59   2                      case    parameter2:     numbers=7;
  60   2                                              break;
  61   2                      case    call_result:    numbers=8;
  62   2                                              break;
  63   2                      case    p_out_sec:      numbers=55;
  64   2                                              break;
  65   2                      case    p_in_sec:       numbers=24;
  66   2                                              break;
  67   2                      case    edit_sec:       numbers=64;
  68   2                                              break;
  69   2                      default:                break;
  70   2              }
  71   1              return numbers;
  72   1      }
  73          
  74          void TR_noans()
  75          {
  76   1              noans_ok=0;
  77   1              POINTER0=0;
  78   1              SSUM=0;
  79   1              send=1;
  80   1              c_t1=0;
  81   1              send_enable=1;                          //开发送使能
  82   1              TR1=1;
  83   1              while(POINTER0<s_byte_nums);
  84   1              TR1=0;
  85   1              send_enable=0;                          //关发送使能
  86   1              noans_ok=1;
  87   1      }
  88          
  89          void delay(unsigned char num)
  90          {
  91   1              unsigned char i,ii;
  92   1              for(i=0;i<num;i++)
  93   1              {
  94   2                      for(ii=0;ii<255;ii++);
  95   2              }
  96   1      }
  97          
  98          void TR_ans()
  99          {
 100   1              ans=1;
 101   1              REN=0;
 102   1              POINTER1=0;
 103   1              RSUM=0;
 104   1              TB8=1;
 105   1              POINTER0=0;
 106   1              SSUM=0;
 107   1              send=1;
 108   1              c_t1=0;
 109   1              send_enable=1;                          //开发送使能
 110   1              TR1=1;
 111   1              while(POINTER0<s_byte_nums);
 112   1              TR1=0;
 113   1              send_enable=0;                          //关发送使能
 114   1      
 115   1              REN=1;
 116   1              send=0;
 117   1              c_t1=0;
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 3   

 118   1      //      TR1=1;
 119   1              while(POINTER1<r_byte_nums&&overtime==0);
 120   1              TR1=0;
 121   1              if(overtime==1)
 122   1              {
 123   2                      err=2;                          //通信出错
 124   2                      overtime=0;
 125   2              }
 126   1              ans=0;
 127   1      }
 128          
 129          void com_type()
 130          {
 131   1              switch(rbuffer[2])
 132   1              {
 133   2                      case com_calling:       called=1;break;
 134   2                      case com_demand:        {
 135   3                                                      if(demand==0)
 136   3                                                              demand=1;
 137   3                                              }break;
 138   2                      case com_need_para:     need_para=1;break;
 139   2                      case com_start:         start=1;break;
 140   2                      case com_rot_front:     {                               //正转
 141   3                                                      if(rot_front==0)
 142   3                                                              rot_front=1;
 143   3                                              }break;
 144   2                      case com_rot_reverse:   {                               //反转
 145   3                                                      if(rot_reverse==0)
 146   3                                                              rot_reverse=1;
 147   3                                              }break;
 148   2                      case com_wire_add:      {                               //送丝
 149   3                                                      if(work==0)
 150   3                                                      {
 151   4                                                              if(wire_add==0&&WIRE==ON)
 152   4                                                                      wire_add=1;
 153   4                                                      }
 154   3                                                      if(work==3)
 155   3                                                      {
 156   4                                                              if(wire_add==0&&WIRE==ON&&pp.k3==ON)
 157   4                                                                      wire_add=1;
 158   4                                                      }
 159   3                                              }break;
 160   2                      case com_wire_dec:      {                               //抽丝
 161   3                                                      if(work==0)
 162   3                                                      {
 163   4                                                              if(wire_dec==0&&WIRE==ON)
 164   4                                                                      wire_dec=1;
 165   4                                                      }
 166   3                                                      if(work==3)
 167   3                                                      {
 168   4                                                              if(wire_dec==0&&WIRE==ON&&pp.k3==ON)
 169   4                                                                      wire_dec=1;
 170   4                                                      }
 171   3                                              }break;
 172   2                      case com_motor_stop:    {                               //停止点动
 173   3                                                      if(motor_stop==0)
 174   3                                                              motor_stop=1;
 175   3                                              }break;
 176   2                      case com_pre_melt_ok:   start_rot=1;break;
 177   2                      case com_decrease:      decrease=1;break;
 178   2                      case com_decrease_ok:   rot_stop=1;break;
 179   2                      case com_wire:          start_wire=1;break;
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 4   

 180   2                      case com_stopW:         stop_wire=1;break;
 181   2                      case com_return:        auto_return=1;break;
 182   2                      case com_return_ok:     return_ok=1;break;
 183   2                      case com_goto_begin:    to_begin=1;break;
 184   2                      case com_err_ok:        err_ok=1;break;
 185   2                      default:                 break;
 186   2              }
 187   1      }
 188          
 189          void data_type()                                                //对接收到的数据分辨类型
 190          {
 191   1                      switch(rbuffer[1])
 192   1                      {
 193   2                              case command:   com_type();break;
 194   2      //                      case answer:    R_ANSW=rbuffer[2];break;
 195   2                              case infor:     {
 196   3                                                      switch(rbuffer[2])
 197   3                                                      {
 198   4                                                              case com_sector:        {
 199   5                                                                                              nonce_sec=rbuffer[3];
 200   5                                                                                              in_sector=1;
 201   5                                                                                              new_sector=1;
 202   5                                                                                      }break;
 203   4                                                              case com_wire_on_off:   WIRE=rbuffer[3];break;//送丝开关
 204   4                                                              case com_delt_switch:   delt_state=rbuffer[3];break;
 205   4                                                              default:                break;
 206   4                                                      }
 207   3                                              }break;
 208   2                              case p_out_sec: receive_p_out=1;break;
 209   2                              case p_in_sec:  {
 210   3                                                      nonce_sec=rbuffer[2];
 211   3                                                      receive_p_in=1;
 212   3                                              }break;
 213   2                              case parameter1:FINISH=rbuffer[2]*256+rbuffer[3];break;
 214   2                              default:        break;
 215   2                      }
 216   1      }
 217          
 218          void EX0_INT (void) interrupt 0                 //急停
 219          {
 220   1              EX1=0;
 221   1              send_enable=0;                          //关发送使能
 222   1              PWM0=0;
 223   1              PWM1=0;
 224   1              wire_back=1;
 225   1              wire_front=1;
 226   1              rot_right=1;
 227   1              rot_left=1;
 228   1              while(err_ok==0)
 229   1              {
 230   2                      if(called==1)
 231   2                      {
 232   3                              if(rw_err==0)
 233   3                              {
 234   4                                      ini_sbuf(M_main,answer,OK,0,0,0);
 235   4                                      s_byte_nums=4;
 236   4                                      TR_noans();
 237   4                              }
 238   3                              else

⌨️ 快捷键说明

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