📄 main_ctl_test1.c
字号:
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//x电机向左驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//x电机向左驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
else //垂直方向
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//Z(x)电机向上驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//Z(x)电机向上驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
//UP
//20070823(8-8)
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//y电机向上驱动1小步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//y电机向上驱动1大步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
break;
case CONST_KEY_LAB_LEFT_DOWN:
//20070823(8-9)
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//x电机向左驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//x电机向左驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
else //垂直方向
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//Z(x)电机向上驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//Z(x)电机向上驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
//DOWN
//20070823(8-10)
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//y电机向下驱动1小步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//y电机向下驱动1大步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
break;
case CONST_KEY_LAB_RIGHT_UP:
//20070823(8-11)
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//x电机向右驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//x电机向右驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
else //垂直方向
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//Z(x)电机向下驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//Z(x)电机向下驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
//UP
//20070823(8-12)
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//y电机向上驱动1小步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//y电机向上驱动1大步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_LEFT_UP, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
break;
case CONST_KEY_LAB_RIGHT_DOWN:
//20070823(8-13)
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//x电机向右驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//x电机向右驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
else //垂直方向
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//Z(x)电机向下驱动1小步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//Z(x)电机向下驱动1大步
control_motor_x_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
//DOWN
//20070823(8-14)
if(st_work_mode.bak_flag_is_horizontal ==CONST_FLAG_IS_HORIZONTAL_MODE)
{
if(st_curr_key.flag_key_is_long_type ==CONST_KEY_PRESS_IS_SHORT)
{
//y电机向下驱动1小步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_SMALL_STEP);
}
else
{
//y电机向下驱动1大步
control_motor_y_move(CONST_MOTOR_X_Y_MOVING_RIGHT_DOWN, CONST_MOTOR_XYZ_MANUAL_MOVE_BIG_STEP);
}
}
break;
#endif
case CONST_KEY_LAB_X_AND_PAN:
//PWM ++,速度变大,OCR1B的数据变小
if(bak_pwm_ctl_data >100)
{
bak_pwm_ctl_data -=10;
}
else if(bak_pwm_ctl_data >0)
{
bak_pwm_ctl_data --;
}
else{}
goto _prog_label_reload_OCR1B_data;
break;
case CONST_KEY_LAB_Y_AND_TILT:
//PWM --,速度变小,OCR1B的数据变大
if(bak_pwm_ctl_data <CONST_TIMER1_PWM_TOP_VAL -100)
{
bak_pwm_ctl_data +=10;
}
else if(bak_pwm_ctl_data <CONST_TIMER1_PWM_TOP_VAL)
{
bak_pwm_ctl_data ++;
}
else{}
goto _prog_label_reload_OCR1B_data;
break;
case CONST_KEY_LAB_Z_AND_SPEED:
//Z_SPEED灯闪烁1次
led_and_beep_operation(CONST_XU_HAO_OF_Z_AND_Z_SPEED_LED, CONST_FLAG_FLASH_IS_LED_BEEP_FLASH, 1);
//Z方向左旋转的PWM输出变化为: 0 -> 60 -> 300 ->600 ->0;
pwm_output_ctl_num =(++pwm_output_ctl_num %4);
bak_pwm_ctl_data =PWM_Output_Control_Data_By_Ctl_Num[pwm_output_ctl_num];
_prog_label_reload_OCR1B_data:
sreg_bak =SREG;
_CLI();
OCR1B =bak_pwm_ctl_data;
SREG =sreg_bak;
CODE_MOTOR_Z_MOVE_RIGHT;
break;
case CONST_KEY_LAB_MAN_OR_AUTO:
//1 2 3 4 5 6 7 0
//LED1,2,3,4,5,beep,依次闪烁(响),然后全部熄灭;
if(++led_output_ctl_num >CONST_XU_HAO_OF_ALL_LED_AND_BEEP)
{
led_output_ctl_num =0;
led_and_beep_all_off();
}
else
{
led_and_beep_operation(led_output_ctl_num,CONST_FLAG_FLASH_IS_LED_BEEP_FLASH_EVER,0);
}
break;
case CONST_KEY_LAB_X_AND_PAN_WITH_Y_AND_TILT:
sreg_bak =SREG;
_CLI();
OCR1B =PWM_Output_Control_Data_By_Ctl_Num[CONST_CIRCU_SPEED_300];
SREG =sreg_bak;
count =0;
do
{
if(pan_is_on ==0)
{
pan_is_on =1;
CODE_MOTOR_Z_MOVE_LEFT;
}
else
{
pan_is_on =0;
CODE_MOTOR_Z_MOVE_RIGHT;
}
delay_x1ms(50 +10*pan_type);
}while(++count <100 -(pan_type<<2));
if(++ pan_type>20) //限制数保证上面的delay_x1ms()的参数不溢出(<255)!
{
pan_type =0;
}
sreg_bak =SREG;
_CLI();
OCR1B =CONST_TIMER1_PWM_TOP_VAL;
SREG =sreg_bak;
CODE_MOTOR_Z_MOVE_STOP;
break;
case CONST_KEY_LAB_X_AND_PAN_WITH_Z_AND_SPEED:
//激光开->关->开
if(ji_guang_is_on ==0)
{
led_and_beep_operation(CONST_XU_HAO_OF_JI_GUANG_LED, CONST_FLAG_FLASH_IS_LED_BEEP_OFF, 0);
ji_guang_is_on =1;
}
else
{
led_and_beep_operation(CONST_XU_HAO_OF_JI_GUANG_LED, CONST_FLAG_FLASH_IS_LED_BEEP_ON_EVER, 0);
ji_guang_is_on =0;
}
break;
case CONST_KEY_LAB_Y_AND_TILT_WITH_Z_AND_SPEED:
//码盘状态的检测
memset(mp_state_buff, 0, sizeof(mp_state_buff));
//启动LEFT旋转
sreg_bak =SREG;
_CLI();
OCR1B =PWM_Output_Control_Data_By_Ctl_Num[CONST_CIRCU_SPEED_60];
SREG =sreg_bak;
CODE_MOTOR_Z_MOVE_RIGHT;
mp_state =(CODE_GET_MA_PAN_INT1 |CODE_GET_MA_PAN_INT0);
mp_state_buff[0] =mp_state;
//一次测试300个数据
for(count =1; count <300; count ++)
{
do{
mp_state =(CODE_GET_MA_PAN_INT1 |CODE_GET_MA_PAN_INT0);
}while(mp_state_buff[count-1] ==mp_state);
mp_state_buff[count] =mp_state;
}
CODE_MOTOR_Z_MOVE_STOP;
//上送测试数据
for(i=0; i<10; i++)
{
for(j=0; j<30; j++)
{
st_serial_buff.send[j] =mp_state_buff[i*30 +j];
}
st_serial_buff.send[j] =0xff;
st_serial_buff.tx_pos_start =1;
st_serial_buff.slen_needed =31;
UDR =st_serial_buff.send[0]; //启动中断方式的发送
UCSRB |=BIT(UDRIE); //因为UDRIE中断回自我关断,以减少CPU负荷!
//等待发送完毕
while(st_serial_buff.slen_needed !=0);
}
break;
case CONST_KEY_LAB_POWER:
//电源按键,自动关电处理
excute_power_off();
break;
default:
break;
}
}
//水银开关 =水平)
//进行一次x,y,z的AD采样;
CODE_GUANG_DIAN_CHI_POWER_ON; //打开光电池电源;
//单次转换的内部已经存在延时!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -