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

📄 avc_1027.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 757          void CM0_INT (void) interrupt 11
 758          {
 759   1              CMI0=0;
 760   1              IEN1=IEN1&0XEF;                 //CM0
 761   1              c_cm0++;
 762   1              if(c_cm0==40)
 763   1              {
 764   2                      COM=0X36;
 765   2                      COUNT0=0XA0;
 766   2                      COUNT0=0X0F;
 767   2                      c_cm0=0;
 768   2              }
 769   1              else
 770   1              {
 771   2                      CML0=TML2+0X50;         //50ms
 772   2                      if(CML0>TML2)
 773   2                              CMH0=TMH2+1+0XC3;
 774   2                      else
 775   2                              CMH0=TMH2+0XC3;
 776   2                      IEN1=IEN1|0X10;         //CM0
 777   2              }
 778   1      }
 779          
 780          main()
 781          {
 782   1              TMOD=0x22;                              //定时器1,方式2;定时器0,方式3,两个8位定时器;
 783   1              TL1=0XFD;                               //波特率9600
 784   1              TH1=0XFD;
 785   1              TR1=1;                                  //启动定时器
 786   1              TMOD=0x23;                              //定时器0,方式3,两个8位定时器;
 787   1              TR1=0;
 788   1              TF1=0;
 789   1              S0CON=0XF8;                             //串口方式3,SM2=1,REN=1,TB8=1,RB8=0,TI=0,RI=0
 790   1              IP1=0X01;                               //CT0高优先级
 791   1              IP0=0X98;                               //S0=1,T1=1
 792   1              ES0=1;                                  //开串口中断
 793   1              ET1=1;
 794   1              EAD=1;                                  //AD中断允许
 795   1              EX1=1;
 796   1              EA=1;                                   //中断总允许
C51 COMPILER V7.06   AVC_1027                                                              09/11/2006 08:22:21 PAGE 14  

 797   1              start_t2();
 798   1      
 799   1              COM=0XB6;
 800   1              COUNT2=0x00;
 801   1              COUNT2=0x00;
 802   1              AD1=0;
 803   1              AD2=0;
 804   1              AD3=0;
 805   1              AD4=0;
 806   1              AD5=0;
 807   1              U51=0;
 808   1              urgent_stop=0;
 809   1              avc_err=0;
 810   1              err_ok=0;
 811   1              err=0;
 812   1      
 813   1      BEGIN:  if(urgent_stop==1)
 814   1              {
 815   2                      urgent_stop=0;
 816   2                      err_ok=0;
 817   2                      EX1=1;
 818   2                      EX0=1;
 819   2              }
 820   1              CTCON=0X00;
 821   1              IEN1=0x00;
 822   1              COM=0x36;
 823   1              COUNT0=0x00;
 824   1              COUNT0=0x00;
 825   1              COM=0X76;
 826   1              COUNT1=0x00;
 827   1              COUNT1=0x00;
 828   1              gate=0;                 //关门控
 829   1              avc_enable=1;
 830   1              avc_dir=1;
 831   1              externel_voltage=1;
 832   1              temp_voltage=1;
 833   1              work=0;
 834   1              called=0;
 835   1              start=0;
 836   1              pgj=0;
 837   1              in_sector=0;
 838   1              new_sector=0;
 839   1              start_avc=0;
 840   1              avc_ok=0;
 841   1              new_circle=1;
 842   1              c_sample=0;
 843   1              ad_finish=1;                    //AD转换及处理完成标志
 844   1              pulse_base=0;                   //峰、基值标志 0-基值、1-峰值
 845   1              stop_avc=0;
 846   1              decrease=0;
 847   1              lift=0;
 848   1              lift_ok=0;
 849   1              lift_complete=0;
 850   1              to_begin=0;
 851   1      
 852   1              need_para=0;
 853   1              POINTER0=0;
 854   1              SSUM=0;
 855   1              S_ANSW=0;
 856   1              POINTER1=0;
 857   1              RSUM=0;
 858   1              ans=0;
C51 COMPILER V7.06   AVC_1027                                                              09/11/2006 08:22:21 PAGE 15  

 859   1              send=0;
 860   1              resend=0;
 861   1              r_byte_nums=4;
 862   1              send_p=0;
 863   1              send_p_ok=0;
 864   1      
 865   1      //      avc=0;
 866   1              avc_up=0;
 867   1              avc_down=0;
 868   1              motor_stop=0;
 869   1              touch=0;
 870   1              touched=0;
 871   1      
 872   1              PWMP=12;                                        //采样保持脉冲,2K
 873   1              PWM0=127;
 874   1              COM=0X36;                                       //弧长点动速度,1K
 875   1              COUNT0=4000%256;
 876   1              COUNT0=4000/256;
 877   1      
 878   1              CML0=TML2+0X20;
 879   1              if(CML0<TML2)
 880   1                      CMH0=TMH2+1+0X4E;
 881   1              else
 882   1                      CMH0=TMH2+0X4E;                         //20ms
 883   1              lamp=0xF0;
 884   1              write_8574(lamp);
 885   1              while(start==0)                                 //等待过程中,接受点名和参数
 886   1              {
 887   2      
 888   2                      if(called==1)
 889   2                      {
 890   3                              ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
 891   3                              s_byte_nums=get_byte_nums(infor);
 892   3                              TR_noans();
 893   3                              called=0;
 894   3                      }
 895   2      
 896   2                      if(send_p==1)
 897   2                      {
 898   3                              while(send_p_ok==0)
 899   3                              {
 900   4                                      if(receive_p_out==1)
 901   4                                      {
 902   5                                              point=&pp.k5;
 903   5                                              for(p_sec=0;p_sec<14;p_sec++)
 904   5                                                      *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
 905   5                                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 906   5                                              s_byte_nums=4;
 907   5                                              TR_noans();
 908   5                                              c_lift=80*pp.h51/3;
 909   5                                              receive_p_out=0;                
 910   5                                      }
 911   4                      
 912   4                                      if(receive_p_in==1)
 913   4                                      {
 914   5                                              point=&pp.x[nonce_sec][0];
 915   5                                              for(p_sec=0;p_sec<4;p_sec++)
 916   5                                                      *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
 917   5                                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 918   5                                              s_byte_nums=4;
 919   5                                              TR_noans();
 920   5                                              receive_p_in=0;
C51 COMPILER V7.06   AVC_1027                                                              09/11/2006 08:22:21 PAGE 16  

 921   5                                      }
 922   4                              }
 923   3                              send_p_ok=0;
 924   3                              send_p=0;
 925   3                              EX1=1;
 926   3                              EX0=1;
 927   3                      }
 928   2      
 929   2                      if(avc_up==1)
 930   2                      {
 931   3                              COM=0X36;               //450Hz
 932   3                              COUNT0=0X10;
 933   3                              COUNT0=0X27;
 934   3                              avc_dir=1;              //方向——上
 935   3                              avc_enable=0;           //使能
 936   3                              gate=1;
 937   3                              c_cm0=0;
 938   3                              CML0=TML2+0X50;         //50ms
 939   3                              if(CML0>TML2)
 940   3                                      CMH0=TMH2+1+0XC3;
 941   3                              else
 942   3                                      CMH0=TMH2+0XC3;
 943   3                              IEN1=IEN1|0X10;         //CM0
 944   3                              avc_up=0;
 945   3                      }
 946   2                      if(avc_down==1)
 947   2                      {
 948   3                              COM=0X36;               //450Hz
 949   3                              COUNT0=0X10;
 950   3                              COUNT0=0X27;
 951   3                              avc_dir=0;              //方向——下
 952   3                              avc_enable=0;
 953   3                              gate=1;
 954   3                              c_cm0=0;
 955   3                              CML0=TML2+0X50;         //50ms
 956   3                              if(CML0>TML2)
 957   3                                      CMH0=TMH2+1+0XC3;
 958   3                              else
 959   3                                      CMH0=TMH2+0XC3;
 960   3                              IEN1=IEN1|0X10;         //CM0
 961   3                              avc_down=0;
 962   3                      }
 963   2                      if(motor_stop==1)
 964   2                      {
 965   3                              gate=0;                 //关8254门控信号
 966   3                              avc_enable=1;                   //关弧长使能
 967   3                              motor_stop=0;
 968   3                      }
 969   2      
 970   2                      if(lift==1)
 971   2                      {
 972   3                              COM=0X36;
 973   3                              COUNT0=0XA0;
 974   3                              COUNT0=0X0F;
 975   3                              COM=0X76;
 976   3                              COUNT1=c_lift%256;
 977   3                              COUNT1=c_lift/256;
 978   3                              CTCON=CTCON|0X01;       //CT0下降沿
 979   3                              IEN1=IEN1|0X01;                         //允许CT0
 980   3                              avc_dir=1;                                      //弧长方向——上
 981   3                              externel_voltage=0;
 982   3                              avc_enable=0;                                   //开弧长使能
C51 COMPILER V7.06   AVC_1027                                                              09/11/2006 08:22:21 PAGE 17  

 983   3                              gate=1;
 984   3                              while(lift_complete==0);
 985   3                              externel_voltage=1;
 986   3                              lift_complete=0;
 987   3                              lift=0;
 988   3                              if(urgent_stop==1)
 989   3                                      goto BEGIN;
 990   3                              lamp=lamp&0xF7;
 991   3                              write_8574(lamp);
 992   3                              EX1=1;
 993   3                      }
 994   2      
 995   2                      if(pgj==1)
 996   2                      {
 997   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 998   3                              s_byte_nums=4;
 999   3                              TR_noans();
1000   3                              avc_dir=0;              //方向——下
1001   3                              avc_enable=0;
1002   3                              gate=1;
1003   3                              while(lift==0);
1004   3                              COM=0X36;
1005   3                              COUNT0=0XA0;
1006   3                              COUNT0=0X0F;
1007   3                              COM=0X76;
1008   3                              COUNT1=c_lift%256;
1009   3                              COUNT1=c_lift/256;
1010   3                              CTCON=CTCON|0X01;       //CT0下降沿
1011   3                              IEN1=IEN1|0X01;                         //允许CT0
1012   3                              avc_dir=1;                                      //弧长方向——上

⌨️ 快捷键说明

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