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

📄 driver0425.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 1   


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

stmt level    source

   1          //#pragma la
   2          #include <driver.h>
*** WARNING C317 IN LINE 230 OF driver.h: attempt to redefine macro 'M_OA'
   3          
   4          xdata unsigned char     rbuffer[55],sbuffer[6],p_sec;
   5          unsigned char   S_ANSW,POINTER0,POINTER1,work,RSUM,SSUM,c_t1,
   6                          nonce_sector,cross_machine,c_decrease,osc_add,osc_dec,SENS,temp_c,
   7                          share,byte_nums,nonce_sec,c_t0,v51,c_t42,c_t42_l,c_t42_r,c_sample,
   8                          err,osc_start_vh,osc_start_vl,osc_adjudge;
   9          unsigned int    *point;
  10          unsigned int    adl,adh,ad,vc1,vc2,vc3,vc4,vc5,vc6,const0,c_lift,delt_a41,U51;
  11          xdata unsigned long AD1,AD2,AD3,AD4,AD5,da,c_avc,out0,out1,out2,const1,last_out1;
  12          unsigned char COMM,SLA,FF,GET;
  13          bit     t_edge,osc_ok,decrease,decreased,stop_osc,osc_change,osc,sector,excursion_dir,
  14                  center_excursion,ad_finish,first_center,pulse_base,sample_avc,new_circle,
  15                  called,avc,lift,avc_ok,judge_ok,avc_dir,ergent_stop,pgj,in_sector,start,
  16                  lift_complete,K4,over_i1,over_i2,resend,send,overtime,osc_l,osc_r,avc_up,
  17                  avc_down,motor_stop,receive_p_out,receive_p_in,demand,start_osc,start_avc,
  18                  stop_avc,ans,to_begin,decrease_ok,need_para,ask_lift_ok,lift_ok,edge_start;
  19          #define start_v41 200
  20          #define start_v51 46
  21          
  22          void start_i2()
  23          {
  24   1         data unsigned int time;
  25   1         P1_6=1;              //SCL
  26   1         P1_7=1;              //SDA
  27   1         S1CON=0x47;          //ENS1=1 STA=0 STO=0 SI=0 AA=1
  28   1         PS1=1;FF=0;
  29   1         EA=1;
  30   1         ES1=1;
  31   1         STA=1;
  32   1         time=0;
  33   1         do
  34   1           {
  35   2            time++;
  36   2            if(time>10000)
  37   2                {
  38   3                 FF=1;
  39   3                }
  40   2           }while(FF==0);
  41   1         FF=0;
  42   1         ES1=0;
  43   1      }
  44          
  45          void start_t2()
  46          {
  47   1              TM2CON=0x81;    //16位溢出,分频系数1,f/12
  48   1              EA=1;
  49   1              TM2IR=0;
  50   1      }
  51          
  52          void ini_sbuf(unsigned char a,b,c,d,e,f)
  53          {
  54   1              sbuffer[0]=a;
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 2   

  55   1              sbuffer[1]=b;
  56   1              sbuffer[2]=c;
  57   1              sbuffer[3]=d;
  58   1              sbuffer[4]=e;
  59   1              sbuffer[5]=f;
  60   1      }
  61          
  62          unsigned char get_byte_nums(unsigned char type)
  63          {
  64   1              unsigned char numbers;
  65   1              switch(type)
  66   1              {
  67   2                      case    infor_sec:
  68   2                      case    command:
  69   2                      case    program:
  70   2                      case    answer:         numbers=4;
  71   2                                              break;
  72   2                      case    err_infor:
  73   2                      case    parameter1:     numbers=5;
  74   2                                              break;
  75   2                      case    parameter:
  76   2                      case    infor:          numbers=6;
  77   2                                              break;
  78   2                      case    parameter2:     numbers=7;
  79   2                                              break;
  80   2                      case    call_result:    numbers=8;
  81   2                                              break;
  82   2                      case    p_out_sec:      numbers=55;
  83   2                                              break;
  84   2                      case    p_in_sec:       numbers=24;
  85   2                                              break;
  86   2                      case    edit_sec:       numbers=64;
  87   2                                              break;
  88   2                      default:                break;
  89   2              }
  90   1              return numbers;
  91   1      }
  92          
  93          void TR_noans()
  94          {
  95   1              POINTER0=0;
  96   1              SSUM=0;
  97   1              send=1;
  98   1              c_t1=0;
  99   1              P1_5=1;                         //开发送使能
 100   1              TR1=1;
 101   1              while(POINTER0<byte_nums);
 102   1              TR1=0;
 103   1              P1_5=0;                         //关发送使能
 104   1      }
 105          
 106          void err_operate()
 107          {
 108   1              ini_sbuf(M_ALL,err_infor,0,0,0,0);
 109   1              switch(err)
 110   1              {
 111   2                      case 1:                                         //发送超时
 112   2                      case 2:                                         //接收超时
 113   2                      case 3:         sbuffer[1]=commuFail;break;     //三次校验和错误                                //通讯出错
 114   2                      case 4:         sbuffer[1]=IgnitFail;break;     //引弧失败
 115   2                      case 5:         sbuffer[1]=systemErr;break;     //电源出错
 116   2                      case 6:         sbuffer[1]=overTemp;break;      //过温
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 3   

 117   2                      case 7:         sbuffer[1]=lackWater;break;     //缺水
 118   2                      case 8:         sbuffer[1]=lackGas1;break;      //缺气1
 119   2                      case 9:         sbuffer[1]=lackGas2;break;      //缺气2
 120   2              }
 121   1              byte_nums=get_byte_nums(err_infor);
 122   1              TR_noans();
 123   1              ergent_stop=1;
 124   1      }
 125          
 126          void TR_ans()
 127          {
 128   1              ans=1;
 129   1              REN=0;
 130   1              POINTER1=0;
 131   1              RSUM=0;
 132   1              TB8=1;
 133   1              POINTER0=0;
 134   1              SSUM=0;
 135   1              send=1;
 136   1              c_t1=0;
 137   1              P1_5=1;                         //开发送使能
 138   1              TR1=1;
 139   1              while(POINTER0<byte_nums);
 140   1              TR1=0;
 141   1              P1_5=0;                         //关发送使能
 142   1      
 143   1              REN=1;
 144   1              send=0;
 145   1              c_t1=0;
 146   1              TR1=1;
 147   1              while(POINTER1<byte_nums);
 148   1              TR1=0;
 149   1              if(overtime==1)
 150   1              {
 151   2                      err=3;
 152   2                      err_operate();
 153   2                      overtime=0;
 154   2              }
 155   1              ans=0;
 156   1      }
 157          
 158          void delay(int num)
 159          {
 160   1        data unsigned char i,j;
 161   1        for(i=0;i<num;i++)
 162   1         {
 163   2           for(j=0;j<255;j++);
 164   2         }
 165   1      }
 166          
 167          void read_8574 ()                       //过流1或过流2
 168          {
 169   1              unsigned char temp_GET;
 170   1              SLA=0x43;
 171   1              start_i2();
 172   1              temp_GET=GET;
 173   1              temp_GET=temp_GET&0X01;
 174   1              if(temp_GET==0)
 175   1                      over_i1=1;
 176   1              temp_GET=GET;
 177   1              temp_GET=temp_GET&0X02;
 178   1              if(temp_GET==0)
C51 COMPILER V7.06   DRIVER0425                                                            06/03/2005 15:08:33 PAGE 4   

 179   1                      over_i2=1;
 180   1      }
 181          
 182          void write_8574(unsigned char col)      //出错显示
 183          {
 184   1              SLA=0x42;
 185   1              COMM=col;
 186   1              start_i2();
 187   1      }
 188          
 189          void cross_type()                               //十字划架型号
 190          {
 191   1              SLA=0x41;
 192   1              start_i2();
 193   1              delay(3);
 194   1              cross_machine=GET&0X0F;
 195   1      }
 196          
 197          void get_vc()
 198          {
 199   1              if(pp.k1==PDC)
 200   1              {
 201   2                      switch(pp.avc_type)
 202   2                      {
 203   3                              case    SP:     {
 204   4                                                      vc5=(pp.u51_p-2);
 205   4                                                      vc6=(pp.u51_p+2);
 206   4                                              }break;
 207   3                              case    SB:     {
 208   4                                                      vc5=(pp.u51_b-2);
 209   4                                                      vc6=(pp.u51_b+2);
 210   4                                              }break;
 211   3                              case    SPB:    {
 212   4                                                      vc1=(pp.u51_p-2);
 213   4                                                      vc2=(pp.u51_p+2);
 214   4                                                      vc3=(pp.u51_b-2);
 215   4                                                      vc4=(pp.u51_b+2);
 216   4                                              }break;
 217   3                              default:break;
 218   3                      }
 219   2              }
 220   1              else
 221   1              {
 222   2                      vc5=(pp.u51_p-2);
 223   2                      vc6=(pp.u51_p+2);
 224   2              }
 225   1      }
 226          
 227          void get_SENS()
 228          {
 229   1              switch(pp.sens)
 230   1                      {
 231   2                              case 1: {
 232   3                                              v51=start_v51;          //500
 233   3                                              SENS=2;                 //0.0075mm

⌨️ 快捷键说明

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