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

📄 bpqmb.c

📁 rs485、八位扫描显示、按键、数字编码器
💻 C
📖 第 1 页 / 共 2 页
字号:
			     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_t,key_t1,key_t2;
bit key_bt;
TMOD=0X21;
TH0=5;
PCON=0;
TR0=1;
TF0=1;
SCON=0X40;
TH1=0XFD;/*9600	*??*/
IT1=1;IT0=1;
SMOD=1;
EX1=0;
EX0=0;
ET1=0;
ES=1;
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]=_f;
displayb[2]=_r;
displayb[1]=_b;
displayb[0]=_d;
while(1)
{
temp=key_boad();
if(temp){if(key_t)key_t--;}
else {key_t=KEY_DELAY;key_t1=KEY_KEEP;key_t2=KEY_ADSB;}
if(!key_t)
	{switch(temp)
		{case 1:
		 break;
		case 2:
		break;
		case 3:
		break;
		case 4:
		break;
		case 5:
		break;
		case 6:
		 break;
		case 7:
		break;
		case 8:
		break;
		case 9:
		}
	}
}
}
/*定时器*******************定时器*******************定时器**/
void tint1() interrupt 1   using 3
{unsigned char temp=1,num,temp_del;
EA=0;
TF0=0;
 TH0=0Xd5;
 TL0=0X00;
  TR0=1;
 t0yc--;
 if(t0yc==0)
 {t0yc=10;
 t0yc1--;
 notbit1=~notbit1;
 }
   if(t0yc1==0)
 {t0yc1=10;
  notbit2=~notbit2;
 }
 ET0=1;
 /*P0=0;*/
dpc_a=0;
dpc_b=0;
/*dpc_a=1;
dpc_b=1;
dpc_a=0;
dpc_b=0;*/
temp_del=dsp_p+1;
temp<<=dsp_p;
P2&=0XF0;
temp|=P2;
P2=temp;
if((notbit2)||(!und_bit)||((ndsp!=dsp_p)&&(ndsp!=0xff)))
{num=displaya[dsp_p];
if(dela==temp_del)num|=0x80;
P0=num;
dpc_a=0;
dpc_a=1;
}
num=displayb[dsp_p];
if(delb==temp_del)num|=0x80;
P0=num;
dpc_b=0;
dpc_b=1;
dsp_p++;
if(dsp_p>3)dsp_p=0;
if(led_s==dsp_p)p_led=1;
else p_led=0;
TF1=0;
EA=1;
}
/*通讯__________________________通讯*/
void sint1() interrupt 4   using 2
{uchar temp;
 if(RI)
 	{RI=0;
	sr_int=1;
	temp=SBUF;
	if(temp==0xa5)
		{sr_num=0;
		REN=1;
		}
	 sr_dat[sr_num]=temp;
	 if(temp==0xe7)
	 	{sr_num=0;
			sr_ov=1;
		}
		else
		{if(sr_num>=12) sr_num=0;
		else sr_num++;
		}
	}
	if(TI)
	{st_int=1;
	TI=0;
	SBUF=sr_dat[sr_num];
	sr_num++;
	if(sr_num>12)
		sr_ov=1;
	}

}

⌨️ 快捷键说明

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