⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 board.bak

📁 单片机控制面板程序
💻 BAK
📖 第 1 页 / 共 4 页
字号:
//============================================   
     if((confirm==0x11)&&(send_success_flag==1))
       {
        send_show_count++;
        if(send_show_count>=SEND_SHOW_TIME)
           {
            send_show_count=0;
            send_kind=send_kind|SEND_SHOW;
           }
       }
    else
      {
       //send_kind=send_kind&0xbf;
       send_show_count=0;
      }                  
//==================================
//根据LED的数码位,进行相应位发送
//==================================
     led_show_byte_number++;
     if(led_show_byte_number>=4)
        led_show_byte_number=0;
     if(led_show_byte_number==0)
        led_show_number=0xef;
     if(led_show_byte_number==1)
        led_show_number=0xdf;
     if(led_show_byte_number==2)
        led_show_number=0xbf;
     if(led_show_byte_number==3)
        led_show_number=0x7f;
    led_show_byte();//1个8位数码管的显示程序
//=================================
//按键采样,字符输出
//=================================
    key_sample_count_l++;
    if(key_sample_count_l>199)
      {
       key_sample_count_l=1;

	   if(send_success_flag==1)//只有通讯正常才采样键值
          {
           key_sample();
          }

       IN_PUT();
       getcode();
       value_show();
	   if(send_ask_set_flag==1)
		   set_show();//这里set的值也具有实时通讯显示功能。
       if(send_ask_fault_flag==1)
           fault_show();//这里fault堆栈也具有实时通讯显示功能。
       display();
       key_sample_code=0;
      }
//================================
//COPY和PASTE键处理程序
//================================
    if(function_key_kind==1)//1表示是COPY键
       {
        if(led_data>62)
          {
          function_key_kind=function_key_kind&0xfe;//清除参数复制键标志
          }
        else
          {
          send_kind=send_kind|SEND_FU;//COPY键是在参数发送基础上的
          }
        }
//===============================
    if(function_key_kind==2)
       {
        if(led_data>62)
          {
          function_key_kind=function_key_kind&0xfd;
          }
        else  
          {
           send_kind=send_kind|SEND_SET;//清除粘帖键标志
           eeprom_addh=0x28;
           eeprom_addl=led_data-1;//从0x2800开始
           eeprom_read();
           set_data=(eeprom_data&0xff)<<8;//先取高8位数据
           led_data++;

           eeprom_addl=led_data-1;
           eeprom_read();
           set_data=set_data|eeprom_data;//再取低8位数据
          }
       } 
                     
}
//================================
eeprom_read()
{

    ISP_CONTR=ENABLE_ISP;
    ISP_CMD=ISP_IAP_BYTE_READ;
    ISP_ADDRH=eeprom_addh;
    ISP_ADDRL=eeprom_addl;
    ISP_TRIG=0x46;
    ISP_TRIG=0xb9;
    eeprom_data=ISP_DATA;
    
    disable_eeprom();

}
//================================
eeprom_write()
{
    ISP_CONTR=ENABLE_ISP;
    ISP_CMD=ISP_IAP_BYTE_PROGRAM;
    ISP_ADDRH=eeprom_addh;
    ISP_ADDRL=eeprom_addl;
    ISP_DATA=eeprom_data;
    ISP_TRIG=0x46;
    ISP_TRIG=0xb9;
    
    disable_eeprom();
}
//================================
eeprom_erase()
{
    ISP_CONTR=ENABLE_ISP;
    ISP_CMD=ISP_IAP_SECTOR_ERASE;
    ISP_ADDRH=0x28;
    ISP_ADDRL=0x00; 
    ISP_TRIG=0x46;
    ISP_TRIG=0xb9;
    
    disable_eeprom();

}
//================================
disable_eeprom()
{
    ISP_CONTR=0;
    ISP_CMD=0;
    ISP_TRIG=0x00; 
}
//================================
//程序说明:根据要求进行LED显示字符刷新
//================================
display()
{

       if(flash_code==0)
          {
           flash_code=1;
           led_show_value[0]=ledcode01;
           led_show_value[1]=ledcode02;
           led_show_value[2]=ledcode03;
           led_show_value[3]=ledcode04;
          }
       else
          {
           flash_code=0;
           led_show_value[0]=ledcode01flash;
           led_show_value[1]=ledcode02flash;
           led_show_value[2]=ledcode03flash;
           led_show_value[3]=ledcode04flash;
          }
}
//================================
//程序说明:根据按键输入,进行相应操作
//================================
IN_PUT()
{
     char i;
     int type_num;
     int  data_temp;
     switch(key_sample_code)
      {
       case MODE_KEY:
          {
           send_ask_set_flag=0;
		   send_ask_fault_flag=0;
		   set_rev_flag=0;
           key_sample_count_h=0;
		   if((confirm==0x11)||(confirm==0x21)||(confirm==0x31))
           {
           point_flag=0;		   

		   high_led_number=4;

		   if(confirm==0x11)
              {
               led04=14;
               led03=10;
               led01=led_data%10;
               led02=led_data/10;
               confirm=0x10;
                  led_pos=1;

               }
           if(confirm==0x21)
              {
               led04=13;
               led03=10;
               led01=led_data%10;
               led02=led_data/10;
               confirm=0x20;
                  led_pos=1;
               }
		   if(confirm==0x31)
              {
               led04=28;
               led03=10;
               led01=led_data%10;
               led02=led_data/10;
               confirm=0x30;
                  led_pos=1;
               }
           }
          else
          {
           confirm=confirm+0x10;
           if(confirm>=0x40)
              confirm=0;
           switch(confirm)
             {
              case 0:
                {
                 point_flag=0;
				 high_led_number=4;
                 led_pos=0;
				 if(fault_data==0)
				   {
				    led01=10;//F.--
                    led02=10;
                    led03=15;
                    led04=19;
			        fault_show_flag=0;
				   }
				 else
                    fault_pro();
                 break;
                }
              case 0x10:
                {
                 fault_show_flag=0;//关闭闪烁效果
				 fault_first_flag=1;//不在连续进入故障检测程序
				 point_flag=0;
                 high_led_number=4;
                 led_pos=1;
                 led01=1;
                 led02=0;
                 led03=10;
                 led04=14;
                 break;
                }
              case 0x20:
                {
                 fault_show_flag=0;//关闭闪烁效果
				 fault_first_flag=1;//不在连续进入故障检测程序
				 point_flag=0;
				 high_led_number=4;
                 led_pos=1;
                 led01=1;
                 led02=0;
                 led03=10;
                 led04=13;
                 break;
                }
			  case 0x30:
                {
                 fault_show_flag=0;//关闭闪烁效果
				 fault_first_flag=1;//不在连续进入故障检测程序
				 point_flag=0;
				 high_led_number=4;
                 led_pos=1;
                 led01=1;
                 led02=0;
                 led03=10;
                 led04=28;
                 break;
                }
              default:
                 break;
              }
            }
           break;
           }
       case ENTER_KEY:
          {
           key_sample_count_h=0;
           if((confirm!=0)&&(confirm!=0x11)&&(confirm!=0x31))
             {
			  switch(confirm)
                 {
                  case 0x10:
                    {
                    send_ask_set_flag=0;
					send_ask_fault_flag=0;
					show_mode();
                    break;
                    }
                  case 0x20:
                    {
					send_ask_set_flag=1;
                    send_ask_fault_flag=0;
					send_kind=send_kind|SEND_FU;
					set_mode();
                    break;
                    }
                  case 0x21:
                    {
                    //if(led_com_flag==0)//只有在运行未使能时才能对设置参数进行修改
                    //{
                     if(set_rev_flag==1)
					 {
					 point_flag=0;
					 high_led_number=4;
					 send_ask_set_flag=0;
					 send_ask_fault_flag=0;
					 set_rev_flag=0;
					 send_kind=send_kind|SEND_SET;
					 set_value();
                     confirm=0x20;
                     led04=13;
                     led03=10;
                     led01=led_data%10;
                     led02=led_data/10;
                       led_pos=1;
					 }
                    //}
                     break;
                    }
				  case 0x30:
				    {
					 send_ask_set_flag=0;
					 send_ask_fault_flag=1;
					 fault_mode();
					 send_kind=send_kind|SEND_FAULT_STACK;
					 break;
					 }
                 default:break;
                 }
              }
           break;
          }
       case ADD_KEY:
          {
          send_ask_set_flag=0;
		  send_ask_fault_flag=0;
          key_sample_count_h=0;
		  if((confirm!=0)&&(confirm!=0x11)&&(confirm!=0x31))
             {
              switch(led_pos)
                 {
                  case 1:
                     {
                      led01=led01+1;
                      if(led01==0xa)
                        led01=0;
                      break;
                      }
                 case 2:
                     {
                      led02=led02+1;
                      if(led02==0xa)
                        led02=0;
                      break;
                      }
                 case 3:
                     {
                      led03=led03+1;
                      if(led03==0xa)
                        led03=0;
                      break;
                      }
                 case 4:
                     {
                     if((led04==10)||(led04==15))
					 {
					 if(led04==10)
                         led04=15;
                      else
                         led04=10;
					  }
					 else
					  {
                       led04=led04+1;
                      if(led04==0xa)
                        led04=0;
					   }
                      break;
                      }
                 default:break;
                 }
              }
          break;
          }
       case SHIFT_ADD_KEY:
          {
          send_ask_set_flag=0;
		  send_ask_fault_flag=0;
          key_sample_count_h=0;
		  if((confirm!=0)&&(confirm!=0x11)&&(confirm!=0x31))
            {
             switch(confirm)
               {
                case 0x10:case 0x20:case 0x30:
                   {
                    led_pos=led_pos+1;
                    if(led_pos==3)
                       led_pos=1;
                    break;
                   }
                case 0x21:
                   {
                    switch(high_led_number)
					 {
					  case 4:
					  {
				      led_pos=led_pos+1;
                      if(led_pos==5)
                         led_pos=1;
					  break;
					  }
                      case 3:
					  {
				      led_pos=led_pos+1;
                      if(led_pos==4)
                         led_pos=1;
					  break;
					  }
					  case 2:
					  {
				      led_pos=led_pos+1;
                      if(led_pos==3)
                         led_pos=1;
					  break;
					  }
					  case 1:
					  {
				      led_pos=led_pos+1;
                      if(led_pos==2)
                         led_pos=1;
					  break;
					  }
					  default:break;
					 }
                  break;
                  }
                default:break;
                }
             }
          break;
          }
       case COPY_KEY:
          {
          key_sample_count_h++;
          if(key_sample_count_h>5)
             {
              key_sample_count_h=0;
              if(function_key_kind==0)//只有在没有其它功能键按下的前提下才能复制参数
                {
                 function_key_kind=1;//1表示是参数复制键
                 led_data=1;//参数号从1开始
                 //send_kind=send_kind|SEND_KEY;
                } 
              }
          break;
          }
       case PASTE_KEY:
          {
          key_sample_count_h++;
          if(key_sample_count_h>5)
             {
              key_sample_count_h=0;
              if(function_key_kind==0)//只有在没有其它功能键按下的前提下才能复制参数
                {
                 function_key_kind=2;//2表示是参数粘帖键
                 led_data=1;//参数号从1开始
                 //send_kind=send_kind|SEND_KEY;
                } 
              }
          break;
          }
       case SUB_KEY:
         {
          send_ask_set_flag=0;
		  send_ask_fault_flag=0;
          key_sample_count_h=0;
		  if((confirm!=0)&&(confirm!=0x11)&&(confirm!=0x31))
             {
              switch(led_pos)
                 {
                  case 1:
                     {
                      led01=led01-1;
                      if(led01<0)
                        led01=9;
                      break;
                      }
                 case 2:
                     {
                      led02=led02-1;
                      if(led02<0)
                        led02=9;
                      break;
                      }
                 case 3:
                     {
                      led03=led03-1;
                      if(led03<0)
                        led03=9;
                      break;
                      }
                 case 4:
                     {
                     if((led04==10)||(led04==15))
 					 {
					 if(led04==10)
                         led04=15;
                      else
                         led04=10;
					  }
                      else
					   {
					   led04=led04-1;
                       if(led04<0)
                        led04=9;
					   }
                      break;
                      }
                 default:break;
                 }
              }
          break;
          }
       case SHIFT_SUB_KEY:
          {
          send_ask_set_flag=0;
		  send_ask_fault_flag=0;
          key_sample_count_h=0;
		  if((confirm!=0)&&(confirm!=0x11)&&(confirm!=0x31))
            {
             switch(confirm)
               {
                case 0x10:case 0x20:case 0x30:
                   {
                    led_pos=led_pos-1;
                    if(led_pos==0)
                       led_pos=2;
                    break;
                   }
                case 0x21:
                   {
                    switch(high_led_number)
					 {
					  case 4:
					  {
					  led_pos=led_pos-1;
                      if(led_pos==0)
                        led_pos=4;
					  break;
					  }
					  case 3:
					  {
					  led_pos=led_pos-1;
                      if(led_pos==0)
                        led_pos=3;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -