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

📄 dc1_test.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 745          
 746          void CM2_INT (void) interrupt 13
 747          {
 748   1              CMI2=0;
 749   1              c_cm2++;
 750   1      
 751   1              if(c_cm2==n_cm2)
 752   1                      {
 753   2      //                      IEN1=IEN1&0XEF;                 //CM0
 754   2                              PWM1=0;
 755   2                              wire_back=1;
 756   2                              wire_front=1;
 757   2                              retract_ok=1;
 758   2                              c_cm2=0;
 759   2                      }
 760   1              else
 761   1              {
 762   2                      CML2=TML2+0XD4;
 763   2                      if(CML2>TML2)
 764   2                              CMH2=TMH2+1+0X30;
 765   2                      else
 766   2                              CMH2=TMH2+0X30;                         //100ms
 767   2              }
 768   1      
 769   1      }
 770          
 771          main()
 772          {
 773   1              TMOD=0x22;                      //定时器1,方式2;
 774   1              TL1=0XFD;                       //波特率9600
 775   1              TH1=0XFD;
 776   1              TR1=1;                          //启动定时器
 777   1              PCON=0X00;                      //SMOD=0
 778   1              TMOD=0x23;                      //定时器0,方式3,两个8位定时器;
 779   1              TR1=0;
 780   1              TF1=0;
 781   1              S0CON=0XF8;                     //串口方式3,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
 782   1              IP0=0X98;                       //S0=1,T1=1
 783   1              ES0=1;                          //开串口中断
 784   1              ET0=1;
 785   1              ET1=1;
 786   1              ES1=1;                          //I2C
 787   1              EAD=1;                          //AD中断允许
 788   1              EA=1;                           //中断总允许
 789   1              start_t2();
 790   1      
 791   1              urgent_stop=0;
 792   1              rw_err=0;
 793   1              err_ok=0;
 794   1              err=0;
 795   1      
 796   1      BEGIN:  if(urgent_stop==1)
 797   1              {
 798   2                      urgent_stop=0;
 799   2                      err_ok=0;
C51 COMPILER V7.06   DC1_TEST                                                              09/14/2005 10:00:17 PAGE 14  

 800   2                      EX1=1;
 801   2                      EX0=1;
 802   2              }
 803   1              IEN1=0X00;
 804   1              work=0;
 805   1              send_enable=1;                          //关发送使能
 806   1              start=0;
 807   1              start_rot=0;
 808   1              start_wire=0;
 809   1              stop_wire=0;
 810   1              decrease=0;
 811   1              need_para=0;
 812   1              nonce_sec=0;
 813   1              in_sector=0;
 814   1              new_sector=0;
 815   1              noans_ok=1;
 816   1              S_ANSW=0;
 817   1      //      R_ANSW=0;
 818   1              POINTER0=0;
 819   1              SSUM=0;
 820   1              POINTER1=0;
 821   1              RSUM=0;
 822   1              r_byte_nums=4;
 823   1              send=0;
 824   1              overtime=0;
 825   1              receive_p_out=0;
 826   1              receive_p_in=0;
 827   1              demand=0;
 828   1              resend=0;
 829   1              ans=0;
 830   1              p_b=0;                          //基值
 831   1              temp_pulse_num=0;
 832   1              temp_pulse_num1=0;
 833   1              FINISH=0;
 834   1              temp_FINISH=0;
 835   1              rot_front=0;
 836   1              rot_reverse=0;
 837   1              rot_ok=0;
 838   1              rot_stop=0;
 839   1              rot_stop_ok=0;
 840   1              wire_add=0;
 841   1              wire_dec=0;
 842   1              wire_ok=0;
 843   1              r_slope_ok=1;
 844   1              w_slope_ok=1;
 845   1              motor_stop=0;
 846   1              retract=0;
 847   1              c_cm0=0;
 848   1              c_cm1=0;
 849   1              k_r_p_add=0;
 850   1              k_r_b_add=0;
 851   1              k_r_p_dec=0;
 852   1              k_r_b_dec=0;
 853   1              temp_rot_vp=0;
 854   1              temp_rot_vb=0;
 855   1              temp_wire_vp=0;
 856   1              temp_wire_vb=0;
 857   1              retract_ok=0;
 858   1              auto_return=0;
 859   1              return_ok=0;
 860   1              ask_return_ok=0;
 861   1              to_begin=0;
C51 COMPILER V7.06   DC1_TEST                                                              09/14/2005 10:00:17 PAGE 15  

 862   1      
 863   1              PWMP=3;                         //23.5K
 864   1              CML0=TML2+0xC8;                 //CM0,400us,送丝速度变化时间
 865   1              if(CML0<TML2)
 866   1                      CMH0=TMH2+1+0X00;
 867   1              else
 868   1                      CMH0=TMH2+0X00;
 869   1              CML1=TML2+0XC8;
 870   1              if(CML1<TML2)                   //CM1,400us,旋转速度变化时间
 871   1                      CMH1=TMH2+1+0X00;
 872   1              else
 873   1                      CMH1=TMH2+0X00;
 874   1      
 875   1              CTCON=CTCON|0X02;               //CT0捕捉下降沿
 876   1              tooth_num=10;
 877   1              EX1=1;
 878   1              EX0=1;
 879   1              while(start==0)
 880   1              {
 881   2                      if(called==1)
 882   2                      {
 883   3                              ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
 884   3                              s_byte_nums=get_byte_nums(infor);
 885   3                              TR_noans();
 886   3                              called=0;
 887   3                      }
 888   2      
 889   2                      if(receive_p_out==1)
 890   2                      {
 891   3                              point=&pp.k2;
 892   3                              for(p_sec=0;p_sec<24;p_sec++)
 893   3                                      *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
 894   3                              pp.k1=rbuffer[50];
 895   3      
 896   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 897   3                              s_byte_nums=4;
 898   3                              TR_noans();
 899   3                              demand=0;
 900   3                              receive_p_out=0;
 901   3                      }
 902   2      
 903   2                      if(receive_p_in==1)
 904   2                      {
 905   3                              point=&pp.x[nonce_sec][0];
 906   3                              for(p_sec=0;p_sec<10;p_sec++)
 907   3                                      *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
 908   3      
 909   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 910   3                              s_byte_nums=4;
 911   3                              TR_noans();
 912   3                              demand=0;
 913   3                              receive_p_in=0;
 914   3                      }
 915   2      
 916   2                      if(rot_front==1)
 917   2                      {
 918   3                              rot_right=1;
 919   3                              rot_left=0;
 920   3                              PWM0=204;
 921   3                              rot_front=0;
 922   3                      }
 923   2      
C51 COMPILER V7.06   DC1_TEST                                                              09/14/2005 10:00:17 PAGE 16  

 924   2                      if(rot_reverse==1)
 925   2                      {
 926   3                              rot_right=0;
 927   3                              rot_left=1;
 928   3                              PWM0=204;
 929   3                              rot_reverse=0;
 930   3                      }
 931   2      
 932   2                      if(wire_add==1)
 933   2                      {
 934   3                              wire_back=0;
 935   3                              wire_front=1;
 936   3                              PWM1=204;
 937   3                              wire_add=0;
 938   3                      }
 939   2      
 940   2                      if(wire_dec==1)
 941   2                      {
 942   3                              wire_back=1;
 943   3                              wire_front=0;
 944   3                              PWM1=204;
 945   3                              wire_dec=0;
 946   3                      }
 947   2      
 948   2                      if(motor_stop==1)
 949   2                      {
 950   3                              PWM0=0;
 951   3                              PWM1=0;
 952   3                              wire_back=1;
 953   3                              wire_front=1;
 954   3                              rot_right=1;
 955   3                              rot_left=1;
 956   3                              rot_front=0;
 957   3                              rot_reverse=0;
 958   3                              wire_add=0;
 959   3                              wire_dec=0;
 960   3                              motor_stop=0;
 961   3                      }
 962   2      
 963   2                      if(resend==1)
 964   2                      {
 965   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 966   3                              s_byte_nums=4;
 967   3                              TR_noans();
 968   3                              resend=0;
 969   3                      }
 970   2      
 971   2                      if(urgent_stop==1)
 972   2                              goto BEGIN;
 973   2              }
 974   1      
 975   1              get_v_r();
 976   1              if(r%10>=5)
 977   1                      pulse_num=r/10+1;
 978   1              else
 979   1                      pulse_num=r/10;
 980   1              pulse_num=pulse_num/2;
 981   1              pulse_num1=r/2;
 982   1              if(pp.k1==0)
 983   1                      K21=OFF;
 984   1              else
 985   1                      K21=pp.k21;
C51 COMPILER V7.06   DC1_TEST                                                              09/14/2005 10:00:17 PAGE 17  

 986   1              const0=(float)(motor_v)*(float)(tooth_num);
 987   1              const0=(float)(const0*3.14);
 988   1              const0=(float)(const0/360/r);           //motor_v*tooth_num*3.14*pp.d/360/r
 989   1              temp_data0=const0*pp.d/10;
 990   1              temp_data00=(float)(pp.dv21)/temp_data0;
 991   1              delt_rot=255*temp_data00;
 992   1              if(delt_rot==0)
 993   1                      delt_rot=1;
 994   1              temp_data00=(float)(pp.v21_p)/temp_data0;
 995   1              rot_vp=255*temp_data00;

⌨️ 快捷键说明

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