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

📄 osc2_0929.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 693   4                                      osc_ok=0;
 694   4                              }       
 695   3                      }       
 696   2                      CTCON=CTCON|0x08;
 697   2                      IEN1=IEN1|0x02;
 698   2              }
 699   1      }
 700          
 701          void CT1_int (void) interrupt 7                 //整个摆宽
 702          {
 703   1              CTI1=0;
 704   1              gate=0;                         //out1、out2门控信号
 705   1              CTCON=CTCON&0xF3;
 706   1              if(sec_center==1)
 707   1              {
 708   2                      out2=2*out1;
 709   2                      COM=0XB6;
 710   2                      COUNT2=out2%256;
 711   2                      COUNT2=out2/256;
 712   2                      sec_center=0;
 713   2                      if(new_sector==1)
 714   2                      {
 715   3                              new_sector=0;
 716   3                              sec_change=1;
 717   3                      }
 718   2              }
 719   1              osc_dir=~osc_dir;                       //换横摆方向
 720   1              t_edge=~t_edge;                         //换边缘标志
 721   1              osc_out=~osc_out;                       //横摆输出
 722   1              if(decreased==0)
 723   1              {
 724   2                      if(center_excursion==1)
 725   2                      {
 726   3                              if(judge_ok==0)
 727   3                              {
 728   4                                      if(t_edge==0&&excursion_dir==1||t_edge==1&&excursion_dir==0)//左边缘、向右偏或右边缘、向左偏
 729   4                                      {       
 730   5                                              out1=out1+n_dc41;
 731   5                                              out2=out2+n_dc41;
 732   5                                      }
 733   4                                      if(t_edge==0&&excursion_dir==0||t_edge==1&&excursion_dir==1)
 734   4                                      {
 735   5                                              if(out1>n_dc41)
 736   5                                              {
 737   6                                                      out1=out1-n_dc41;
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 13  

 738   6                                                      out2=out2-n_dc41;
 739   6                                              }
 740   5                                      }
 741   4                                      judge_ok=1;
 742   4                              }
 743   3                              else
 744   3                              {
 745   4                                      if(t_edge==1&&excursion_dir==1||t_edge==0&&excursion_dir==0)
 746   4                                      {
 747   5                                              out1=out1-n_dc41;
 748   5                                              out2=out2-n_dc41;
 749   5                                      }
 750   4                                      if(t_edge==1&&excursion_dir==0||t_edge==0&&excursion_dir==1)
 751   4                                      {
 752   5                                              out1=out1+n_dc41;
 753   5                                              out2=out2+n_dc41;
 754   5                                      }
 755   4                                      judge_ok=0;
 756   4                                      center_excursion=0;
 757   4                              }
 758   3                              COM=0X76;
 759   3                              COUNT1=out1%256;
 760   3                              COUNT1=out1/256;
 761   3                              COM=0XB6;
 762   3                              COUNT2=out2%256;
 763   3                              COUNT2=out2/256;
 764   3                              osc_enable=0;
 765   3                              
 766   3                      }
 767   2              }
 768   1              IEN1=IEN1|0X10;                 //允许CM0,边缘停留时间
 769   1      }
 770          
 771          void CM0_int (void) interrupt 11                //边缘停留时间
 772          {
 773   1              CMI0=0;
 774   1              c_t42++;
 775   1              if(t_edge==0&&c_t42==c_t42_l||t_edge==1&&c_t42==c_t42_r)                                //左边缘
 776   1              {
 777   2                      IEN1=IEN1&0XEF;         //禁止CM0
 778   2                      CTCON=CTCON|0x02;       //CT0下降沿
 779   2                      IEN1=IEN1|0X01;         //允许CT0
 780   2                      gate=1;
 781   2                      osc_out=~osc_out;       //边缘停留时间结束
 782   2                      c_t42=0;
 783   2              }
 784   1              CML0=TML2+0X20;
 785   1              if(CML0<TML2)
 786   1                      CMH0=TMH2+1+0X4E;
 787   1              else
 788   1                      CMH0=TMH2+0X4E;
 789   1      }
 790          
 791          void CM1_INT (void) interrupt 12
 792          {
 793   1              CMI1=0;
 794   1              IEN1=IEN1&0XDF;         //CM1
 795   1              c_cm1++;
 796   1              if(c_cm1==40)
 797   1              {
 798   2                      COM=0X36;
 799   2                      COUNT0=0XA0;
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 14  

 800   2                      COUNT0=0X0F;
 801   2                      c_cm1=0;
 802   2              }
 803   1              else
 804   1              {
 805   2                      CML1=TML2+0X50;         //50ms
 806   2                      if(CML1>TML2)
 807   2                              CMH1=TMH2+1+0XC3;
 808   2                      else
 809   2                              CMH1=TMH2+0XC3;
 810   2                      IEN1=IEN1|0X20;         //CM1
 811   2              }
 812   1      }
 813          
 814          main()
 815          {
 816   1              TMOD=0x22;                              //定时器1,方式2;定时器0,方式3,两个8位定时器;
 817   1              TL1=0XFD;                               //波特率19200
 818   1              TH1=0XFD;
 819   1              TR1=1;                                  //启动定时器
 820   1              TMOD=0x23;                              //定时器0,方式3,两个8位定时器;
 821   1              TR1=0;
 822   1              TF1=0;
 823   1              S0CON=0XF8;                             //串口方式3,SM2=1,REN=1,TB8=1,RB8=0,TI=0,RI=0
 824   1      //      IP1=0X03;                               //CT0、CT1高优先级
 825   1              IP0=0X98;                               //S0=1,T1=1
 826   1              ES0=1;                                  //开串口中断
 827   1              ET1=1;
 828   1              EA=1;                                   //中断总允许
 829   1              start_t2();
 830   1              urgent_stop=0;
 831   1              osc_err=0;
 832   1              err_ok=0;
 833   1              err=0;
 834   1      BEGIN:
 835   1              if(urgent_stop==1)
 836   1              {
 837   2                      urgent_stop=0;
 838   2                      err_ok=0;
 839   2                      EX1=1;
 840   2                      EX0=1;
 841   2              }
 842   1              CTCON=0x00;
 843   1              IEN1=0x00;
 844   1      //      COM=0X36;
 845   1      //      COUNT0=0XA0;
 846   1      //      COUNT0=0X0F;                                    //启动横摆脉冲 1K
 847   1      //      COM=0X76;
 848   1      //      COUNT1=0x00;
 849   1      //      COUNT1=0x00;
 850   1      //      COM=0XB6;
 851   1      //      COUNT2=0x00;
 852   1      //      COUNT2=0x00;
 853   1              gate=0;                         //关门控
 854   1              static_out1=0;
 855   1              static_out0=0;
 856   1              osc_enable=1;                           //横摆使能
 857   1              osc_dir=0;                              //横摆方向,0-左,1-右
 858   1              osc_out=1;                              //横摆输出
 859   1              work=0;
 860   1              receive_p_out=0;
 861   1              receive_p_in=0;
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 15  

 862   1              called=0;
 863   1              start=0;
 864   1              new_sector=0;
 865   1              in_sector=0;
 866   1              nonce_sec=0;
 867   1              sec_center=0;
 868   1              sec_change=0;                           //区间过渡时调整标志
 869   1              c_change=0;                             //区间过渡时调整次数
 870   1              temp_c_change=0;
 871   1              K4=0;
 872   1              start_osc=0;
 873   1              osc_ok=0;
 874   1              t_edge=0;                               //0-左边缘 1-右边缘
 875   1              c_t42=0;
 876   1              share=0;                                //启动横摆标志
 877   1              stop_osc=0;
 878   1              decrease=0;
 879   1              decreased=0;                            //衰减标志
 880   1              decrease_ok=0;
 881   1              to_begin=0;
 882   1      
 883   1              need_para=0;
 884   1              POINTER0=0;
 885   1              SSUM=0;
 886   1              S_ANSW=0;
 887   1              POINTER1=0;
 888   1              RSUM=0;
 889   1              r_byte_nums=4;
 890   1              ans=0;
 891   1              send=0;
 892   1              resend=0;
 893   1      
 894   1              osc_l=0;
 895   1              osc_r=0;
 896   1              center_excursion=0;                     //横摆中心偏移标志(DC41)
 897   1              center_change=0;                        //自动横摆未开时,调整中心
 898   1              breadth_add=0;
 899   1              breadth_dec=0;
 900   1              osc_add=0;                              //摆宽增加次数
 901   1              osc_dec=0;
 902   1              osc=0;
 903   1              judge_ok=0;
 904   1              motor_stop=0;
 905   1              c_cm1=0;
 906   1      
 907   1              CML0=TML2+0X20;
 908   1              if(CML0<TML2)
 909   1                      CMH0=TMH2+1+0X4E;
 910   1              else
 911   1                      CMH0=TMH2+0X4E;                         //20ms
 912   1              write_8574(0xF0);
 913   1              EX1=1;
 914   1              EX0=1;
 915   1              while(start==0)                                 //等待过程中,接受点名和参数
 916   1              {
 917   2                      if(called==1)
 918   2                      {
 919   3                              ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
 920   3                              s_byte_nums=get_byte_nums(infor);
 921   3                              TR_noans();
 922   3                              called=0;
 923   3                      }
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 16  

 924   2      
 925   2                      if(receive_p_out==1)

⌨️ 快捷键说明

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