📄 osc2_0929.lst
字号:
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&¢er_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 + -