📄 m8.c
字号:
}
//******************函数*******************
//按键处理SBW_STOP_AX
void subpr_sbw_stop_ax(void)
{
//关闭输出
j1_close;
j2_close;
xc_work_old=cst_out_free;
bit_sbw_open=cst_sbw_ax;
bit_sbw_close=cst_sbw_ax;
//测试开关类型
if (bit_sbw_sort==cst_sbw_k)
{
//改写开关类型标志
eep_sbw_sort=cst_sbw_sb;
bit_sbw_sort=cst_sbw_sb;
}
}
//******************函数*******************
//按键处理SB_W_LEARN_AX
void subpr_sb_w_learn_ax(void)
{
unsigned char i;
//unsigned int temp;
//按住3秒进入通道设置,放手再按7秒清除清有通道
//通道设置廷时为20秒
TCNT1H=cst_tcnt1h;
TCNT1L=cst_tcnt1l;
com_timer1=0;
//测试按键
while (sb_w_learn_ax)
{
subpr_yms_com(2);
//测试时间
if (com_timer1>=3)
{
//3秒时间到
//等待放手
set_led_r;
subpr_mot_wink();
while (sb_w_learn_ax)
{
subpr_yms_com(2);
}
//放手时LED闪烁一下
clr_led_r;
subpr_yms_com(2);
//进入通道设置,限时20秒
TCNT1H=cst_tcnt1h;
TCNT1L=cst_tcnt1l;
com_timer1=0;
while ((com_timer1<20)&&(sb_w_learn_fs))
{
set_led_r;
if (sb_fx_ax)
{
delay_ms(50);
if (sb_fx_ax)
{
//合法通道,执行换向
if (eep_out_j12==cst_out_j12_true)
{
eep_out_j12=cst_out_j12_false;
}
else
{
eep_out_j12=cst_out_j12_true;
//eep_out_j12=cst_out_j12_false;
}
//换向设置完成,闪烁3次表示
subpr_led_wink(3,3); //调用LED闪烁函数
//置退出
com_timer1=20;
}
while (sb_fx_ax)
{
delay_ms(50);
}
}
//测试RIF
if (subpr_rif()==0)
{
//接收到信号
if (rif_val[3]==cst_rif_learn)
{
//通道设置
//测试通道是否存在,不存在写入
if (subpr_eep_check()!=cst_window_have)
{
//不存在写入
for (i=0;i<3;i++)
{
eep_window[eep_window_ptr][i]=rif_val[i];
}
eep_window_ptr++;
if (eep_window_ptr>=16)
{
eep_window_ptr=0;
}
}
//通道设置完成,闪烁3次表示
subpr_led_wink(3,3); //调用LED闪烁函数
//置退出
com_timer1=20;
}
else if (rif_val[3]==cst_rif_sel_stop)
{
//换向设置
//测试通道是否合法,不合法不执行换向
if (subpr_eep_check()==cst_window_have)
{
//合法通道,执行换向
if (eep_out_j12==cst_out_j12_true)
{
eep_out_j12=cst_out_j12_false;
}
else
{
eep_out_j12=cst_out_j12_true;
//eep_out_j12=cst_out_j12_false;
}
//换向设置完成,闪烁3次表示
subpr_led_wink(3,3); //调用LED闪烁函数
//置退出
com_timer1=20;
}
else
{
//非法通道
clr_led_r;
subpr_yms_com(2);
set_led_r;
}
}
else
{
//非法指令
clr_led_r;
subpr_yms_com(2);
set_led_r;
}
} //扫描无线信号
WDR();
} //等待通道设置完成
//重置时间参数
TCNT1H=cst_tcnt1h;
TCNT1L=cst_tcnt1l;
com_timer1=0;
clr_led_r;
subpr_yms_com(2);
//测试是否为清除
while (sb_w_learn_ax)
{
set_led_r;
subpr_yms_com(2);
//进入通道清除,时间7秒
if (com_timer1>=7)
{
//7秒时间到
subpr_eep_clr(); //清除窗号
subpr_led_wink(3,3); //清除完毕闪烁3次表示
while (sb_w_learn_ax)
{
//等待放手
WDR();
subpr_yms_com(2);
}//等待放手
}//等待7秒时间
}//测试按键
}//等待3秒时间
WDR();
}//测试按键
}
//******************函数*******************
//按键扫描OPEN AND CLOSE
void subpr_sbw_scan(void)
{
//按键SBW_OPEN--------------------
if (bit_sbw_open==cst_sbw_fs)
{
if (sbw_open_ax)
{
set_led_r;
subpr_yms_com(2);
if (sbw_open_ax)
{
//有按键处理
if (sbw_close_fs) //测试SBW_CLOSE是否按下
{
//执行开操作
subpr_sbw_open_ax();
}
else
{
//执行停机操作
subpr_sbw_stop_ax();
}
}
clr_led_r;
}
}
else
{
if (sbw_open_fs)
{
set_led_r;
subpr_yms_com(2);
if (sbw_open_fs)
{
//置放开标志
bit_sbw_open=cst_sbw_fs;
//测试按键按下时间
subpr_sbw_sort_test();
//测试是否为机械式
if (bit_sbw_sort==cst_sbw_k)
{
//机械式开关放开处理
subpr_sbw_open_fs();
}
}
clr_led_r;
}
}
//----------------------------------
//按键SBW_CLOSE
if (bit_sbw_close==cst_sbw_fs)
{
if (sbw_close_ax)
{
set_led_r;
subpr_yms_com(2);
if (sbw_close_ax)
{
//有按键处理
if (sbw_open_fs) //测试SBW_OPEN是否按下
{
//执行开操作
subpr_sbw_close_ax();
}
else
{
//执行停机操作
subpr_sbw_stop_ax();
}
}
clr_led_r;
}
}
else
{
if (sbw_close_fs)
{
set_led_r;
subpr_yms_com(2);
if (sbw_close_fs)
{
//置放开标志
bit_sbw_close=cst_sbw_fs;
//测试按键按下时间
subpr_sbw_sort_test();
//测试是否为机械式
if (bit_sbw_sort==cst_sbw_k)
{
//机械式开关放开处理
subpr_sbw_close_fs();
}
}
clr_led_r;
}
}
if (sbp_open_ax)
{
set_led_r;
delay_ms(50);
if (sbp_open_ax)
{
if (j1_out_true || j2_out_true)
{
//关闭输出
j1_close;
j2_close;
xc_work_old=cst_out_free;
}
else
{
//调用输出
subpr_out_control(cst_out_open);
}
}
while (sbp_open_ax)
{
delay_ms(50);
}
delay_ms(50);
clr_led_r;
}
else if (sbp_close_ax)
{
set_led_r;
delay_ms(50);
if (sbp_close_ax)
{
if (j1_out_true || j2_out_true)
{
//关闭输出
j1_close;
j2_close;
xc_work_old=cst_out_free;
}
else
{
//调用输出
subpr_out_control(cst_out_close);
}
}
while (sbp_close_ax)
{
delay_ms(50);
}
delay_ms(50);
clr_led_r;
}
}
//******************函数*******************
//按键处理SB_XC_AX
void subpr_sb_xc_ax(void)
{
//行程设置
//按下直到LED发光指示,这时放手自动进行行程设置
//如果不放手而按到LED闪烁指示,这时放手则先执行
//自动行程测试,然后进入手工设置,可以通过遥控器
//及手控板调整起点和终点,由SB_XC_AX进行确认,第
//一次按下为起点,第二次按下为终点
j1_close;
j2_close;
TCNT1H=cst_tcnt1h;
TCNT1L=cst_tcnt1l;
com_timer1=0;
while (sb_xc_ax)
{
subpr_yms_com(2);
if (com_timer1>=3)
{
//自动行程设置时间到,LED发光
set_led_r;
subpr_mot_wink();
while (sb_xc_ax)
{
//测试手动设置
subpr_yms_com(1);
if (com_timer1>=7)
{
//手动设置时间到
subpr_mot_wink();
subpr_mot_wink();
while (sb_xc_ax)
{
//等待放手
subpr_led_wink(1,1); //时间到,闪烁表示
}//等待放手
//设定时间
com_timer1=7;
}//等待手动时间
}//测试按键
}//等待自动时间
}//测试按键
//测试执行
if (com_timer1>=7)
{
//清除行程
subpr_clr_xc();
subpr_mot_wink();
//执行手动设置
//bit_xc_man=1;
//subpr_xc_config(); //调用行程设置
/*
//等待手动设置
set_led_r;
while (sb_xc_fs)
{
//扫描按键
subpr_sbw_scan();
//扫描无线
if (subpr_rif()==0)
{
//有信号
subpr_rif_ok();
}
}
//设置起点
eep_xc_close=xc_currently;
//等待放手
clr_led_r;
while (sb_xc_ax)
{
//等待放手
subpr_yms_com(2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -