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

📄 osc3.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 920   3                      }
 921   2      
 922   2                      if(receive_p_out==1)
 923   2                      {
C51 COMPILER V7.06   OSC3                                                                  09/27/2005 14:37:42 PAGE 16  

 924   3                              point=&pp.k4;
 925   3                              for(p_sec=0;p_sec<14;p_sec++)
 926   3                                      *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
 927   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 928   3                              s_byte_nums=4;
 929   3                              TR_noans();
 930   3                              receive_p_out=0;
 931   3                      }
 932   2      
 933   2                      if(receive_p_in==1)
 934   2                      {
 935   3                              point=&pp.x[nonce_sec][0];
 936   3                              for(p_sec=0;p_sec<6;p_sec++)
 937   3                                      *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
 938   3      
 939   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 940   3                              s_byte_nums=4;
 941   3                              TR_noans();
 942   3                              receive_p_in=0;
 943   3                      }
 944   2      
 945   2                      if(osc_l==1)
 946   2                      {
 947   3                              gate=1;         //给出横摆脉冲
 948   3                              osc_dir=0;              //左
 949   3                              osc_enable=0;           //开使能
 950   3                              osc_l=0;
 951   3                      }
 952   2      
 953   2                      if(osc_r==1)
 954   2                      {
 955   3                              gate=1;         //开8254门控信号
 956   3                              osc_dir=1;              //右
 957   3                              osc_enable=0;           //开使能
 958   3                              osc_r=0;
 959   3                      }
 960   2      
 961   2                      if(motor_stop==1)
 962   2                      {
 963   3                              gate=0;         //关横摆脉冲
 964   3                              osc_enable=1;
 965   3                              motor_stop=0;
 966   3                      }
 967   2      
 968   2                      if(urgent_stop==1)
 969   2                              goto BEGIN;
 970   2              }
 971   1              
 972   1              if(pp.k4==ON)
 973   1              {
 974   2                      const1=pp.a41;
 975   2                      c_t42_l=pp.t42_l*5;                             //pp.t42_l/10*1000/50
 976   2                      c_t42_r=pp.t42_r*5;
 977   2                      c_change=pp.t43%256;
 978   2                      
 979   2                      temp_out0=900000/pp.v41;                                //横摆脉冲, 时钟4M,4*60*0.01*1000000
 980   2                      static_out0=900000/start_v;
 981   2                      if(temp_out0>=static_out0)
 982   2                              delt_out0=temp_out0-static_out0;
 983   2                      else
 984   2                              delt_out0=static_out0-temp_out0;
 985   2      
C51 COMPILER V7.06   OSC3                                                                  09/27/2005 14:37:42 PAGE 17  

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

1048   3                                      COM=0X76;
1049   3                                      COUNT1=out1%256;
1050   3                                      COUNT1=out1/256;                                //半个摆宽
1051   3                                      COM=0XB6;
1052   3                                      COUNT2=out1%256;
1053   3                                      COUNT2=out1/256;                                //整个摆宽
1054   3                                      if(K4==ON&&osc_started==1)
1055   3                                      {
1056   4                                              osc_dir=0;              //方向——左
1057   4                                              osc_enable=0;           //开横摆使能
1058   4                                              CTCON=CTCON|0x08;       //CT1下降沿
1059   4                                              IEN1=IEN1|0X02;         //允许CT1
1060   4                                              osc_ok=1;
1061   4                                              sec_center=1;
1062   4                                              sec_change=1;
1063   4                                              temp_c_change=0;
1064   4                                              share=1;
1065   4                                              osc_add=0;
1066   4                                              osc_dec=0;
1067   4                                              gate=1;
1068   4                                              osc_out=1;
1069   4                                      }
1070   3                      }
1071   2                      if(urgent_stop==1)
1072   2                              goto BEGIN;
1073   2                      if(osc_ok==0&&center_excursion==1)      //未开自动横摆时的左右调整
1074   2                      {
1075   3                              if(excursion_dir==0)
1076   3                                      osc_dir=0;              //左
1077   3                              else
1078   3                                      osc_dir=1;
1079   3                              CTCON=CTCON|0X02;
1080   3                              COM=0X76;
1081   3                              COUNT1=10;
1082   3                              COUNT1=0;
1083   3                              IEN1=IEN1|0X01;
1084   3                              gate=1;
1085   3                              osc_enable=0;           //开横摆使能
1086   3                              center_excursion=0;
1087   3                              center_change=1;
1088   3                      }
1089   2      
1090   2                      if(urgent_stop==1)
1091   2                              goto BEGIN;
1092   2              }while(decrease==0);
1093   1              
1094   1              while(to_begin==0)
1095   1              {
1096   2                      if(urgent_stop==1)
1097   2                              goto BEGIN;
1098   2              }
1099   1              goto BEGIN;
1100   1      }
C51 COMPILER V7.06   OSC3                                                                  09/27/2005 14:37:42 PAGE 19  

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
temp_c_t2. . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  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   0001H  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_INT    0000H  2
CMI0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CCH  1
out1 . . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0002H  2
out2 . . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0004H  2
FF . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0002H  1
p_sec. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0003H  1
CML0 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A9H  1
IEN1 . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E8H  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. . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0007H  1
CTI2 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CAH  1
delt_out0. . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0004H  2
share. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0006H  1
delt_out1. . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0007H  2
P1_6 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0096H  1
P1_7 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0097H  1
osc_r. . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0008H  1
EX0_INT. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
EX1_INT. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  get_err. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
PROGRAM. . . . . . . . . . . . . . . .  TYPEDEF  -----  STRUCT   -----  148
  k4 . . . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0000H  2
  syn_type . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0002H  2
  t41. . . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0004H  2
  t41_sd . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0006H  2
  t42_l. . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    0008H  2
  t42_r. . . . . . . . . . . . . . . .  MEMBER   -----  U_INT    000AH  2
  v41. . . . . . . . . . . . . . . . .  MEMBER   -----  U_IN

⌨️ 快捷键说明

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