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

📄 bpqmb.bak

📁 rs485、八位扫描显示、按键、数字编码器
💻 BAK
📖 第 1 页 / 共 2 页
字号:
    	     displaya[3]=_x;
			displayb[0]=_p;
			displayb[1]=_a;
			displayb[2]=_s;
			displayb[3]=_t;
   while(add_offset<0x1f0)
	{
        ascii(dz_h,add_offset,4);
	temp=add_offset&0xff;
    	i=add_offset>>8;
	j=rd_24c04(i,temp);;
	temp++;
	set_data=rd_24c04(i,temp);
	set_data<<=8;
        set_data|=j;
        cp_ps_txd(2);
        for(i=0;i<17;i++)
        {
        send();
	}
                RI=0;
 		REN=1;
 		ES=1;
             scanf_scr();
		if((temp_bit)&&(txd[gn_]!=4))
		{  rxded=0;
                        add_offset++;
                        add_offset++;

		}
        } */
}
/*按键*********************按键**********************按键******/
void ture_add(void)
{
 if(menu_con==3)
 {switch(cmenu)
		{case 0:
		case 1:ture_ud=cmenu;break;/*set_con*/
		case 2:ture_ud=10;break;/*setf*/
		case 3:ture_ud=11;break;/*sett*/
		case 9:ture_ud=12;break;/*seto*/
		case 10:ture_ud=13;break;/*setz*/
	default:ture_ud=cmenu-2;
		}
 }
else ture_ud=cmenu;
}
void enter_prg()
{
uchar temp;
switch(st_con)
	{case 0:
	 case 1:st_con++; /*menu切换*/ dela=0;delb=0;
         if(menu_con==1){gz_txd();set_send=1;}
               break;
	 case 2:st_con++;
               switch(menu_con)
               {
	        case 0: st_con=0;break;
                case 1:st_con=4;gz_txd();set_data=0;set_send=1;break;
                case 2:st_con=4;ask_txd();set_data=0;break;
                case 3:rd_txd(1);set_send=1;break;
                case 4:und_bit=1;ndsp=0;set_send=1;st_con=4;
                    admin_txd();
                }
                break;
	 case 3: st_con=4;
  			ture_add();
			 und_bit=1;ndsp=0;
		break;
	  case 4:     ndsp=0;set_send=1;
	  		switch(menu_con)
			{
                        case 1:if(set_data)clr_txd();st_con=2;break;
			case 2:st_con=2;
                        switch(cmenu)
			   {case 0:if(!pass)			/*密码pass*/
			     {if(password==set_data){pass=1;set_data=0;}set_send=0;}
			       else{write_txd(5);password=set_data;} /*改密码*/
    			     break;
			     case 1:set_send=0;
                             if(set_data==dmima){passd=pass=1;set_data=0;}
			     break;
			     case 2:set_send=0;
                             if(set_data==_mima){passf=passd=pass=1;set_data=0;}
			    }
			break;
			case 3:st_con=3;if(pass)write_txd(2);
			break;
			case 4:st_con=2;
                        switch(cmenu)
				{case 0:if(pass)
                                      {temp=set_data&0xff;
					switch(temp)
					{
                                        case 1:clr_txd();
                                        break;/*清除故障记录*/
					case 2:txd[gn_]=6;txd[sj_l]=2;
                                               txd[sj_h]=0;scr();/*恢复出厂设置*/
                                        break;
					case 3:copy();
					break;
					case 4:paste();break;
					case 5:passf=passd=pass=0;break;
					case 6: if(!on_off)txd[gn_]=11;scr();sending=1;
					displaya[3]=_x;
					displaya[2]=_x;
					displaya[1]=_x;
					displaya[0]=_x;
					displayb[3]=_s;
					displayb[2]=_c;
					displayb[1]=_a;
					displayb[0]=_n;
					und_bit=1;
					ndsp=0xff;
					ncall_dsp=30;
					}
				  break;
			          default:
                                  if(passf)
                                                 { txd[gn_]=9;
                                                 txd[dz_h]=0;
                                                txd[dz_l]=cmenu;
                                                 txd[sj_l]=set_data&0xff;
                                                 txd[sj_h]=set_data>>8;scr();
												sending=1;
                                                 }
				      }
                                 }
			}

	}
 }
/*esc *******************esc*****************esc*/
void enter_esc()
{
switch(st_con)
{case 0:inc_dec=0;
            menu_con=0;
			if(cmenu<4)cmenu++;
			else cmenu=0;
break;
case 1:menu_con=0;
break;
case 2: cmenu=0;
break;
case 3:ud_con=0;
}
switch(menu_con)
{case 2:
case 4: if(st_con==4)st_con=2;else if(st_con>0)st_con--;break;
default : if(st_con>0)st_con--;
}
ndsp=0;
}
/*shift******************shift***************shift*/
void enter_shift()
{
if(st_con==0)
{send_com=0;set_send=1;sendp=0;sending=1;con_txd(1);}
else
{if(ndsp<3)ndsp++;
else ndsp=0;}
}
/*up****************up****************up***********up*/
void add(uchar temp)
{uchar num;
if((!cmenu)&&(menu_con==3))
{ switch(ndsp)
{case 0:num=set_data&0xf;
          if(num<(s_ov[ud_con]&0xf))num++;else num=0;
          set_data&=0xf0;
          set_data|=num;
          break;
 case 1:num=set_data&0xf0;
          if(num<(s_ov[ud_con]&0xf0))num+=0x10;else num=0;
          set_data&=0xf;
          set_data|=num;
}
}
else
{switch(ndsp)
	{case 0: set_data++;
	break;
     case 1: set_data+=10;
	break;
	case 2: set_data+=100;
	break;
	case 3: set_data+=1000;
	}
switch(temp)
 {
case 0:num=s_ovc[ture_ud-1][ud_con];
		if(set_data>num)set_data=num;
break;
case 1:
	if(set_data>9999)set_data=9999;
 }
 }
}
void enter_up()
{uchar num;
switch(st_con)
	{
	case 0: if(on_off)
			{inc_dec=1;
			con_num=4;
			}
		/*	else
			{
                        inc_dec=0;
                        menu_con=0;
			if(cmenu<4)cmenu++;
			else cmenu=0;}*/
			break;
	case 1:if(menu_con<4)menu_con++;
			else menu_con=0;
                        cmenu=0;
                        ud_con=0;
	 		break;
	case 2:switch(menu_con)
				{case 0:if(cmenu<21)cmenu++;else cmenu=0;
				break;
				 case 1:if(cmenu<15)cmenu++;
                                 else cmenu=0;gz_txd();set_send=1;
                                 break;
                                 case 2:if(cmenu<2)cmenu++;
				else cmenu=0;
                                 break;
				break;
				 case 3:ud_con=0;
                                 if(cmenu<10)cmenu++;else cmenu=0;
				break;
				 case 4: admin_txd();if(cmenu<3)cmenu++;
								else cmenu=0;	/*本项为管理项*/
				}
				break;
	case 3: set_send=1;
  						if(ud_con<cm_o[cmenu])ud_con++;
					      else ud_con=0;
                              rd_txd(1);
		break;
	case 4:switch(menu_con)
			{case 1:if(pass)set_data=1;break;
                        case 2: add(1);
                                break;
			case 3:         if(pass)
					switch(cmenu)
					{case 0:add(0);break;/*删除后开机不设*/
					case 2:
					case 3:add(1);
							break;
					case 9:add(1);
							if(set_data>f9_o[ud_con])set_data=f9_o[ud_con];
							break;
					case 10:add(1);
							if(set_data>fa_o[ud_con])set_data=fa_o[ud_con];
					break;
					default:num=s_opp[ture_ud-1][ud_con]&0x80;
							if(!on_off||!num)
							add(0);
					}
			break;
			case 4:if(!on_off)switch(cmenu)
					{case 0:if(pass&&(set_data<6))add(1);
					else set_data=0;
					break;
					 case 1:if(passd)add(1);
					break;
					case 2:if(passd)add(1);
					break;
					case 3:if(passf)add(1);
					}
			}
	}
}
/*down**************down*****************down******down*/
void sub(uchar temp)
{uchar num;
if((!cmenu)&&(menu_con==3))
{ switch(ndsp)
{case 0:num=set_data&0xf;
          if(num>0)num--;else num=s_ov[ud_con]&0xf;
          set_data&=0xf0;
          set_data|=num;
          break;
 case 1:num=set_data&0xf0;
          if(num>0)num-=0x10;else num=s_ov[ud_con]&0xf0;
          set_data&=0xf;
          set_data|=num;
}
}
else
{switch(ndsp)
	{case 0: if(set_data>0)set_data--;else set_data=0;
	break;
     case 1: if(set_data>=10)set_data-=10;else set_data=0;
	break;
	case 2: if(set_data>=100)set_data-=100;else set_data=0;
	break;
	case 3: if(set_data>=1000)set_data-=1000;else set_data=0;
	}
if(temp==0)
 {temp=s_opp[ture_ud-1][ud_con]&0xf;
if(temp>8)temp&=0x7;
	if(set_data<temp)set_data=temp;
 }
}
}
void enter_down()
{
uchar num;
switch(st_con)
	{
	case 0:if(on_off)
			{inc_dec=1;
			con_num=5;
			}
			else
                     /*   {inc_dec=0;
                        menu_con=0;
			if(cmenu>0)cmenu--;
			else cmenu=4;}*/
			break;
	case 1:if(menu_con>0)menu_con--;
			else menu_con=4;
                       cmenu=0;
                        ud_con=0;
	 		break;
	case 2:switch(menu_con)
				{case 0:if(cmenu>0)cmenu--;else cmenu=21;
				break;
				 case 1:if(cmenu>0)cmenu--;
                                 else cmenu=15;gz_txd();set_send=1;
				break;
                                case 2:if(cmenu>0)cmenu--;
						else cmenu=2;
                                                break;
				 case 3:if(cmenu>0)cmenu--;
					else cmenu=10;
                                        ud_con=0;
				break;
				 case 4:admin_txd();if(cmenu>0)cmenu--;
									else cmenu=3;	/*本项为管理项*/
				}
				break;
	case 3: set_send=1;
                if(ud_con>0)ud_con--;
				else ud_con=cm_o[cmenu];
                     rd_txd(1);
		break;
	case 4:switch(menu_con)
			{case 1:set_data=0;break;
                        case 2:sub(1);
					break;
			case 3:        if(pass)
					switch(cmenu)
					{case 0:sub(0);break;
					case 2:
					case 3:
                    case 9:
					case 10:sub(1);
					break;
					default:num=s_opp[ture_ud-1][ud_con]&0x80;
							if(!on_off||!num)
							sub(0);
					}
			break;
			case 4: 	if(!on_off) switch(cmenu)
							{case 0:if(pass&&(set_data>0))sub(1);
								else set_data=6;
								break;
							 case 1:if(passd)sub(1);
								break;
							 case 2:if(passd)sub(1);
							 break;
							 case 3:if(passf)sub(1);
							}
			}
	}
}
/*接收处理******************接收处理******************接收处理*/
rxd_exe()
{
uchar temp,i;
uint num;
rxded=0;
        temp=rxd[1];
	num=rxd[2]<<8;
        num&=0xff00;
        num|=rxd[3];
	switch(temp)
        {case 0:if(st_con!=4)set_data=num;break;
        case 1:pv_zu=num;break;
        case 2:pv_fu=num;
        }
	if(set_data>9999)set_data=0;  /*数值滤波,消除闪烁*/
        if(k_abs){k_abs=0;zu_data=pv_zu;fu_data=pv_fu;}
        else {if(((zu_data-pv_zu)<50)||((pv_zu-zu_data)<50))pv1_zu=zu_data=pv_zu;
                 else
                     {if(((pv1_zu-pv_zu)<50)||((pv_zu-pv1_zu)<50))pv1_zu=zu_data=pv_zu;
                     else pv1_zu=pv_zu;
                     }
              if(((fu_data-pv_fu)<50)||((pv_fu-fu_data)<50))pv1_fu=fu_data=pv_fu;
                else
                    { if(((pv1_fu-pv_fu)<50)||((pv_fu-pv1_fu)<50))pv1_fu=fu_data=pv_fu;
                     else pv1_fu=pv_fu;
                    }
             }
	i=rxd[0];
	switch(i)
		{case 0:on_off=0;temp=P3;
                error=0;
				temp&=0xf;
				P3=temp;
		 break;
		 case 1:on_off=1;temp=P3;
                 error=0;
				temp&=0xf;
				temp|=0x30;
				P3=temp;
		 break;
		 case 2:on_off=1;temp=P3;
                                error=0;
				temp&=0xf;
				temp|=0x50;
				P3=temp;
		 break;
		 case 3:on_off=0;temp=P3;
				error=1;
				temp&=0xf;
				temp|=0x80;
				P3=temp;
                                break;
                case 0x5a:set_send=0;
		}
if(ncall_dsp)ncall_dsp--;
}

/*main**************main*************main***********main*/
main()
{
uchar num;
uchar key_wt=4;
bit key_bt;
TMOD=0X21;
TH0=5;
PCON=0;
TR0=1;
TF0=1;
SCON=0;
IT1=1;IT0=1;
EX1=0;
EX0=0;
ET1=0;
ET0=1;
EA=1;
num=P3;
num&=0x0f;
P3=num;
ndsp=0xff;
displaya[3]=_x;
displaya[2]=_x;
displaya[1]=_x;
displaya[0]=_x;
displayb[3]=_s;
displayb[2]=_c;
displayb[1]=_a;
displayb[0]=_n;
rd_txd(4);
und_bit=1;
for(num=7;num>0;num--)send_dat();
for(num=6;num>0;num--)take_dat();
ask_txd();
ndsp=0;
scanf_scr();
if(temp_bit)
{
password=rxd[2]<<8;
password|=rxd[3];
if((password>9999)||(password==0)){password=0;pass=1;}
}
else {password=0;pass=1;}
set_send=0;
dsp_gz=0;
while(1)
{
/*pass=passd=passf=1;*/
xh_jsk++;
if(xh_jsn>0)xh_jsn--;
if(send_com)send_dat();
if(!send_com)take_dat();
if(rxded)
{scanf_scr();
if((!set_send)&&(!sending))
                           {if(inc_dec)con_txd(con_num);
	                    else
                            { if((st_con==2)&&(menu_con==4))admin_txd();
									else
									{
							if(st_con==3)
								{rd_txd(1);
								}
                             else ask_txd();
                             }}
                             sending=1;
                            }
if(temp_bit)
rxd_exe();
}
        if(!ankey)
       {
        if(!key_stop)
		{key_bt=1;
		if(!key_wt){con_txd(0);ankey=1;set_send=1;}
		pw_delay=5000;
		}
	if(!key_run)
		{key_bt=1;
                      if(!key_wt)
                      {
                       con_txd(1);
                        ankey=1;
                        }
		pw_delay=5000;
		}
	if(!key_rev)
		{ key_bt=1;
                         if(!key_wt)
                         {
			con_txd(2);
                        ankey=1;
                        }
		pw_delay=5000;
		}
	if(!key_prg)
		{key_bt=1;
			if(!key_wt)
                        {
                        enter_prg();
			ankey=1;
                        }
		pw_delay=5000;
		}
               	if(!key_esc)
		{key_bt=1;
		if(!key_wt)
                {enter_esc();
		ankey=1;
                        }
		pw_delay=5000;
		}
                if(!key_shift)
		{key_bt=1;
		if(!key_wt){enter_shift();
				ankey=1;
                                }
		pw_delay=5000;
		}
	if(!key_up)
		{key_bt=1;
			if(!key_wt)
                        {enter_up();
                        ankey=1;
						i_goon=1;
                        ture_add();xh_jsn=80;
						xh_jsk=0;
                        }
		pw_delay=5000;
		}
	if(!key_down)
		{key_bt=1;
                if(!key_wt)
                {
		enter_down();
			ture_add();
				d_goon=1;
                ankey=1;xh_jsn=80;
				xh_jsk=0;
                   }
		pw_delay=5000;
		}
         }
         P1=0XFF;
    if(P1==0xff){key_wt=0x2;ankey=0;key_bt=0;i_goon=0;d_goon=0;
                 if(inc_dec){inc_dec=0;set_send=1;con_txd(6);}
                 }else k_abs=1;
if((xh_jsk>40)&&(!xh_jsn))
{xh_jsk=0;
if(i_goon){enter_up();ture_add();}
if(d_goon){enter_down();ture_add();}
}
if(key_bt)key_wt--;
	if(!ncall_dsp)dsp_dsp();
}
}

⌨️ 快捷键说明

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