Advertisement
2andnot

Dev_sdv.cpp

Dec 20th, 2018
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.27 KB | None | 0 0
  1. #include "Dev_zdv.h"
  2.     void ZDV::auto_open()
  3.     {
  4.         //if(!(enh_info&(ZDV_OPER|ZDV_DIST)))//
  5.             if(!(enh_info&(ZDV_ZAKL_ERROR)))//ZDV_NOKNC_ERROR|ZDV_2KNC_ERROR|ZDV_OS_ERROR|
  6.                 if(stad!=ZDV_ST_OPEN) cmd = ZDV_C_OPEN;
  7.        
  8.     }
  9.     void ZDV::auto_close()
  10.     {
  11.         //if(!(enh_info&(ZDV_OPER|ZDV_DIST)))
  12.             if(!(enh_info&(ZDV_ZAKL_ERROR)))//ZDV_NOKNC_ERROR|ZDV_2KNC_ERROR|ZDV_OS_ERROR|
  13.                 if(stad!=ZDV_ST_CLOSE) cmd = ZDV_C_CLOSE;
  14.        
  15.     }
  16.     void ZDV::auto_stop()
  17.     {
  18.         if(!(enh_info&(ZDV_OPER|ZDV_DIST)))
  19.             if(stad!=ZDV_ST_STOP) cmd = ZDV_C_STOP;
  20.        
  21.     }
  22.  
  23.     void ZDV::check_os()
  24.     {
  25.         k_os = ((*os)&(1<<os_bit)) && ((*os)&(1<<(os_bit+1)));
  26.         if(k_os) enh_info|=ZDV_OS_ERROR;
  27.         else enh_info&=~ZDV_OS_ERROR;
  28.     }
  29.  
  30.     void ZDV::check_zakl()
  31.     {
  32.         k_zakl = (!((*zakl)&(1<<zakl_bit)));
  33.         if(k_zakl) enh_info|=ZDV_ZAKL_ERROR;
  34.         else enh_info&=~ZDV_ZAKL_ERROR;
  35.     }
  36.  
  37.     void ZDV::drv()
  38.     {
  39.         if(!sec_tik) inc_t_stad();
  40.        
  41.         if(enh_info&ZDV_CHECK_KNC)
  42.         {
  43.             k_knc_op=(!((*knc_op)&(1<<knc_op_bit)));
  44.         }
  45.        
  46.         switch(cmd)
  47.         {
  48.             case ZDV_C_OPEN:
  49.                 if(stad!=ZDV_ST_OPEN)
  50.                 {
  51.                     stad=ZDV_ST_OPEN;
  52.                     clear_t_stad();
  53.                 }
  54.             break;
  55.             case ZDV_C_CLOSE:
  56.                 if(stad!=ZDV_ST_CLOSE)
  57.                 {
  58.                     stad=ZDV_ST_CLOSE;
  59.                     clear_t_stad();
  60.                 }
  61.             break;
  62.             case ZDV_C_STOP:
  63.                 if(stad!=ZDV_ST_STOP)
  64.                 {
  65.                     stad=ZDV_ST_STOP;
  66.                     clear_t_stad();
  67.                 }
  68.             break;
  69.         }
  70.  
  71.         switch(stad)
  72.         {
  73.             case ZDV_ST_OPEN:
  74.                 u_cl=0x00;
  75.                 u_op=0xff;
  76.                 if(enh_info&ZDV_CHECK_KNC)
  77.                 {
  78.                     enh_info&=~ZDV_CL_ERROR;
  79.                     if(read_t_stad()>t_wait_knc) u_op=0x00;
  80.                 }
  81.                
  82.             break;
  83.             case ZDV_ST_CLOSE:
  84.                 u_op=0x00;
  85.                 u_cl=0xff;
  86.                 if(enh_info&ZDV_CHECK_KNC)
  87.                 {
  88.                     enh_info&=~ZDV_OP_ERROR;
  89.                     if(read_t_stad()>t_wait_knc_cl) u_cl=0x00;
  90.                 }
  91.                
  92.             break;
  93.             case ZDV_ST_STOP:
  94.                 u_op=0x00;
  95.                 u_cl=0x00;
  96.             break;
  97.         }
  98.             if(enh_info&ZDV_CHECK_OS) check_os();
  99.             if(enh_info&ZDV_CHECK_ZAKL) check_zakl();
  100.  
  101.             if(u_op) (*out_op)|=(1<<out_op_bit);
  102.             else  (*out_op)&=~(1<<out_op_bit);
  103.             if(u_cl) (*out_cl)|=(1<<out_cl_bit);
  104.             else  (*out_cl)&=~(1<<out_cl_bit);
  105.     }
  106.    
  107.     void ZDV::init()
  108.     {
  109.         clear_t_stad();
  110.         clear_t_sub_st();
  111.         cmd = ZDV_C_CLOSE;
  112.         t_wait_knc=150;
  113.         t_wait_knc_cl=150;
  114.     }
  115.    
  116.     void ZDV::show_mnem()
  117.     {
  118.         uint8_t lamp=0;
  119.         uint8_t lamp1=0;
  120.         uint8_t lamp2=0;
  121.         uint8_t lamp3=0;
  122.        
  123.         if(enh_info&ZDV_CHECK_KNC)
  124.         {
  125.             if(!k_knc_op)               lamp = 0xf0;
  126.             else if(stad==ZDV_ST_OPEN)  lamp = 0x30;
  127.             else                        lamp = 0x00;
  128.         }
  129.         else
  130.         {
  131.             if(stad==ZDV_ST_OPEN) lamp = 0xf0;
  132.             if(stad==ZDV_ST_CLOSE) lamp = 0x00;
  133.             if(stad==ZDV_ST_STOP) lamp = 0x00;
  134.            
  135.             lamp1=lamp2=lamp3 = 0x00;
  136.        
  137.         }
  138.        
  139.         if(enh_info&(ZDV_DIST|ZDV_OPER)) lamp|=0x11;
  140.         if(enh_info&(ZDV_OS_ERROR|ZDV_2KNC_ERROR|ZDV_ZAKL_ERROR|ZDV_NOKNC_ERROR)) lamp=0x05;
  141.        
  142.         *mn_os = lamp;
  143.         *mn_os1 = lamp1;
  144.         *mn_os2 = lamp2;
  145.         *mn_os3 = lamp3;
  146.     }
  147.    
  148.     const prog_char zdv_error_str[7][6]=
  149.     {
  150.         "Ош:",
  151.         "ОС",
  152.         "2кон",
  153.         "закл",
  154.         "нетК",
  155.         "неотк",
  156.         "незак"
  157.     };
  158.    
  159.     void ZDV::show_lcd()
  160.     {
  161.         if(!(enh_info&ZDV_DIST))
  162.         {
  163.             if(KEY_1) enh_info|=ZDV_OPER;
  164.             else if(KEY_6) enh_info&=~ZDV_OPER;
  165.            
  166.             if(enh_info&ZDV_OPER)
  167.             {
  168.                 if(KEY_2) {cmd=ZDV_C_OPEN;}
  169.                 if(KEY_3) {cmd=ZDV_C_CLOSE;}
  170.                 if(KEY_8) {cmd=ZDV_C_STOP;}
  171.             }
  172.         }
  173.        
  174.         LCD_abc((char*)name,0);
  175.    
  176.         if(stad==ZDV_ST_OPEN) LCD_abc((char*)stad_str[0],5);
  177.         if(stad==ZDV_ST_CLOSE) LCD_abc((char*)stad_str[1],5);
  178.         if(stad==ZDV_ST_STOP) LCD_abc((char*)stad_str[2],5);
  179.         LCD_uind(read_t_stad(),7,5);
  180.    
  181.         if(enh_info&ZDV_DIST) LCD_abc((char*)mode_str[2],12);
  182.         else if(enh_info&ZDV_OPER) LCD_abc((char*)mode_str[1],12);
  183.         else LCD_abc((char*)mode_str[0],12);
  184.  
  185.         if(enh_info&(ZDV_OS_ERROR|ZDV_2KNC_ERROR|ZDV_ZAKL_ERROR|ZDV_NOKNC_ERROR))
  186.             LCD_abc((char*)zdv_error_str[0],16);
  187.         if(enh_info&ZDV_OS_ERROR) LCD_abc((char*)zdv_error_str[1],19);
  188.         if(enh_info&ZDV_2KNC_ERROR) LCD_abc((char*)zdv_error_str[2],21);
  189.         if(enh_info&ZDV_ZAKL_ERROR) LCD_abc((char*)zdv_error_str[3],25);
  190.         //if(enh_info&ZDV_NOKNC_ERROR) LCD_abc((char*)zdv_error_str[4],28);
  191.         if(enh_info&ZDV_OP_ERROR) LCD_abc((char*)zdv_error_str[5],28);
  192.         if(enh_info&ZDV_CL_ERROR) LCD_abc((char*)zdv_error_str[6],28);
  193.  
  194.         if(KEY_7) enh_info&=~(ZDV_2KNC_ERROR|ZDV_ZAKL_ERROR|ZDV_NOKNC_ERROR);
  195.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement