📄 motor.c
字号:
#define IN_MOTOR
#pragma model(KB)
#include <fpal96.H>
#include <math.h>
#include <MAIN.H>
#include <LED.H>
#include <KEY.H>
#include <MEASURE.H>
#include <MOTOR.H>
#include <TIMER.H>
#include <PASSWORD.H>
#include <RUN.H>
#include <CALCU.H>
#include <PRINTER.H>
#include <kb_sfrs.h>
#include <kb_funcs.h>
#ifdef FIVE_STEP
const unsigned char motor_zz_code[50] =
{
0x20,0x21,0x02,0x03,0x04, //AB
0x20,0x21,0x22,0x03,0x04, //ABC
0x00,0x21,0x22,0x03,0x04, //BC
0x00,0x21,0x22,0x23,0x04, //BCD
0x00,0x01,0x22,0x23,0x04, //CD
0x00,0x01,0x22,0x23,0x24, //CDE
0x00,0x01,0x02,0x23,0x24, //DE
0x20,0x01,0x02,0x23,0x24, //DEA
0x20,0x01,0x02,0x03,0x24, //EA
0x20,0x21,0x02,0x03,0x24 //EAB
};
const unsigned char motor_fz_code[50] =
{
0x20,0x21,0x02,0x03,0x24, //EAB
0x20,0x01,0x02,0x03,0x24, //EA
0x20,0x01,0x02,0x23,0x24, //DEA
0x00,0x01,0x02,0x23,0x24, //DE
0x00,0x01,0x22,0x23,0x24, //CDE
0x00,0x01,0x22,0x23,0x04, //CD
0x00,0x21,0x22,0x23,0x04, //BCD
0x00,0x21,0x22,0x03,0x04, //BC
0x20,0x21,0x22,0x03,0x04, //ABC
0x20,0x21,0x02,0x03,0x04 //AB
};
#else
const unsigned char motor_zz_code[50] =
{
0x20,0x01,0x02,0x03, //A
0x20,0x21,0x02,0x03, //AB
0x00,0x21,0x02,0x03, //B
0x00,0x21,0x22,0x03, //BC
0x00,0x01,0x22,0x03, //C
0x00,0x01,0x22,0x23, //CD
0x00,0x01,0x02,0x23, //D
0x20,0x01,0x02,0x23 //DA
};
const unsigned char motor_fz_code[50] =
{
0x20,0x01,0x02,0x23, //DA
0x00,0x01,0x02,0x23, //D
0x00,0x01,0x22,0x23, //CD
0x00,0x01,0x22,0x03, //C
0x00,0x21,0x22,0x03, //BC
0x00,0x21,0x02,0x03, //B
0x20,0x21,0x02,0x03, //AB
0x20,0x01,0x02,0x03 //A
};
#endif
/************************************************************************************
************************************************************************************/
void top_swith_check(void)
{
ioport2=ioport2|TOP_SWITH_SET;
if (TOP_SWITH_ON)
{
step_maxnum=0;
motor_state=MOTRO_CLEAR;
}
}
/************************************************************************************
************************************************************************************/
void motor_start(void)
{
disable();
motor_setp=0;
hso_command=0x38;
hso_time=timer1+MOTRO_START_TIME;
enable();
}
/************************************************************************************
************************************************************************************/
#pragma interrupt (motor_step_set=5)
void motor_step_set(void)
{
disable();
switch (motor_state)
{
case MOTRO_CLEAR:
hso_command=0x06;
hso_time=timer1+0x03;
hso_command=0x07;
hso_time=timer1+0x06;
hso_command=0x04;
hso_time=timer1+0x09;
motor_state=MOTRO_MUTE;
if((machine_state==MACHINE_WAIT)
||(machine_state==MACHINE_CLEAR))
machine_state=MACHINE_READY;
break;
case MOTRO_SLOW_DOWN1:
case MOTRO_SLOW_DOWN2:
case MOTRO_SLOW_DOWN3:
case MOTRO_SLOW_DOWN4:
step_maxnum++;
case MOTRO_DOWN_FAST:
#ifdef FIVE_STEP
hso_command=motor_zz_code[motor_setp*5];
hso_time=timer1+0x03;
hso_command=motor_zz_code[motor_setp*5+1];
hso_time=timer1+0x06;
hso_command=motor_zz_code[motor_setp*5+2];
hso_time=timer1+0x09;
hso_command=motor_zz_code[motor_setp*5+3];
hso_time=timer1+0x0c;
hso_command=motor_zz_code[motor_setp*5+4];
hso_time=timer1+0x0f;
#else
hso_command=motor_zz_code[motor_setp*4];
hso_time=timer1+0x03;
hso_command=motor_zz_code[motor_setp*4+1];
hso_time=timer1+0x06;
hso_command=motor_zz_code[motor_setp*4+2];
hso_time=timer1+0x09;
hso_command=motor_zz_code[motor_setp*4+3];
hso_time=timer1+0x0c;
#endif
break;
case MOTRO_SLOW_UP1:
case MOTRO_SLOW_UP2:
case MOTRO_UP_FAST:
#ifdef FIVE_STEP
hso_command=motor_fz_code[motor_setp*5];
hso_time=timer1+0x03;
hso_command=motor_fz_code[motor_setp*5+1];
hso_time=timer1+0x06;
hso_command=motor_fz_code[motor_setp*5+2];
hso_time=timer1+0x09;
hso_command=motor_fz_code[motor_setp*5+3];
hso_time=timer1+0x0c;
hso_command=motor_fz_code[motor_setp*5+4];
hso_time=timer1+0x0f;
#else
hso_command=motor_fz_code[motor_setp*4];
hso_time=timer1+0x03;
hso_command=motor_fz_code[motor_setp*4+1];
hso_time=timer1+0x06;
hso_command=motor_fz_code[motor_setp*4+2];
hso_time=timer1+0x09;
hso_command=motor_fz_code[motor_setp*4+3];
hso_time=timer1+0x0c;
#endif
if (step_maxnum==0)motor_state=MOTRO_CLEAR;
else
{
step_maxnum--;
top_swith_check();
}
break;
case MOTRO_MUTE:
default:
break;
}
#ifdef FIVE_STEP
if (motor_setp<9)motor_setp++;
#else
if (motor_setp<7)motor_setp++;
#endif
else motor_setp=0;
switch (motor_state)
{
case MOTRO_MUTE:
motor_setp=0;
break;
case MOTRO_SLOW_DOWN1:
hso_command=0x38;
hso_time=timer1+SLOW_DOWN1_TIME;
break;
case MOTRO_SLOW_DOWN2:
hso_command=0x38;
hso_time=timer1+SLOW_DOWN2_TIME;
break;
case MOTRO_SLOW_DOWN3:
hso_command=0x38;
hso_time=timer1+SLOW_DOWN3_TIME;
break;
case MOTRO_SLOW_DOWN4:
hso_command=0x38;
hso_time=timer1+SLOW_DOWN4_TIME;
break;
case MOTRO_DOWN_FAST:
hso_command=0x38;
hso_time=timer1+FAST_DWON_TIME;
break;
case MOTRO_SLOW_UP1:
hso_command=0x38;
hso_time=timer1+SLOW_UP1_TIME;
break;
case MOTRO_SLOW_UP2:
hso_command=0x38;
hso_time=timer1+SLOW_UP1_TIME;
break;
case MOTRO_CLEAR:
case MOTRO_UP_FAST:
hso_command=0x38;
hso_time=timer1+FAST_UP_TIME;
break;
default:
break;
}
enable();
}
/************************************************************************************
************************************************************************************/
void motor_init(void)
{
motor_state=MOTRO_MUTE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -