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

📄 osc2_0929.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 926   2                      {
 927   3                              point=&pp.k4;
 928   3                              for(p_sec=0;p_sec<14;p_sec++)
 929   3                                      *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
 930   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 931   3                              s_byte_nums=4;
 932   3                              TR_noans();
 933   3                              receive_p_out=0;
 934   3                      }
 935   2      
 936   2                      if(receive_p_in==1)
 937   2                      {
 938   3                              point=&pp.x[nonce_sec][0];
 939   3                              for(p_sec=0;p_sec<6;p_sec++)
 940   3                                      *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
 941   3      
 942   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 943   3                              s_byte_nums=4;
 944   3                              TR_noans();
 945   3                              receive_p_in=0;
 946   3                      }
 947   2      
 948   2                      if(osc_l==1)
 949   2                      {
 950   3                              COM=0X36;               //1KHz
 951   3                              COUNT0=0X10;
 952   3                              COUNT0=0X27;
 953   3                              gate=1;                 //给出横摆脉冲
 954   3                              osc_dir=0;              //左
 955   3                              osc_enable=0;           //开使能
 956   3                              c_cm1=0;
 957   3                              CML1=TML2+0X50;         //50ms
 958   3                              if(CML1>TML2)
 959   3                                      CMH1=TMH2+1+0XC3;
 960   3                              else
 961   3                                      CMH1=TMH2+0XC3;
 962   3                              IEN1=IEN1|0X20;         //CM1
 963   3                              osc_l=0;
 964   3                      }
 965   2      
 966   2                      if(osc_r==1)
 967   2                      {
 968   3                              COM=0X36;               //1KHz
 969   3                              COUNT0=0X10;
 970   3                              COUNT0=0X27;
 971   3                              gate=1;         //开8254门控信号
 972   3                              osc_dir=1;              //右
 973   3                              osc_enable=0;           //开使能
 974   3                              c_cm1=0;
 975   3                              CML1=TML2+0X50;         //50ms
 976   3                              if(CML1>TML2)
 977   3                                      CMH1=TMH2+1+0XC3;
 978   3                              else
 979   3                                      CMH1=TMH2+0XC3;
 980   3                              IEN1=IEN1|0X20;         //CM1
 981   3                              osc_r=0;
 982   3                      }
 983   2      
 984   2                      if(motor_stop==1)
 985   2                      {
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 17  

 986   3                              gate=0;         //关横摆脉冲
 987   3                              osc_enable=1;
 988   3                              motor_stop=0;
 989   3                      }
 990   2      
 991   2                      if(urgent_stop==1)
 992   2                              goto BEGIN;
 993   2              }
 994   1              
 995   1              if(pp.k4==ON)
 996   1              {
 997   2                      const1=pp.a41;
 998   2                      c_t42_l=pp.t42_l*5;                             //pp.t42_l/10*1000/50
 999   2                      c_t42_r=pp.t42_r*5;
1000   2                      c_change=pp.t43%256;
1001   2                      n_dc41=pp.dc41*80/3;
1002   2                      n_da41=pp.da41*80/3;
1003   2                      temp_out0=900000/pp.v41;                                //横摆脉冲, 时钟4M,4*60*0.01*1000000
1004   2                      static_out0=900000/start_v;
1005   2                      if(temp_out0>=static_out0)
1006   2                              delt_out0=temp_out0-static_out0;
1007   2                      else
1008   2                              delt_out0=static_out0-temp_out0;
1009   2      
1010   2                      temp_out1=pp.a41*80/3;                          //横摆半宽脉冲
1011   2                      delt_out1=temp_out1;
1012   2                      
1013   2                      out0=static_out0;
1014   2                      out1=delt_out1/c_change;                                        
1015   2                      out2=2*out1;                                    //横摆整宽脉冲
1016   2                      COM=0X36;
1017   2                      COUNT0=out0%256;
1018   2                      COUNT0=out0/256;
1019   2                      COM=0X76;
1020   2                      COUNT1=out1%256;
1021   2                      COUNT1=out1/256;                                //半个摆宽
1022   2                      COM=0XB6;
1023   2                      COUNT2=out1%256;
1024   2                      COUNT2=out1/256;                                //整个摆宽
1025   2              }
1026   1              work=3;                                 //关8254门控信号
1027   1              nonce_sec=0;
1028   1              do
1029   1              {
1030   2                      if(start_osc==1)                //开始横摆
1031   2                      {
1032   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
1033   3                              s_byte_nums=4;
1034   3                              TR_noans();
1035   3                              osc_dir=0;              //方向——左
1036   3                              osc_enable=0;           //开横摆使能
1037   3                              CTCON=CTCON|0x08;       //CT1下降沿
1038   3                              IEN1=IEN1|0X02;         //允许CT1
1039   3                              sec_center=1;
1040   3                              sec_change=1;
1041   3                              temp_c_change=0;
1042   3                              share=1;
1043   3                              osc_ok=1;
1044   3                              start_osc=0;
1045   3                              gate=1;
1046   3                              osc_out=1;
1047   3                      }
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 18  

1048   2      
1049   2                      if(in_sector==1&&new_sector==1&&osc_ok==0&&K4==ON)
1050   2                      {
1051   3                              c_t42_l=pp.x[nonce_sec][1]*5;                           //pp.t42_l/10*1000/50
1052   3                              c_t42_r=pp.x[nonce_sec][2]*5;
1053   3                              c_change=pp.x[nonce_sec][5]%256;
1054   3                              const1=pp.x[nonce_sec][4];
1055   3                              temp_out0=900000/pp.x[nonce_sec][3];                            //横摆脉冲, 时钟4M,4*60*0.01*1000000
1056   3                              static_out0=900000/start_v;
1057   3                              if(temp_out0>=static_out0)
1058   3                                      delt_out0=temp_out0-static_out0;
1059   3                              else
1060   3                                      delt_out0=static_out0-temp_out0;
1061   3                                      
1062   3                              temp_out1=pp.x[nonce_sec][4]*80/3;
1063   3                              delt_out1=temp_out1;
1064   3                                      
1065   3                              out0=static_out0;
1066   3                              out1=delt_out1/c_change;
1067   3                              out2=2*out1;                                    //横摆整宽脉冲
1068   3                              COM=0X36;
1069   3                              COUNT0=out0%256;
1070   3                              COUNT0=out0/256;
1071   3                              COM=0X76;
1072   3                              COUNT1=out1%256;
1073   3                              COUNT1=out1/256;                                //半个摆宽
1074   3                              COM=0XB6;
1075   3                              COUNT2=out1%256;
1076   3                              COUNT2=out1/256;                                //整个摆宽
1077   3                              
1078   3                              osc_dir=0;              //方向——左
1079   3                              osc_enable=0;           //开横摆使能
1080   3                              CTCON=CTCON|0x08;       //CT1下降沿
1081   3                              IEN1=IEN1|0X02;         //允许CT1
1082   3                              osc_ok=1;
1083   3                              sec_center=1;
1084   3                              sec_change=1;
1085   3                              temp_c_change=0;
1086   3                              share=1;
1087   3                              osc_add=0;
1088   3                              osc_dec=0;
1089   3                              gate=1;
1090   3                              osc_out=1;
1091   3                      }
1092   2                      if(urgent_stop==1)
1093   2                              goto BEGIN;
1094   2                      if(osc_ok==0&&center_excursion==1)      //未开自动横摆时的左右调整
1095   2                      {
1096   3                              if(excursion_dir==0)
1097   3                                      osc_dir=0;              //左
1098   3                              else
1099   3                                      osc_dir=1;
1100   3                              CTCON=CTCON|0X02;
1101   3                              COM=0X76;
1102   3                              COUNT1=10;
1103   3                              COUNT1=0;
1104   3                              IEN1=IEN1|0X01;
1105   3                              gate=1;
1106   3                              osc_enable=0;           //开横摆使能
1107   3                              center_excursion=0;
1108   3                              center_change=1;
1109   3                      }
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 19  

1110   2      
1111   2                      if(urgent_stop==1)
1112   2                              goto BEGIN;
1113   2              }while(decrease==0);
1114   1              
1115   1              while(to_begin==0)
1116   1              {
1117   2                      if(urgent_stop==1)
1118   2                              goto BEGIN;
1119   2              }
1120   1              goto BEGIN;
1121   1      }
C51 COMPILER V7.06   OSC2_0929                                                             03/27/2006 17:02:25 PAGE 20  

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


K4 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
osc_out. . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C6H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
osc_ok . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0001H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
P4 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C0H  1
resend . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0002H  1
c_decrease . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
P5 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C4H  1
err_ok . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0003H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
sec_change . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0004H  1
excursion_dir. . . . . . . . . . . . .  PUBLIC   DATA   BIT      0005H  1
CMH0 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C9H  1
out0 . . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_LONG   0000H  4
CMI0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CCH  1
CMH1 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00CAH  1
out1 . . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_LONG   0004H  4
CMI1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CDH  1
out2 . . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_LONG   0008H  4
FF . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0001H  1
p_sec. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0002H  1
CML0 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A9H  1
CM1_INT. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
IEN1 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E8H  1
CML1 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00AAH  1
osc_change . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0006H  1
CTI0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C8H  1
osc_enable . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C4H  1
CTI1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C9H  1
osc_l. . . . . . . . . . . . . . . .

⌨️ 快捷键说明

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