📄 改猛.txt
字号:
ELSE CALL PWM_OUT;
END;
ELSE IF AIM_SPD>300 THEN DO;
IF RUN_SPD<(AIM_SPD-300) THEN DO;
IF ZXS>20 THEN DO;
ZXS=1;
CALL PWM;
END;
ELSE CALL PWM_OUT;
END;
ELSE DO;
IF ZXS>30 THEN DO;
ZXS=1;
CALL PWM;
END;
ELSE CALL PWM_OUT;
END;
END;
ELSE DO;
IF ZXS>600 THEN DO;
ZXS=1;
CALL PWM;
END;
ELSE CALL PWM_OUT;
END;
END;
IF (PIN=0 AND QIN=0) THEN
ORDER=0;
ELSE IF (PIN=0 AND QIN=1) THEN
ORDER=1;
ELSE IF (PIN=1 AND QIN=0) THEN
ORDER=2;
ELSE IF (PIN=1 AND QIN=1) THEN
ORDER=3;
IF START_SIGN=1 THEN
CALL HSO_PROCESS;
ELSE DO;
IF RUN_SPD>400 THEN CALL STOP;
ELSE DO;
AA=1;
BB=1;
CC=1;
DD=1;
END;
END;
P2=2FH;
IF RUN_SPD>=350 THEN DO;
SPD_JS=SPD_JS+1;
IF SPD_JS=12 THEN DO;
P2=1FH;
SPD_JS=0;
LL1=T8253_0;
LL2=T8253_0;
SPD1=LL2*256+LL1;
SPD1=0FFFFH-SPD1;
RUN_SPD= 39063/SPD1 ;
RUN_SPD=RUN_SPD*12;
RUN_SPD=RUN_SPD-RUN_SPD/10+45;
CON_8253=30H;
T8253_0=0FFH;
T8253_0=0FFH;
P2=0FFH;
END;
END;
ELSE DO;
P2=1FH;
SPD_JS=0;
LL1=T8253_0;
LL2=T8253_0;
SPD1=LL2*256+LL1;
SPD1=0FFFFH-SPD1;
RUN_SPD= 39063/SPD1 ;
CON_8253=30H;
T8253_0=0FFH;
T8253_0=0FFH;
P2=0FFH;
END;
IF RUN_SPD>=100 THEN DO;
MM=MM+1;
IF MM=100 THEN
DO;
MM=0;
DISP_STATUS=0;
CALL DISPLAY;
END;
END;
ENABLE;
END INT0;
/***********内部计数器0****************/
T0:PROCEDURE INTERRUPT 1;
DISABLE;
IF DIRECT=0 THEN /*正转*/
DO;
IF S_T0=1 THEN
DO;
TR0=0;
AA=0;
S_T0=2;
TH0=(0FFFFH-324 )/100H ;
TL0=(0FFFFH-324 )-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=0 THEN
DO;
CC=0;
TR0=0;
S_T0=3;
TH0=(0FFFFH-324 )/100H ;
TL0=(0FFFFH-324 )-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=2 THEN
AA=1;
ELSE IF S_T0=3 THEN
CC=1;
ELSE IF S_T0=4 THEN
DO;
CC=1;
AA=0;
END;
ELSE IF S_T0=5 THEN
DO;
AA=1;
CC=0;
END;
ELSE IF S_T0=6 THEN
AA=0;
ELSE IF S_T0=7 THEN
CC=0;
ELSE IF S_T0=8 THEN
DO;
CC=0;
S_T0=10;
TH0=(0FFFFH-256)/100H ;
TL0=(0FFFFH-256)-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=9 THEN
DO;
AA=0;
S_T0=11;
TH0=(0FFFFH-256)/100H ;
TL0=(0FFFFH-256)-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=10 THEN
CC=1;
ELSE IF S_T0=11 THEN
AA=1;
END;
ELSE DO; /*反转*/
IF S_T0=1 THEN
DO;
TR0=0;
BB=0;
S_T0=2;
TH0=(0FFFFH-324 )/100H ;
TL0=(0FFFFH-324 )-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=0 THEN
DO;
DD=0;
TR0=0;
S_T0=3;
TH0=(0FFFFH-324 )/100H ;
TL0=(0FFFFH-324 )-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=2 THEN
BB=1;
ELSE IF S_T0=3 THEN
DD=1;
ELSE IF S_T0=4 THEN
DO;
DD=1;
BB=0;
END;
ELSE IF S_T0=5 THEN
DO;
BB=1;
DD=0;
END;
ELSE IF S_T0=6 THEN
BB=0;
ELSE IF S_T0=7 THEN
DD=0;
ELSE IF S_T0=8 THEN
DO;
DD=0;
S_T0=10;
TH0=(0FFFFH-256)/100H ;
TL0=(0FFFFH-256)-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=10 THEN
DD=1;
ELSE IF S_T0=9 THEN
DO;
BB=0;
S_T0=11;
TH0=(0FFFFH-256)/100H ;
TL0=(0FFFFH-256)-TH0*100H;
TR0=1;
END;
ELSE IF S_T0=11 THEN
BB=1;
END;
ENABLE;
END T0;
/***********内部计数器1****************/
T1:PROCEDURE INTERRUPT 3;
DISABLE;
IF DIRECT=0 THEN /*正转*/
DO;
IF S_T1=1 THEN
DO;
TR1=0;
BB=0;
S_T1=2;
TH1=(0FFFFH-324 )/100H ;
TL1=(0FFFFH-324 )-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=0 THEN
DO;
TR1=0;
DD=0;
S_T1=3;
TH1=(0FFFFH-324 )/100H ;
TL1=(0FFFFH-324 )-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=2 THEN
BB=1;
ELSE IF S_T1=3 THEN
DD=1;
ELSE IF S_T1=4 THEN
DO;
DD=1;
BB=0;
END;
ELSE IF S_T1=5 THEN
DO;
DD=0;
BB=1;
END;
ELSE IF S_T1=6 THEN
BB=0;
ELSE IF S_T1=7 THEN
DD=0;
ELSE IF S_T1=8 THEN
DO;
DD=0;
S_T1=10;
TH1=(0FFFFH-256)/100H ;
TL1=(0FFFFH-256)-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=10 THEN
DD=1;
ELSE IF S_T1=9 THEN
DO;
BB=0;
S_T1=11;
TH1=(0FFFFH-256)/100H ;
TL1=(0FFFFH-256)-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=10 THEN
BB=1;
END;
ELSE DO; /*反转*/
IF S_T1=1 THEN
DO;
TR1=0;
CC=0;
S_T1=2;
TH1=(0FFFFH-324 )/100H ;
TL1=(0FFFFH-324 )-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=0 THEN
DO;
TR1=0;
AA=0;
S_T1=3;
TH1=(0FFFFH-324 )/100H ;
TL1=(0FFFFH-324 )-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=2 THEN
CC=1;
ELSE IF S_T1=3 THEN
AA=1;
ELSE IF S_T1=4 THEN
DO;
AA=1;
CC=0;
END;
ELSE IF S_T1=5 THEN
DO;
CC=1;
AA=0;
END;
ELSE IF S_T1=6 THEN
CC=0;
ELSE IF S_T1=7 THEN
AA=0;
ELSE IF S_T1=8 THEN
DO;
AA=0;
S_T1=10;
TH1=(0FFFFH-256)/100H ;
TL1=(0FFFFH-256)-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=10 THEN
AA=1;
ELSE IF S_T1=9 THEN
DO;
CC=0;
S_T1=11;
TH1=(0FFFFH-256)/100H ;
TL1=(0FFFFH-256)-TH1*100H;
TR1=1;
END;
ELSE IF S_T1=11 THEN
CC=1;
END;
ENABLE;
END T1;
/***********内部计数器2****************/
INT5:PROCEDURE INTERRUPT 5;
IF TF2=1 THEN
DO;
TF2=0;
T2MOD=02H;
TH2 = 00H;
TL2 = 00H;
RCAP2L= 00H;
RCAP2H= 00H;
T2CON = 06H;
END;
END INT5;
/***********外部中断1****************/
INT1:PROCEDURE INTERRUPT 2 ;
DO;
P0=0FFH;
P2=3FH;
IF P00=1 THEN
CALL KEY;
ELSE
DO CASE S_ADC;
ADC0=ADC0809_0;
ADC1=ADC0809_1;
ADC2=ADC0809_2;
ADC3=ADC0809_3;
ADC4=ADC0809_4;
END;
END;
END INT1;
MAINPROG:DO; /*主程序*/
TMOD=55H;
T2MOD= 02H; /*定时器2控制方式寄存器*/
TH2 = 01H; /*定时器2高字节*/
TL2 = 01H; /*定时器2低字节*/
RCAP2L= 00H; /*定时器2捕捉低字节*/
RCAP2H= 00H; /*定时器2捕捉高字节*/
T2CON = 085H; /*定时器、计数器2控制寄存
器*/
SPD3=0;
VV=0;
CON_8253=30H; /*8253计数器/定时器0 初始化
*/
T8253_0=0FFH;
T8253_0=0FFH;
CON_8253=0B6H; /*8253计数器/定时器2初始化
*/
T8253_2=07DH;
T8253_2=00H;
R0=0;
R0=0;
CON_8253=72H;
T8253_1=01H;
T8253_1=00H;
IE = 08FH; /*中断允许控制寄存器*/
IP = 0FH;
TCON= 01H; /*定时器、计数器0,1控制
寄存器*/
S_ADC=4;
VV=0;
RUN_SPD=0;
DAC0832=0FFH;
START_SIGN=0;
DIRECT=0;
SPD3=2;
TI=200;
BID=0;
DIRECT=0;
S_SPD=0;
MM=0;
A15=1;
TR2=1;
SPD4=0;
START_SIGN=0;
AIM_SPD=1000;
KEY_TL=0;
SPD_STEP=5;
SIG_VSS1=0;
E0=0;
VSS_SPD(1)= 0 ;
PP=1;
TEM_S=0;
TEM_I=0;
PWM_V=0H;
TT=0;
SPD_D=80;
ZXS=0;
MAINLOOP:DO; /*主循环程序*/
DECLARE KEY_JS BYTE ; /*键盘延时计数控制*/
DECLARE ADC_JS BYTE ; /*A/D转化延时计数控
制*/
P2=0FH;
IF AIM_SPD<=100 THEN PWM_V=10H;
ELSE IF AIM_SPD<=200 THEN PWM_V=15H;
ELSE IF AIM_SPD<=500 THEN PWM_V=20H;
ELSE IF AIM_SPD<=700 THEN PWM_V=30H;
ELSE IF AIM_SPD<=900 THEN PWM_V=30H;
ELSE PWM_V=3EH;
IF AIM_SPD<=100 THEN T_V=2;
ELSE IF AIM_SPD<=300 THEN T_V=4;
ELSE IF AIM_SPD<=500 THEN T_V=20;
ELSE IF AIM_SPD<=700 THEN T_V=30;
ELSE IF AIM_SPD<=900 THEN T_V=30;
ELSE IF AIM_SPD<=1500 THEN T_V=30;
IF AIM_SPD<=500 THEN SPD_D=3000;
ELSE IF AIM_SPD<=900 THEN SPD_D=3000;
ELSE IF AIM_SPD<=1500 THEN SPD_D=3000;
IF RUN_SPD>100 THEN DO;
TEM_S=TEM_S+1;
IF TEM_S=5 THEN
DO;
IF TEM_I<1000 THEN DO;
TEM(TEM_I)=RUN_SPD;
TEM(TEM_I+1)=PWM_WIDTH;
TEM_I=TEM_I+2;
END;
TEM_S=0;
END;
END;
IF KEY_TL=1 THEN
DO;
KEY_JS=KEY_JS+1;
IF KEY_JS=20 THEN
DO;
KEY_TL=0;
KEY_JS=0;
END;
END;
IF RUN_SPD<=100 THEN DO;
MM=MM+1;
IF MM= 150 THEN
DO;
MM=0;
DISP_STATUS=0;
CALL DISPLAY;
R0=0;
R0=0;
R0=0;
R0=0;
END;
END;
/* IF START_SIGN=1 THEN DO;
TT=TT+1;
IF TT=30 THEN DO;
IF RUN_SPD>AIM_SPD THEN
SPD5=RUN_SPD-AIM_SPD;
ELSE SPD5=AIM_SPD-RUN_SPD;
IF SPD5>=SPD_D THEN
CALL PWM;
TT=0;
END;
END;
*/
ADC_JS=ADC_JS+1;
IF ADC_JS=100 THEN DO;
PP=PP+1;
IF PP=100 THEN DO;
SS=0;
PP=0;
END;
IF S_ADC=4 THEN
DO;
S_ADC=0;
ADC0809_0 =0;
END;
ELSE IF S_ADC=0 THEN
DO;
S_ADC=1;
ADC0809_1 =0;
END;
ELSE IF S_ADC=1 THEN
DO;
S_ADC=2;
ADC0809_2 =0;
END;
ELSE IF S_ADC=2 THEN
DO;
S_ADC=3;
ADC0809_3 =0;
END;
ELSE IF S_ADC=3 THEN
DO;
S_ADC=4;
ADC0809_4 =0;
END;
ADC_JS=0;
END;
IF PP=0 THEN DO;
RUN_SPD=0;
CALL DISPLAY;
END;
/* IF START_SIGN=1 THEN DO;
IF (ADC0809_1>60H AND AA=0) THEN AA=1;
IF (ADC0809_1<=60H AND AA=0) THEN AA=0;
IF (ADC0809_2>60H AND BB=0) THEN BB=1;
IF (ADC0809_2<=60H AND BB=0) THEN BB=0;
IF (ADC0809_3>60H AND CC=0) THEN CC=1;
IF (ADC0809_3<=60H AND CC=0) THEN CC=0;
IF (ADC0809_4>60H AND DD=0) THEN DD=1;
IF (ADC0809_4<=60H AND DD=0) THEN DD=0;
END; */
CALL TIME(10);
TR2=0;
end;
GOTO MAINLOOP;
END MAINPROG;
END MAIN_1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -