Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Dev_zdv.h"
- void ZDV::auto_open()
- {
- //if(!(enh_info&(ZDV_OPER|ZDV_DIST)))//
- if(!(enh_info&(ZDV_ZAKL_ERROR)))//ZDV_NOKNC_ERROR|ZDV_2KNC_ERROR|ZDV_OS_ERROR|
- if(stad!=ZDV_ST_OPEN) cmd = ZDV_C_OPEN;
- }
- void ZDV::auto_close()
- {
- //if(!(enh_info&(ZDV_OPER|ZDV_DIST)))
- if(!(enh_info&(ZDV_ZAKL_ERROR)))//ZDV_NOKNC_ERROR|ZDV_2KNC_ERROR|ZDV_OS_ERROR|
- if(stad!=ZDV_ST_CLOSE) cmd = ZDV_C_CLOSE;
- }
- void ZDV::auto_stop()
- {
- if(!(enh_info&(ZDV_OPER|ZDV_DIST)))
- if(stad!=ZDV_ST_STOP) cmd = ZDV_C_STOP;
- }
- void ZDV::check_os()
- {
- k_os = ((*os)&(1<<os_bit)) && ((*os)&(1<<(os_bit+1)));
- if(k_os) enh_info|=ZDV_OS_ERROR;
- else enh_info&=~ZDV_OS_ERROR;
- }
- void ZDV::check_zakl()
- {
- k_zakl = (!((*zakl)&(1<<zakl_bit)));
- if(k_zakl) enh_info|=ZDV_ZAKL_ERROR;
- else enh_info&=~ZDV_ZAKL_ERROR;
- }
- void ZDV::drv()
- {
- if(!sec_tik) inc_t_stad();
- if(enh_info&ZDV_CHECK_KNC)
- {
- k_knc_op=(!((*knc_op)&(1<<knc_op_bit)));
- }
- switch(cmd)
- {
- case ZDV_C_OPEN:
- if(stad!=ZDV_ST_OPEN)
- {
- stad=ZDV_ST_OPEN;
- clear_t_stad();
- }
- break;
- case ZDV_C_CLOSE:
- if(stad!=ZDV_ST_CLOSE)
- {
- stad=ZDV_ST_CLOSE;
- clear_t_stad();
- }
- break;
- case ZDV_C_STOP:
- if(stad!=ZDV_ST_STOP)
- {
- stad=ZDV_ST_STOP;
- clear_t_stad();
- }
- break;
- }
- switch(stad)
- {
- case ZDV_ST_OPEN:
- u_cl=0x00;
- u_op=0xff;
- if(enh_info&ZDV_CHECK_KNC)
- {
- enh_info&=~ZDV_CL_ERROR;
- if(read_t_stad()>t_wait_knc) u_op=0x00;
- }
- break;
- case ZDV_ST_CLOSE:
- u_op=0x00;
- u_cl=0xff;
- if(enh_info&ZDV_CHECK_KNC)
- {
- enh_info&=~ZDV_OP_ERROR;
- if(read_t_stad()>t_wait_knc_cl) u_cl=0x00;
- }
- break;
- case ZDV_ST_STOP:
- u_op=0x00;
- u_cl=0x00;
- break;
- }
- if(enh_info&ZDV_CHECK_OS) check_os();
- if(enh_info&ZDV_CHECK_ZAKL) check_zakl();
- if(u_op) (*out_op)|=(1<<out_op_bit);
- else (*out_op)&=~(1<<out_op_bit);
- if(u_cl) (*out_cl)|=(1<<out_cl_bit);
- else (*out_cl)&=~(1<<out_cl_bit);
- }
- void ZDV::init()
- {
- clear_t_stad();
- clear_t_sub_st();
- cmd = ZDV_C_CLOSE;
- t_wait_knc=150;
- t_wait_knc_cl=150;
- }
- void ZDV::show_mnem()
- {
- uint8_t lamp=0;
- uint8_t lamp1=0;
- uint8_t lamp2=0;
- uint8_t lamp3=0;
- if(enh_info&ZDV_CHECK_KNC)
- {
- if(!k_knc_op) lamp = 0xf0;
- else if(stad==ZDV_ST_OPEN) lamp = 0x30;
- else lamp = 0x00;
- }
- else
- {
- if(stad==ZDV_ST_OPEN) lamp = 0xf0;
- if(stad==ZDV_ST_CLOSE) lamp = 0x00;
- if(stad==ZDV_ST_STOP) lamp = 0x00;
- lamp1=lamp2=lamp3 = 0x00;
- }
- if(enh_info&(ZDV_DIST|ZDV_OPER)) lamp|=0x11;
- if(enh_info&(ZDV_OS_ERROR|ZDV_2KNC_ERROR|ZDV_ZAKL_ERROR|ZDV_NOKNC_ERROR)) lamp=0x05;
- *mn_os = lamp;
- *mn_os1 = lamp1;
- *mn_os2 = lamp2;
- *mn_os3 = lamp3;
- }
- const prog_char zdv_error_str[7][6]=
- {
- "Ош:",
- "ОС",
- "2кон",
- "закл",
- "нетК",
- "неотк",
- "незак"
- };
- void ZDV::show_lcd()
- {
- if(!(enh_info&ZDV_DIST))
- {
- if(KEY_1) enh_info|=ZDV_OPER;
- else if(KEY_6) enh_info&=~ZDV_OPER;
- if(enh_info&ZDV_OPER)
- {
- if(KEY_2) {cmd=ZDV_C_OPEN;}
- if(KEY_3) {cmd=ZDV_C_CLOSE;}
- if(KEY_8) {cmd=ZDV_C_STOP;}
- }
- }
- LCD_abc((char*)name,0);
- if(stad==ZDV_ST_OPEN) LCD_abc((char*)stad_str[0],5);
- if(stad==ZDV_ST_CLOSE) LCD_abc((char*)stad_str[1],5);
- if(stad==ZDV_ST_STOP) LCD_abc((char*)stad_str[2],5);
- LCD_uind(read_t_stad(),7,5);
- if(enh_info&ZDV_DIST) LCD_abc((char*)mode_str[2],12);
- else if(enh_info&ZDV_OPER) LCD_abc((char*)mode_str[1],12);
- else LCD_abc((char*)mode_str[0],12);
- if(enh_info&(ZDV_OS_ERROR|ZDV_2KNC_ERROR|ZDV_ZAKL_ERROR|ZDV_NOKNC_ERROR))
- LCD_abc((char*)zdv_error_str[0],16);
- if(enh_info&ZDV_OS_ERROR) LCD_abc((char*)zdv_error_str[1],19);
- if(enh_info&ZDV_2KNC_ERROR) LCD_abc((char*)zdv_error_str[2],21);
- if(enh_info&ZDV_ZAKL_ERROR) LCD_abc((char*)zdv_error_str[3],25);
- //if(enh_info&ZDV_NOKNC_ERROR) LCD_abc((char*)zdv_error_str[4],28);
- if(enh_info&ZDV_OP_ERROR) LCD_abc((char*)zdv_error_str[5],28);
- if(enh_info&ZDV_CL_ERROR) LCD_abc((char*)zdv_error_str[6],28);
- if(KEY_7) enh_info&=~(ZDV_2KNC_ERROR|ZDV_ZAKL_ERROR|ZDV_NOKNC_ERROR);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement