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

📄 dc1.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 748   4                                      if(rot_ok==0)
 749   4                                              rot_ok=1;
 750   4                                      else
 751   4                                              r_slope_ok=1;
 752   4                              }
 753   3                              else
 754   3                                      IEN1=IEN1|0x20;         //CM1
 755   3                      }
 756   2                      else
 757   2                      {
 758   3                              if(temp_rot_vp==rot_vp&&temp_rot_vb==rot_vb)
 759   3                              {
 760   4                                      PWM0=get_PWM(temp_rot_vb);
 761   4                                      if(rot_ok==0)
 762   4                                              rot_ok=1;
 763   4                                      else
 764   4                                              r_slope_ok=1;
 765   4                              }
 766   3                              else
 767   3                                      IEN1=IEN1|0x20;         //CM1
 768   3                      }
 769   2              }
 770   1              CML1=TML2+0XC8;
 771   1              if(CML1<TML2)                   //CM1,400us,旋转速度变化时间
 772   1                      CMH1=TMH2+1+0X00;
 773   1              else
 774   1                      CMH1=TMH2+0X00;
 775   1      }
 776          
 777          void CM2_INT (void) interrupt 13
 778          {
 779   1              CMI2=0;
 780   1              IEN1=IEN1&0XBF;         //CM2
 781   1              c_cm2++;
 782   1              if(c_cm2==20)
 783   1              {
 784   2                      if(r_w==0)
 785   2                              PWM0=204;
 786   2                      else
 787   2                              PWM1=204;
 788   2                      c_cm2=0;
 789   2              }
 790   1              else
 791   1              {
 792   2                      CML2=TML2+0X50;
 793   2                      if(CML2>TML2)
 794   2                              CMH2=TMH2+1+0XC3;
 795   2                      else
 796   2                              CMH2=TMH2+0XC3;
 797   2                      IEN1=IEN1|0X40;                 //CM2
 798   2              }
 799   1      }
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 14  

 800          
 801          main()
 802          {       
 803   1              TMOD=0x22;                      //定时器1,方式2;
 804   1              TL1=0XFD;                       //波特率9600
 805   1              TH1=0XFD;
 806   1              TR1=1;                          //启动定时器
 807   1              PCON=0X00;                      //SMOD=0
 808   1              TMOD=0x23;                      //定时器0,方式3,两个8位定时器;
 809   1              TR1=0;
 810   1              TF1=0;
 811   1              S0CON=0XF8;                     //串口方式3,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
 812   1              IP0=0X98;                       //S0=1,T1=1
 813   1              ES0=1;                          //开串口中断
 814   1              ET0=1;
 815   1              ET1=1;
 816   1              ES1=1;                          //I2C
 817   1              EAD=1;                          //AD中断允许
 818   1              EA=1;                           //中断总允许
 819   1              start_t2();
 820   1      
 821   1              urgent_stop=0;
 822   1              rw_err=0;
 823   1              err_ok=0;
 824   1              err=0;
 825   1      
 826   1      BEGIN:  if(urgent_stop==1)
 827   1              {
 828   2                      urgent_stop=0;
 829   2                      err_ok=0;
 830   2                      EX1=1;
 831   2                      EX0=1;
 832   2              }
 833   1              IEN1=0X00;
 834   1              work=0;
 835   1              send_enable=1;                          //关发送使能
 836   1              start=0;
 837   1              start_rot=0;
 838   1              start_wire=0;
 839   1              stop_wire=0;
 840   1              decrease=0;
 841   1              need_para=0;
 842   1              nonce_sec=0;
 843   1              in_sector=0;
 844   1              new_sector=0;
 845   1              noans_ok=1;
 846   1              S_ANSW=0;
 847   1      //      R_ANSW=0;
 848   1              POINTER0=0;
 849   1              SSUM=0;
 850   1              POINTER1=0;
 851   1              RSUM=0;
 852   1              r_byte_nums=4;
 853   1              send=0;
 854   1              overtime=0;
 855   1              receive_p_out=0;
 856   1              receive_p_in=0;
 857   1              demand=0;
 858   1              resend=0;
 859   1              ans=0;
 860   1              p_b=0;                          //基值
 861   1              temp_pulse_num=0;
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 15  

 862   1              temp_pulse_num1=0;
 863   1              FINISH=0;
 864   1              temp_FINISH=0;
 865   1              rot_front=0;
 866   1              rot_reverse=0;
 867   1              rot_ok=0;
 868   1              rot_stop=0;
 869   1              rot_stop_ok=0;
 870   1              wire_add=0;
 871   1              wire_dec=0;
 872   1              wire_ok=0;
 873   1              r_slope_ok=1;
 874   1              w_slope_ok=1;
 875   1              motor_stop=0;
 876   1              retract=0;
 877   1              c_cm0=0;
 878   1              c_cm1=0;
 879   1              k_r_p_add=0;
 880   1              k_r_b_add=0;
 881   1              k_r_p_dec=0;
 882   1              k_r_b_dec=0;
 883   1              temp_rot_vp=0;
 884   1              temp_rot_vb=0;
 885   1              temp_wire_vp=0;
 886   1              temp_wire_vb=0;
 887   1              retract_ok=0;
 888   1              auto_return=0;
 889   1              return_ok=0;
 890   1              ask_return_ok=0;
 891   1              to_begin=0;
 892   1              c_cm2=0;
 893   1              common=0;
 894   1      
 895   1              PWMP=3;                         //23.5K      
 896   1              CTCON=CTCON|0X02;               //CT0捕捉下降沿
 897   1              tooth_num=10;
 898   1              EX1=1;
 899   1              EX0=1;
 900   1              
 901   1              while(start==0)
 902   1              {
 903   2                      if(called==1)
 904   2                      {
 905   3                              ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
 906   3                              s_byte_nums=get_byte_nums(infor);
 907   3                              TR_noans();
 908   3                              called=0;
 909   3                      }
 910   2      
 911   2                      if(receive_p_out==1)
 912   2                      {
 913   3                              point=&pp.k2;
 914   3                              for(p_sec=0;p_sec<24;p_sec++)
 915   3                                      *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
 916   3                              pp.k1=rbuffer[50];
 917   3      
 918   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 919   3                              s_byte_nums=4;
 920   3                              TR_noans();
 921   3                              demand=0;
 922   3                              receive_p_out=0;
 923   3                      }
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 16  

 924   2      
 925   2                      if(receive_p_in==1)
 926   2                      {
 927   3                              point=&pp.x[nonce_sec][0];
 928   3                              for(p_sec=0;p_sec<10;p_sec++)
 929   3                                      *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
 930   3      
 931   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 932   3                              s_byte_nums=4;
 933   3                              TR_noans();
 934   3                              demand=0;
 935   3                              receive_p_in=0;
 936   3                      }
 937   2      
 938   2                      if(rot_front==1)
 939   2                      {
 940   3                              rot_right=1;
 941   3                              rot_left=0;
 942   3                              PWM0=55;
 943   3                              rot_front=0;
 944   3                              r_w=0;
 945   3                              c_cm2=0;
 946   3                              CML2=TML2+0X50;
 947   3                              if(CML2>TML2)
 948   3                                      CMH2=TMH2+1+0XC3;
 949   3                              else
 950   3                                      CMH2=TMH2+0XC3;
 951   3                              IEN1=IEN1|0X40;                 //CM2
 952   3                      }
 953   2      
 954   2                      if(rot_reverse==1)
 955   2                      {
 956   3                              rot_right=0;
 957   3                              rot_left=1;
 958   3                              PWM0=55;
 959   3                              rot_reverse=0;
 960   3                              r_w=0;
 961   3                              c_cm2=0;
 962   3                              CML2=TML2+0X50;
 963   3                              if(CML2>TML2)
 964   3                                      CMH2=TMH2+1+0XC3;
 965   3                              else
 966   3                                      CMH2=TMH2+0XC3;
 967   3                              IEN1=IEN1|0X40;                 //CM2
 968   3                      }
 969   2      
 970   2                      if(wire_add==1)
 971   2                      {
 972   3                              wire_back=0;
 973   3                              wire_front=1;
 974   3                              PWM1=55;
 975   3                              wire_add=0;
 976   3                              r_w=1;
 977   3                              c_cm2=0;
 978   3                              CML2=TML2+0X50;
 979   3                              if(CML2>TML2)
 980   3                                      CMH2=TMH2+1+0XC3;
 981   3                              else
 982   3                                      CMH2=TMH2+0XC3;
 983   3                              IEN1=IEN1|0X40;                 //CM2
 984   3                      }
 985   2      
C51 COMPILER V7.06   DC1                                                                   09/11/2006 08:21:54 PAGE 17  

 986   2                      if(wire_dec==1)
 987   2                      {
 988   3                              wire_back=1;
 989   3                              wire_front=0;
 990   3                              PWM1=55;
 991   3                              wire_dec=0;
 992   3                              r_w=1;
 993   3                              c_cm2=0;
 994   3                              CML2=TML2+0X50;
 995   3                              if(CML2>TML2)
 996   3                                      CMH2=TMH2+1+0XC3;
 997   3                              else
 998   3                                      CMH2=TMH2+0XC3;
 999   3                              IEN1=IEN1|0X40;                 //CM2

⌨️ 快捷键说明

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