PCB机打孔机程序(二)

/************************************/
              void main(void)
              {
              aa=bb=0;
              P0M0=0;
              P0M1=0;
              P1M0=0X80;    //1000 0000      P1.7开漏
              P1M1=0X80;    //1000 0000
              P2M0=0;
              P2M1=0;
              P3M0=0;
              P3M1=0;
              P4M0=0;
              P4M1=0;
              P5M0=0X10;    //0001 0000      P5.4开漏
              P5M1=0X10;    //0001 0000
              P6M0=0;
              P6M1=0;
              P7M0=0;
              P7M1=0;
              XCursor=0;                 //X光标指针归零
              YCursor=0;                 //Y光标指针归零
              XPosiNegate_Flag=1;         //初始化X实际位置正负标志
              XBuff_Data=0;                 //X实际位置缓冲置零
              YPosiNegate_Flag=1;         //初始化Y实际位置正负标志
              YBuff_Data=0;                 //Y实际位置缓冲置零
              Prog_LineNum=0;            //程序行号    临时数据
              Prog_Number=0;             //程序编号    临时数据
              RunLineNum=0;              //运行程序行号置零
              Speed=100;                  //初始化等于100
              Frequency=0;               //频率初始化等于0
              ManuSet_Flag=0;            //手动设定运行标志 按键进入手动置一,退出置0
              JogOperating_Flag=0;       //点动操作反显标志
              ProgAdmin_Flag=0;          //程序管理循环检测标志
              ProgEdit_Flag=0;           //程序编辑循环检测标志
              ProgRead_Flag=0;           //程序读入循环检测标志
              ProgSave_Flag=0;           //程序保存循环检测标志
              ProgSaveas_Flag=0;         //程序另存循环检测标志
              DataSet_Flag=0;            //参数设置循环检测标志
              SystemDataSet_Flag=0;      //系统参数设置循环检测标志
              SystemSeifTest_Flag=0;     //系统自检循环检测标志
              IOSet_Flag=0;              //IO设置循环检测标志
              SystemSet_Flag=0;          //系统数据设置循环检测标志   分子分母最高时间点位起速
              XBuff_Data=0;                 //X向实际位置缓冲器归零
              YBuff_Data=0;                 //Y向实际位置缓冲器归零
              OUT1=1;
              OUT2=1;
              OUT3=1;
              OUT4=1;
              IN1=1;
              IN2=1;
              IN3=1;
              IN4=1;
              IN5=1;
              IN6=1;
              IN7=1;
              counter=0;
              rst=0;
              delay_nms(100);
              rst=1;
              delay_nms(100);
              fs=0;
              InitLCD();
              ClearScreen();
              wr_24C64(10,2);         /*写入个位*/
              wr_24C64(11,2);         /*写入个位*/
              wr_24C64(12,6);         /*写入十位*/
              wr_24C64(13,9);         /*写入百位*/
              write_val();             //临时函数
              read_val();             //临时函数
              display_a();             //
              AUXR=0X80;         //STC系列的1T 设置
              TMOD=0X01;          //
              TL0=0X32;
              TH0=0X53;
              ET0=1;
              TR0=1;  
              AUXR|=0x04;        //定时器2为1T模式      12MHZ
              T2L=0X90;          //设置定时初值
              T2H=0XE8;          //设置定时初值
              AUXR|=0X10;        //定时器2开始计时
              IE2|=0x04;         //开定时器2中断
              EA=1;
              IT0=1;                             //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
              EX0=1;                             //使能INT0中断
              CP1=1;
              DIR1=1;
              EN1=1;
              CP2=1;
              DIR2=1;
              EN2=1;
              CP3=1;
              DIR3=1;
              EN3=1;
              valm=0;
              vals=0;
              X_Data=0;         //X运行置赋零
              Y_Data=0;            //Y运行置赋零
              while(1)
              {
                OUT1=0;              //?????????OUT1总线开始??????????????????????????????????????
                kcounter=0;                         //按键计数器归零
                kstatus=0;                         //状态寄存器归零
//
                if(!IN7)                //手动操作检测入口//总线OUT1~~~~~~~~~~~//
                {
                 for(;kcounter<5;)               //按键循环至少5次    /
                 {                               A手动界面进入检测/
                  if(!IN7)                       //按键低电平
                  {
                  kcounter++;                    //按键计数器加一
                  kstatus++;                     //按键状态标志加一
                  delay(10);                     //延时
                  }
                  else if(~!IN7)                 //按键高电平
                  {
                  kcounter++;                     //按键计数器加一
                  kstatus=0;                     //按键状态标志归零
                  delay(10);                     //延时
                  }
                 }                     A手动界面结束检测/
                 if(kstatus>=3)                  /***大于3进入手动控制界面****/
                 {                     B/
                  OUT1=1;                         /***关OUT1总线***/
                  OUT2=0;                         /***开OUT2总线***/
                  ManuSet_Flag=1;                 //手动检测运行标志置一
                  display_b();                   /***显示手动高速*点动操作*回程序零*回机械零***/
//手动控制功能循环 按返回键退出循环//
                  while(ManuSet_Flag)            /*循环检测按键 手动高速*点动操作*回程序零*回机械零*/
                  {                                 ///while循环
                  delay_nms(50);
                  if(!IN6)                         //14手动功能返回检测
                   {
                   for(;kcounter<5;)               //按键循环5次
                   {
                    if(!IN6)                       //按键低电平
                    {
                    kcounter++;                    //按键计数器加一
                    kstatus++;                     //按键状态标志加一
                    delay(10);                     //延时
                    }
                    else if(~!IN6)                 //按键高电平
                    {
                    kcounter++;                    //按键计数器加一
                    kstatus=0;                     //按键状态标志归零
                    delay(10);                     //延时
                    }
                   }
                   if(kstatus>=3)                  //返回首页
                   {
                   ClearScreen();                  //清除液晶显示
                   display_a();                    //显示开机画面自动执行*手动操作*程序管理*参数设置
                   ManuSet_Flag=0;                 //手动检测运行标志置零失效,退出手动检测
                   display_graphic_16x8(28,1,xsadd[1],tab0);//  显示14
                   display_graphic_16x8(29,1,xsadd[4],tab0);//
                   }
                   kcounter=0;                     //按键循环标志归零
                   kstatus=0;                     //按键状态标志归零
                  }    
                  kcounter=0;                     //按键循环标志归零
                  kstatus=0;                     //按键状态标志归零
                  if(!IN7)                         //显示10手动高速反显检测
                  {
                   for(;kcounter<5;)             //按键循环5次
                   {
                    if(!IN7)                      //按键低电平
                    {
                    kcounter++;                     //按键计数器加一
                    kstatus++;                     //按键状态标志加一
                    delay(10);                     //延时
                    }
                    else if(~!IN7)              //按键高电平
                    {
                    kcounter++;                     //按键计数器加一
                    kstatus=0;                     //按键状态标志归零
                    delay(10);                     //延时
                    }
                   }
                   if(kstatus>=3)                  /***手动高速反显***/
                   {
                   display_graphic_16x8(28,1,xsadd[1],tab0);//  显示10
                   display_graphic_16x8(29,1,xsadd[0],tab0);//
                   ManuFast_Flag=~ManuFast_Flag;
                   if(ManuFast_Flag==0)
                   {
                   negatedisplay_manufast();
                   }
                   else
                   {
                   display_manufast();
                   }
                   }
                   kcounter=0;                     //按键循环标志归零
                   kstatus=0;                     //按键状态标志归零
                  }
/手动前进检测检测低电平显示前进松开按键高电平清除显示前进/
                  if(!IN5)                       //手动前进检测
                  {
                   for(;kcounter<3;)             //按键循环5次
                   {
                    if(!IN5)                     //按键低电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus++;                   //按键状态标志加一
                    }
                    else if(~!IN5)               //按键高电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus=0;                   //按键状态标志归零
                    }
                   }
                   if(kstatus>=3)                
                   {
                   DIS_Forward();                 //前进
                   YDirRun_Data();                 //显示Y位置数据
                   }
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                   for(;kcounter<=3;)            /*寄存器复位*/
                   {
                    if(~!IN5)                    /*检测前进为高电平?*/
                    {                            /**/
                    kcounter++;
                    }
                    else if(!IN5)                /*检测前进为低电平?*/
                    {
                    kcounter=0;                  /*寄存器复位*/  
                    CP2=0;
                    delay(100);  
                    CP2=1;
                    delay(100);  
                    Y_Data+=1;
                    if(Y_Data>=0)                 //如果Y值大于等于零
                    {
                    YBuff_Data=Y_Data;             //Y缓冲器等于运行值
                    YPosiNegate_Flag=1;             //Y值正负标志置一
                    }
                    else if(Y_Data<0)             //如果Y值小于零
                    {
                    YBuff_Data=Y_Data-Y_Data*2;     //
                    YPosiNegate_Flag=0;             //Y值正负标志置零
                    }
                    YDirRun_Data();                 //显示Y位置数据
                    }         
                   }
                   Clear_Forward();                 //清除显示前进
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                  }
///
                  OUT2=1;                        //10手动高速反显 14号返回按键OUT2总线释放
                  delay_nms(50);
                  OUT1=0;
                  kcounter=0;                    //按键循环标志归零
                  kstatus=0;                     //按键状态标志归零
                  if(!IN7)                       //检测点动操作//~~11号总线~OUT1~~~//
                  {
                   for(;kcounter<10;)            //按键循环5次
                   {
                    if(!IN7)                     //按键低电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus++;                   //按键状态标志加一
                    delay(10);                   //延时
                    }
                    else if(~!IN7)               //按键高电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus=0;                   //按键状态标志归零
                    delay(10);                   //延时
                    }
                   }
                   if(kstatus>=3)                /*按键状态标志大于等于3为有效值*/
                   {                             /*点动操作循环检测*/
/进入点动操作循环检测数字输入
                    jog_operating();
                    negatejog_operating();
                    counter=0;                             //光标计数器清零
                    JogOperatSet_Flag=1;
                    while(JogOperatSet_Flag)               //检测0---9按键
                    {
                     if(counter==0)
                     {
                     display_graphic_16x8(21,33,xsadd[10],tab0);// 清除   
                     delay_nms(100);
                     display_graphic_16x8(21,33,xsadd[20],tab0);// 方块   
                     delay_nms(100);
                     }
                     kcounter=0;                           //按键循环标志归零
                     kstatus=0;                            //按键状态标志归零
                      if(!IN1)                             //数字3检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN1)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN1)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字3***/
                      {
                       counter+=1;
                       Key_val=3;
                       JogData_calculate (counter,Key_val);//调用点动数据处理子程序
                       Dis_JogData();                      //显示点动数据  
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                      if(!IN2)                             //数字2检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN2)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN2)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字2***/
                      {
                      counter+=1;
                      Key_val=2;
                      JogData_calculate (counter,Key_val); //调用点动数据处理子程序
                      Dis_JogData();                       //显示点动数据
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                      if(!IN3)                             //数字1检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN3)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN3)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字1***/
                      {
                       counter+=1;
                       Key_val=1;
                       JogData_calculate (counter,Key_val);//调用点动数据处理子程序
                       Dis_JogData();                      //显示点动数据
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
检测123结束//
                    OUT1=1;                                //关取反点动操作总线
                    delay_nms(100);
                    OUT2=0;
                    kcounter=0;                            //按键循环标志归零
                    kstatus=0;                             //按键状态标志归零
                    if(!IN1)                               //数字6检测
                    {
                     for(;kcounter<5;)                     //按键循环5次
                     {
                      if(!IN1)                             //按键低电平
                      {
                      kcounter++;                          //按键计数器加一
                      kstatus++;                           //按键状态标志加一
                      delay(10);                           //延时
                      }
                      else if(~!IN1)                       //按键高电平
                      {
                      kcounter++;                          //按键计数器加一
                      kstatus=0;                           //按键状态标志归零
                      delay(10);                           //延时
                      }
                      }
                      if(kstatus>=3)                       /***数字6***/
                      {
                       counter+=1;
                       Key_val=6;
                       JogData_calculate (counter,Key_val);//调用点动数据处理子程序
                       Dis_JogData();                      //显示点动数据  
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                      if(!IN2)                             //数字5检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN2)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN2)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字5***/
                      {
                      counter+=1;
                      Key_val=5;
                      JogData_calculate(counter,Key_val);  //调用点动数据处理子程序
                      Dis_JogData();                       //显示点动数据
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                      if(!IN3)                             //数字4检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN3)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN3)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字4***/
                      {
                       counter+=1;
                       Key_val=4;
                       JogData_calculate(counter,Key_val); //调用点动数据处理子程序
                       Dis_JogData();                      //显示点动数据
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
                      if(!IN6)                             //返回键
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN6)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN6)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***返回键***/
                      {
                       JogOperatSet_Flag=0;                //退出点动检测循环界面
                       ManuSet_Flag=0;                     //退出手动检测循环界面
                       display_graphic_16x8(21,33,xsadd[21],tab0);//
                       ClearScreen();
                       display_a();                        //显示开机界面
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
检测456结束//
                      OUT2=1;                              //关检测456总线
                      delay_nms(100);
                      OUT3=0;
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                      if(!IN1)                             //数字9检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN1)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN1)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字9***/
                      {
                       counter+=1;
                       Key_val=9;
                       JogData_calculate(counter,Key_val); //调用点动数据处理子程序
                       Dis_JogData();                      //显示点动数据
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                      if(!IN2)                             //数字8检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN2)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN2)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字8***/
                      {
                      counter+=1;
                      Key_val=8;
                      JogData_calculate(counter,Key_val);  //调用点动数据处理子程序
                      Dis_JogData();                       //显示点动数据
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                      if(!IN3)                             //数字7检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN3)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN3)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字7***/
                      {
                       counter+=1;
                       Key_val=7;
                       JogData_calculate(counter,Key_val); //调用点动数据处理子程序
                       Dis_JogData();                      //显示点动数据
                      }
                       kcounter=0;                         //按键循环标志归零
                       kstatus=0;                          //按键状态标志归零
                      }
检测789结束//
                     OUT3=1;                               //关检测789总线
                     delay_nms(100);
                     OUT4=0;
                     kcounter=0;                           //按键循环标志归零
                     kstatus=0;                            //按键状态标志归零
                     if(!IN2)                              //显示10手动高速反显检测
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!IN2)                           //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!IN2)                     //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***数字0***/
                      {
                      counter+=1;
                      Key_val=0;
                      JogData_calculate(counter,Key_val);  //调用点动数据处理子程序
                      Dis_JogData();                       //显示点动数据
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                     }
检测0结束//
                     OUT4=1;                               //关检测0总线
                     delay_nms(100);
                     if(!INSERT)                           //显示25清除数据
                      {
                       for(;kcounter<5;)                   //按键循环5次
                       {
                        if(!INSERT)                        //按键低电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus++;                         //按键状态标志加一
                        delay(10);                         //延时
                        }
                        else if(~!INSERT)                  //按键高电平
                        {
                        kcounter++;                        //按键计数器加一
                        kstatus=0;                         //按键状态标志归零
                        delay(10);                         //延时
                        }
                       }
                      if(kstatus>=3)                       /***位置25***/
                      {                                    //点动数据清零
                      counter=0;
                      Buff_Data=0;
                      JogData_dealwith();
                      Dis_JogData();
                      display_graphic_16x8(15,33,xsadd[17],tab0);//显示数据
                      }
                      kcounter=0;                          //按键循环标志归零
                      kstatus=0;                           //按键状态标志归零
                     }
                     OUT1=0;                 //返回while循环使能检测321总线
                    }      ///点动操作while循环结束//
                   }
                   kcounter=0;                             //按键循环标志归零
                   kstatus=0;                              //按键状态标志归零
                  }
//后退检测Y-/
                  if(!IN5)                       //手动后退检测
                  {
                   for(;kcounter<3;)             //按键循环3次
                   {
                    if(!IN5)                     //按键低电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus++;                   //按键状态标志加一
                    }
                    else if(~!IN5)               //按键高电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus=0;                   //按键状态标志归零
                    }
                   }
                   if(kstatus>=3)                
                   {
                   DIS_Relreal();                 //手动后退
                   YDirRun_Data();                 //显示Y位置数据
                   }
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                   for(;kcounter<=3;)            /*寄存器复位*/
                   {
                    if(~!IN5)                    /*检测后退为高电平?*/
                    {                            /**/
                    kcounter++;
                    }
                    else if(!IN5)                /*检测后退为低电平?*/
                    {
                    kcounter=0;                  /*寄存器复位*/  
                    CP2=0;
                    delay(100);  
                    CP2=1;
                    delay(100);  
                    Y_Data-=1;
                    if(Y_Data>=0)                 //如果Y值大于等于零
                    {
                    YBuff_Data=Y_Data;             //Y缓冲器等于运行值
                    YPosiNegate_Flag=1;             //Y值正负标志置一
                    }
                    else if(Y_Data<0)             //如果Y值小于零
                    {
                    YBuff_Data=Y_Data-Y_Data*2;     //
                    YPosiNegate_Flag=0;             //Y值正负标志置零
                    }
                    YDirRun_Data();                 //显示Y位置数据
                    }         
                   }
                   Clear_Relreal();                 //清除显示下行
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                  }

                  OUT1=1;                        //关取反点动操作下行总线
                  delay_nms(100);
///右移X+/
                  OUT3=0;
                  if(!IN5)                       //手动右移检测
                  {
                   for(;kcounter<3;)             //按键循环5次
                   {
                    if(!IN5)                     //按键低电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus++;                   //按键状态标志加一
                    }
                    else if(~!IN5)               //按键高电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus=0;                   //按键状态标志归零
                    }
                   }
                   if(kstatus>=3)                
                   {
                   DIS_MoveRight();                 //右移
                   XDirRun_Data();                 //显示X值位置数据
                   }
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                   for(;kcounter<=3;)            /*寄存器复位*/
                   {
                    if(~!IN5)                    /*检测前进为高电平?*/
                    {                            /**/
                    kcounter++;
                    }
                    else if(!IN5)                /*检测右移为低电平?*/
                    {
                    kcounter=0;                  /*寄存器复位*/  
                    CP1=0;
                    delay(100);  
                    CP1=1;
                    delay(100);  
                    X_Data+=1;
                    if(X_Data>=0)                 //如果X值大于等于零
                    {
                    XBuff_Data=X_Data;             //X缓冲器等于运行值
                    XPosiNegate_Flag=1;             //X值正负标志置一
                    }
                    else if(X_Data<0)             //如果X值小于零
                    {
                    XBuff_Data=X_Data-X_Data*2;     //
                    XPosiNegate_Flag=0;             //X值正负标志置零
                    }
                    XDirRun_Data();                 //显示X值位置数据
                    }         
                   }
                   Clear_MoveRight();             //清除显示右移
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                  }

                  OUT3=1;                //关右移检测总线
                  delay_nms(100);
                  OUT4=0;
///
                  if(!IN5)                       //手动左移检测
                  {
                   for(;kcounter<3;)             //按键循环5次
                   {
                    if(!IN5)                     //按键低电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus++;                   //按键状态标志加一
                    }
                    else if(~!IN5)               //按键高电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus=0;                   //按键状态标志归零
                    }
                   }
                   if(kstatus>=3)                
                   {
                   DIS_Moveleft();                 //显示左移
                   XDirRun_Data();                 //显示X值位置数据
                   }
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                   for(;kcounter<=3;)            /*寄存器复位*/
                   {
                    if(~!IN5)                    /*检测左移为高电平?*/
                    {                            /**/
                    kcounter++;
                    }
                    else if(!IN5)                /*检测左移为低电平?*/
                    {
                    kcounter=0;                  /*寄存器复位*/  
                    CP1=0;
                    delay(100);  
                    CP1=1;
                    delay(100);  
                    X_Data-=1;
                    if(X_Data>=0)                 //如果X值大于等于零
                    {
                    XBuff_Data=X_Data;             //X缓冲器等于运行值
                    XPosiNegate_Flag=1;             //X值正负标志置一
                    }
                    else if(X_Data<0)             //如果X值小于零
                    {
                    XBuff_Data=X_Data-X_Data*2;     //
                    XPosiNegate_Flag=0;             //X值正负标志置零
                    }
                    XDirRun_Data();                 //显示X值位置数据
                    }         
                   }
                   Clear_Moveleft();             //清除显示左移
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
                  }
///
                  OUT4=1;                //关左移检测总线
                  delay_nms(100);
                  OUT2=0;                         //
                  }                                 //退出手动控制界面
//按下返回键退出手动控制功能循环//
                 }                                 B退出手动控制检测界面
                }                                 //手动操作检测出口//~~~~~~~~~~~//
//
                kcounter=0;                      //按键循环标志归零
                kstatus=0;                       //按键状态标志归零
                OUT1=1;
                delay_nms(80);
                OUT2=0;
                if(!IN7)                         //10手动 操作界面 手动高速反显检测
                {
                 for(;kcounter<5;)               //按键循环5次
                 {
                  if(!IN7)                       //按键低电平
                  {
                  kcounter++;                    //按键计数器加一
                  kstatus++;                     //按键状态标志加一
                  delay(10);                     //延时
                  }
                  else if(~!IN7)                 //按键高电平
                  {
                  kcounter++;                    //按键计数器加一
                  kstatus=0;                     //按键状态标志归零
                  delay(10);                     //延时
                  }
                 }
                 if(kstatus>=3)                  /***手动高速反显***/
                 {
                 display_graphic_16x8(28,1,xsadd[1],tab0);//  显示10
                 display_graphic_16x8(29,1,xsadd[0],tab0);//
                 }
                 kcounter=0;                     //按键循环标志归零
                 kstatus=0;                      //按键状态标志归零
                }
                OUT2=1;
                delay_nms(50);
                OUT3=0;
//参数设置界面检测//
                if(!IN6)                         //参数设置界面检测     位置13
                {
                for(;kcounter<5;)                //按键循环5次
                 {
                  if(!IN6)                       //按键低电平
                  {
                  kcounter++;                     //按键计数器加一
                  kstatus++;                     //按键状态标志加一
                  delay(10);                     //延时
                  }
                  else if(~!IN6)                 //按键高电平
                  {
                  kcounter++;                    //按键计数器加一
                  kstatus=0;                     //按键状态标志归零
                  delay(10);                     //延时
                  }
                 }
                 if(kstatus>=3)                 //显示13进入参数设置功能
                 {
                 ClearScreen();
                 DataSet_Flag=1;                 //参数设置循环检测标志
                 DataSet();                         //显示    系统参数*系统自检*IO*设置
                 while(DataSet_Flag)
                 {  
                 OUT3=1;
                 delay_nms(50);
                 OUT2=0;
                  if(!IN6)                       //     返回键
                  {
                   for(;kcounter<5;)             //按键循环5次
                   {
                    if(!IN6)                     //按键低电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus++;                   //按键状态标志加一
                    delay(10);                   //延时
                    }
                    else if(~!IN6)               //按键高电平
                    {
                    kcounter++;                  //按键计数器加一
                    kstatus=0;                   //按键状态标志归零
                    delay(10);                   //延时
                    }
                   }
                   if(kstatus>=3)                /***返回键***/
                    {
                    DataSet_Flag=0;              //退出循环
                    display_graphic_16x8(21,33,xsadd[21],tab0);//
                    ClearScreen();
                    display_a();                 //首页显示
                    }
                     kcounter=0;                 //按键循环标志归零
                     kstatus=0;                  //按键状态标志归零
                   }
                   kcounter=0;                   //按键循环标志归零
                   kstatus=0;                    //按键状态标志归零
/系统参数检测START
                   if(!IN7)                      //10号按键系统参数
                   {
                    for(;kcounter<5;)            //按键循环5次
                    {
                     if(!IN7)                    //按键低电平
                     {
                     kcounter++;                 //按键计数器加一
                     kstatus++;                  //按键状态标志加一
                     delay(10);                  //延时
                     }
                     else if(~!IN7)              //按键高电平
                     {
                     kcounter++;                 //按键计数器加一
                     kstatus=0;                  //按键状态标志归零
                     delay(10);                  //延时
                     }
                    }
                    if(kstatus>=3)               /***系统参数选项循环***/
                    {
                    SystemDataSet_Flag=1;        //系统参数设置循环检测标志
                    ClearScreen();
                    PosiDis_Option();            //正显选项
                    DisSystem_Value();             //X正限X负限 Y正限Y负限
                    while(SystemDataSet_Flag)    //系统参数
                    {
                    if(!IN6)                     //返回键
                    {
                     for(;kcounter<5;)           //按键循环5次
                     {
                      if(!IN6)                   //按键低电平
                      {
                      kcounter++;                //按键计数器加一
                      kstatus++;                 //按键状态标志加一
                      delay(10);                 //延时
                      }
                      else if(~!IN6)             //按键高电平
                      {
                      kcounter++;                //按键计数器加一
                      kstatus=0;                 //按键状态标志归零
                      delay(10);                 //延时
                       }
                      }
                     if(kstatus>=3)              /***返回键***/
                     {
                     ClearScreen();
                     display_graphic_16x8(28,1,xsadd[1],tab0);//  显示14
                     display_graphic_16x8(29,1,xsadd[3],tab0);//
                     SystemDataSet_Flag=0;       //系统参数设置循环检测标志归零
                     DataSet();
                     }
                     kcounter=0;                 //按键循环标志归零
                     kstatus=0;                  //按键状态标志归零
                     }    //返回键检测结束
                     OUT2=1;
                     delay(80);                     //延时
                     OUT1=0;  //开检测系统总线   //OUT1 IN7
                     if(!IN7)                         //11系统检测
                     {
                      for(;kcounter<5;)              //按键循环5次
                       {
                        if(!IN7)                      //按键低电平
                        {
                        kcounter++;                     //按键计数器加一
                        kstatus++;                     //按键状态标志加一
                        delay(10);                     //延时
                        }
                        else if(~!IN7)               //按键高电平
                        {
                        kcounter++;                     //按键计数器加一
                        kstatus=0;                     //按键状态标志归零
                        delay(10);                     //延时
                        }
                       }
                      if(kstatus>=3)                 //显示10进入程序编辑功能
                      {
                      SystemSet_Flag=1;          //系统数据设置循环检测标志   分子分母最高时间点位起速
                      ClearScreen();
                      DisSystem();
                      OUT1=1;                         //关检测系统总线
                      while(SystemSet_Flag)
                      {
                      Dis_SystemCursorCalculate(XCursor,YCursor);     //     系统参数光标计算处理
                      Sys_CursorBlinking(SysCursor);                 //系统光标闪烁
                      delay(3000);                     //延时
                      delay(30);                     //延时
                      OUT2=0;                         //开返回光标上总线
                      if(!IN6)                         //10程序编辑界面检测
                      {
                       for(;kcounter<5;)             //按键循环5次
                       {
                        if(!IN6)                      //按键低电平
                        {
                        kcounter++;                     //按键计数器加一
                        kstatus++;                     //按键状态标志加一
                        delay(10);                     //延时
                        }
                        else if(~!IN6)                 //按键高电平
                        {
                        kcounter++;                     //按键计数器加一
                        kstatus=0;                     //按键状态标志归零
                        delay(10);                     //延时
                        }
                       }
                       if(kstatus>=3)                //进入系统参数设置界面
                       {
                           SystemSet_Flag=0;
                        ClearScreen();
                        PosiDis_Option();            //正显选项
                        DisSystem_Value();             //X正限X负限 Y正限Y负限
                        delay(200);                     //延时
                       }
                       kcounter=0;                     //按键循环标志归零
                       kstatus=0;                     //按键状态标志归零
                       }
/************XCursorX光标指针YCursor=0Y光标指针*********/
/光标上检测START/
                       if(!IN5)                          //光标上检测
                       {
                        for(;kcounter<5;)             //按键循环5次
                        {
                         if(!IN5)                       //按键低电平
                         {
                         kcounter++;                  //按键计数器加一
                         kstatus++;                      //按键状态标志加一
                         delay(10);                      //延时
                         }
                         else if(~!IN5)               //按键高电平
                         {
                         kcounter++;                  //按键计数器加一
                         kstatus=0;                      //按键状态标志归零
                         delay(10);                      //延时
                         }
                        }
                        if(kstatus>=3)                //光标上处理
                        {
                        YCursor-=1;
                        if(YCursor<0)
                        YCursor=3;
                       }
                       kcounter=0;                      //按键循环标志归零
                       kstatus=0;                      //按键状态标志归零
                       }    
///光标上检测STOP///
                       OUT2=1;
                       delay(80);                      //延时
                       OUT3=0;                        //开检测->总线      
                       if(!IN5)                          //光标->检测
                       {
                        for(;kcounter<5;)             //按键循环5次
                        {
                         if(!IN5)                       //按键低电平
                         {
                         kcounter++;                  //按键计数器加一
                         kstatus++;                      //按键状态标志加一
                         delay(10);                      //延时
                         }
                         else if(~!IN5)               //按键高电平
                         {
                         kcounter++;                  //按键计数器加一
                         kstatus=0;                      //按键状态标志归零
                         delay(10);                      //延时
                         }
                        }
                        if(kstatus>=3)                //光标->处理
                        {
                        XCursor-=1;
                        if(XCursor<0)
                        XCursor=3;
                       }
                       kcounter=0;                      //按键循环标志归零
                       kstatus=0;                      //按键状态标志归零
                       }
///->检测STOP///
                       OUT3=1;
                       delay(80);                      //延时
                       OUT4=0;                        //开检测<-总线      
                       if(!IN5)                          //光标<-检测
                       {
                        for(;kcounter<5;)             //按键循环5次
                        {
                         if(!IN5)                       //按键低电平
                         {
                         kcounter++;                  //按键计数器加一
                         kstatus++;                      //按键状态标志加一
                         delay(10);                      //延时
                         }
                         else if(~!IN5)               //按键高电平
                         {
                         kcounter++;                  //按键计数器加一
                         kstatus=0;                      //按键状态标志归零
                         delay(10);                      //延时
                         }
                        }
                        if(kstatus>=3)                //光标<-处理
                        {
                        XCursor-=1;
                        if(XCursor<0)
                        XCursor=1;
                       }
                       kcounter=0;                      //按键循环标志归零
                       kstatus=0;                      //按键状态标志归零
                       }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在uniapp里面使用 mp-html 并且开启 latex 功能

在uniapp里面使用 mp-html 并且开启 latex 功能 默认情况下 mp-html 是不会开启 latex 功能的, 如果需要开启 latex 功能是需要到代码操作拉取代码自行打包的。 这里说一下 mp-html 里面的 latex 功能是由 https://github.com/rojer95/katex-mini 提供的技术实现&#xff0c;…

计算机系列之数据库技术

13、数据库技术&#xff08;重点、考点&#xff09; 1、三级模式-两级映像&#xff08;考点&#xff09; 内模式&#xff1a;管理如何存储物理的数据&#xff0c;对应具体物理存储文件。 **模式&#xff1a;**又称为概念模式&#xff0c;就是我们通常使用的基本表&#xff0c…

每日算法-java

题目来自蓝桥云 // 这是一个Java程序&#xff0c;用于解决最长不下降子序列问题。 // 问题描述&#xff1a;给定一个整数序列&#xff0c;找到最长的子序列&#xff0c;使得这个子序列是不下降的&#xff08;即相邻的元素不严格递减&#xff09;。 // 程序使用了动态规划的方法…

【C语言】整数,浮点数数据在内存中的存储

Tiny Spark get dazzling some day. 目录 1. 整数在内存中的存储1.1 原码、反码、补码1.1 大小端存储1.2.1 字节序分类1.2.2 判断字节序 2. 浮点数在内存中的存储2.1 浮点数的存储形式2.2 浮点数的 “ 存 ”2.2.1 S2.2.2 E2.2.3 F 2.3 浮点数的 “ 取 ”2.3.1 S2.3.2 E、F 3. 浮…

C++学习第十一天(模版进阶)

1、非类型模版参数 模版参数分为类类型形参和非类型形参 类类型形参&#xff1a;出现在参数列表中&#xff0c;跟在class或者typename之类的参数类型名称 非类型形参&#xff1a;就是用一个常量作为类&#xff08;函数&#xff09;模版的一个参数&#xff0c;在类&#xff08;函…

读取打包到JAR中的文件:常见问题与解决方案(文件在但是报错not find)

读取打包到JAR中的文件&#xff1a;常见问题与解决方案 喝淡酒的时候&#xff0c;宜读李清照&#xff1b;喝甜酒时&#xff0c;宜读柳永&#xff1b;喝烈酒则大歌东坡词。其他如辛弃疾&#xff0c;应饮高梁小口&#xff1b;读放翁&#xff0c;应大口喝大曲&#xff1b;读李后主…

Zotero Word中插入带超链接的参考文献

Zotero 超链接 找了好多原代码&#xff0c;最接近能实施的为&#xff1a; https://blog.csdn.net/weixin_47244593/article/details/129072589 但是&#xff0c;就是向他说的一样会报错&#xff0c;我修改了代码&#xff0c;遇见报错的地方会直接跳过不执行&#xff0c;事后找…

学习c#第26天 面向对象基础之类与对象

1.类 1.什么是类? 俗话说&#xff0c;“物以类聚&#xff0c;人以群分”。意思是同类的东西经常聚在一起&#xff0c;志同道合 的人相聚成群。前者说物&#xff0c;后者说人。这里以物来进行举例说明[见图]&#xff1a; 水果超市&#xff0c;所有同类的水果摆放在一起&#xf…

PHP 框架安全:ThinkPHP 序列 漏洞测试.

什么是 ThinkPHP 框架. ThinkPHP 是一个流行的国内 PHP 框架&#xff0c;它提供了一套完整的安全措施来帮助开发者构建安全可靠的 web 应用程序。ThinkPHP 本身不断更新和改进&#xff0c;以应对新的安全威胁和漏洞。 ThinkPHP 框架的安全特性&#xff1a; (1) 输入过滤和验证…

PCB机打孔机程序(一)

/*PCB机板增加读写FM24C64函数PAST 2018 1 6 21:30 CODE 28435*/ /*程序编辑按XX-YY-快速显示数据 测试完成 程序编号 程序行号 界面重新编排 参数设置 系统设置XY分子分母 光标位置选择 选中数字闪烁 进入手动操作 按返回退出 按空格键 数据清除L4346 13775061792*****/ …

【go项目01_学习记录05】

学习记录 1 依赖管理 Go Modules1.1 弃用 $GOPATH1.2 Go Modules 日常使用1.2.1 初始化生成go.mod文件1.2.2 Go Proxy代理1.2.3 go.mod文件查看1.2.4 go.sum文件查看1.2.5 indirect 含义1.2.6 go mod tidy 命令1.2.7 清空 Go Modules 缓存1.2.8 下载依赖1.2.9 所有 Go Modules …

[qnx] 通过zcu104 SD卡更新qnx镜像的步骤

0. 概述 本文演示如果给Xlinx zcu104开发板刷入自定义的qnx镜像 1.将拨码开关设置为SD卡启动 如下图所示&#xff0c;将1拨到On,2,3,4拨到Off&#xff0c;即为通过SD启动。 2.准备SD卡中的内容 首先需要将SD格式化为FAT32的&#xff08;如果已经是FAT32格式&#xff0c;则…

网络安全之OSI七层模型详解

OSI七层模型分为控制层&#xff08;前三层&#xff09;和数据层&#xff08;后四层&#xff09;。从第七层到一层为&#xff1b; 应用层&#xff08;7&#xff09;接收数据 表示层&#xff08;6&#xff09;将数据翻译为机器语言 会话层&#xff08;5&#xff09;建立虚连接…

代码随想录leetcode200题之字符串

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题中字符串部分的题目。 2 训练 题目1&#xff1a;344. 反转字符串 C代码如下&#xff0c; class Solution { public:void reverseString(vector<char>& s) {int i 0, j s.size() - 1;whi…

C++证道之路第十八章探讨C++新标准

一、复习前面介绍过的C11新功能 1、新类型 C11新增了类型long long 和unsigned long long 新增了类型char16_t 和char32_t 2、统一的初始化 C11扩大了用大括号括起的列表&#xff08;初始化列表&#xff09;的使用范围&#xff0c;使其可以用于所有内置类型和用户定义的类…

Spring开发利器:深入解析Apache Commons Lang的BooleanUtils类

1. 概述 Spring框架中并没有直接提供名为BooleanUtils的类。然而&#xff0c;Apache Commons Lang库中有一个非常有用的BooleanUtils类&#xff0c;它提供了一系列静态方法来简化对布尔值的操作。虽然Spring本身没有提供这样的工具类&#xff0c;但在Spring项目中&#xff0c;…

可编程 IP 新星 Story Protocol 何以引领链上文艺复兴浪潮?

当前&#xff0c;随着 Web3 行业发展进入全新阶段&#xff0c;与生成式人工智能&#xff08;AIGC&#xff09;技术融合正在创造潜力新星项目。也是目前的互联网生态下&#xff0c;任何普通民众都有权利创作高质量的音乐、艺术、散文和视频内容&#xff0c;带来了用户生成内容&a…

算法(C++

题目&#xff1a;螺旋矩阵&#xff08;59. 螺旋矩阵 II - 力扣&#xff08;LeetCode&#xff09;&#xff09; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&am…

Vue进阶之Vue项目实战(二)

Vue项目实战 构建基础框架路由 项目&#xff08; v1.0,base-app-layer&#xff09;导航 router物料编排选型 插件化插件化平时写代码场景 配置器开发 构建基础框架 路由 路由分类&#xff1a; memoryHistory&#xff1a;内存路由&#xff0c;路由信息记录在内存中&#xff0…

解决github的remote rejected|git存储库的推送保护

前言 git存储库的推送保护。当你试图推送代码到GitHub仓库时&#xff0c;由于存在与主分支&#xff08;master&#xff09;相关的仓库规则违规行为&#xff0c;推送会被拒绝了。这种保护机制帮助确保只有经过授权和符合规定的代码才能被合并到主分支&#xff0c;从而保护了主分…