STC8G1K08串口通讯

 /***豆腐干下位机测试  L573 CODE 3919 2021 1 25***/    
/***STC8G1K08   三段时间控制程序 电机自动启停***/    
              #include     <REG52.H>          //下降一段设置
              #include     <intrins.h>        //保压时间
              #include     <string.h>
              #define      FOSC 11059200UL             //晶振频率
              #define      BRT  (256-FOSC/9600/32)   //波特率除/32  9600/32  或者115200/32
              #include     "stdio.h"
              #include     <stdlib.h>
              #define      uint unsigned int
              #define      uchar unsigned char
              uchar        data_i=0;
              sbit         INTPUT1=P5^4;         //启动信号
              sbit         DOWN=P3^2;             //下降
              sbit         UP=P3^3;                 //上升
              sbit         LED=P5^5;             //EEPROM写指示
              uint         FLAG_S;
              #define      CMD_IDLE    0         //空闲模式
              #define      CMD_READ    1         //IAP字节读命令
              #define      CMD_PROGRAM 2         //IAP字节编程命令
              #define      CMD_ERASE   3         //IAP扇区擦除命令
              #define      ENABLE_IAP  0x82      //if SYSCLK<20MHz
              #define      IAP_ADDRESS 0x0000    //时间 EEPROM首地址
              typedef      unsigned char BYTE;
              typedef      unsigned int WORD;
/**********************/
              static uint  RUN_TIME;   //运行总时间     累计
/*************周期一*********/              
              static uint  RunTime_A;  //停顿时间  第一段
              static uint  Wait_A;     //停顿时间
              static uint  Press_A;    //压榨时间
/*************周期二*********/
              static uint  RunTime_B;  //停顿时间  第二段
              static uint  Wait_B;     //停顿时间
              static uint  Press_B;    //压榨时间
/*************周期二*********/
              static uint  RunTime_C;  //停顿时间  第三段
              static uint  Wait_C;     //停顿时间
              static uint  Press_C;    //压榨时间

/*************系统参数*******/
              static uint  Back_Time;  //回程时间
              static uint  Down_Time;  //下降一时间
              static uint  Press_Time; //保压时间
/**********************/
              bit           Receive_Flag;
              bit          Run_Flag;
              bit          Dataa_Flag;
              bit          Datab_Flag;
              uchar        kcounter,kstatus;     //按键计数标志 按键状态标志
              uint         a[8];             //定义数组a 存储串口数据串
/*------------------------------------------*/
              void delay(uint t)
              {
              uint i,j;
              for(i=0;i<t;i++)
              for(j=0;j<100;j++);
              }
/*-----------(1)延时子程序12MHz 加千百十个显示--------*/
               void Delay100ms(uint x)              //
               {
               uint i,j;
               for(i=0;i<x;i++)
               for(j=0;j<11000;j++);
               }
/*-----------(1)延时子程序12MHz 加千百十个显示--------*/
               void Delay_100ms(uint x)          //page 5 保压,上升计时  Delay100ms
               {
               uint i,j;
                for(i=0;i<x;i++)
                {
                for(j=0;j<9200;j++);
                printf("n6.val=%d\xff\xff\xff",i);//
                }
               }    
/*----关闭IAP----------------------------*/
              void IapIdle()
              {
              IAP_CONTR = 0;                  //关闭IAP功能
              IAP_CMD = 0;                    //清除命令寄存器
              IAP_TRIG = 0;                   //清除触发寄存器
              IAP_ADDRH = 0x80;               //将地址设置到非IAP区域
              IAP_ADDRL = 0;
              }
/*-从ISP/IAP/EEPROM区域读取一字节-*/
              BYTE IapReadByte(WORD addr)
              {
              BYTE dat;                       //数据缓冲区
              IAP_CONTR = ENABLE_IAP;         //使能IAP
              IAP_CMD = CMD_READ;             //设置IAP命令
              IAP_ADDRL = addr;               //设置IAP低地址
              IAP_ADDRH = addr >> 8;          //设置IAP高地址
              IAP_TRIG = 0x5a;                //写触发命令(0x5a)
              IAP_TRIG = 0xa5;                //写触发命令(0xa5)
              _nop_();                        //等待ISP/IAP/EEPROM操作完成
              dat = IAP_DATA;                 //读ISP/IAP/EEPROM数据
              IapIdle();                      //关闭IAP功能
              return dat;                     //返回
              }
/*-写一字节数据到ISP/IAP/EEPROM区域-*/
              void IapProgramByte(WORD addr, BYTE dat)
              {
              IAP_CONTR = ENABLE_IAP;         //使能IAP
              IAP_CMD = CMD_PROGRAM;          //设置IAP命令
              IAP_ADDRL = addr;               //设置IAP低地址
              IAP_ADDRH = addr >> 8;          //设置IAP高地址
              IAP_DATA = dat;                 //写ISP/IAP/EEPROM数据
              IAP_TRIG = 0x5a;                //写触发命令(0x5a)
              IAP_TRIG = 0xa5;                //写触发命令(0xa5)
              _nop_();                        //等待ISP/IAP/EEPROM操作完成
              IapIdle();
              }
/*---扇区擦除---------------*/
              void IapEraseSector(WORD addr)
              {
              IAP_CONTR = ENABLE_IAP;         //使能IAP val=IapReadByte(IAP_ADDRESS+1);
              IAP_CMD = CMD_ERASE;            //设置IAP命令
              IAP_ADDRL = addr;               //设置IAP低地址
              IAP_ADDRH = addr >> 8;          //设置IAP高地址
              IAP_TRIG = 0x5a;                //写触发命令(0x5a)
              IAP_TRIG = 0xa5;                //写触发命令(0xa5)
              _nop_();                        //等待ISP/IAP/EEPROM操作完成
              IapIdle();
              }
/***********************************/
              void red_eeprom(void)
              {
              uint m,n;        
              m=IapReadByte(IAP_ADDRESS+0);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+1);  //时间后八位
              RunTime_A=m*256+n;             //周期一压榨总时
              m=IapReadByte(IAP_ADDRESS+2);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+3);  //时间后八位
              Wait_A=m*256+n;                 //周期一停顿时间
              m=IapReadByte(IAP_ADDRESS+4);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+5);  //时间后八位
              Press_A=m*256+n;                 //周期一压榨时间
              m=IapReadByte(IAP_ADDRESS+6);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+7);  //时间后八位
              RunTime_B=m*256+n;             //周期二压榨总时
              m=IapReadByte(IAP_ADDRESS+8);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+9);  //时间后八位
              Wait_B=m*256+n;                 //周期二停顿时间
              m=IapReadByte(IAP_ADDRESS+10); //时间前八位
              n=IapReadByte(IAP_ADDRESS+11); //时间后八位
              Press_B=m*256+n;                 //周期二压榨时间

              Back_Time=IapReadByte(IAP_ADDRESS+12);  //回程时间时间后八位
              Down_Time=IapReadByte(IAP_ADDRESS+13); //下降一时间后八位
              m=IapReadByte(IAP_ADDRESS+14); //时间前八位
              n=IapReadByte(IAP_ADDRESS+15); //时间后八位
              Press_Time=m*256+n;             //保压时间

              RunTime_C=IapReadByte(IAP_ADDRESS+16);             //周期三压榨总时
              Wait_C=IapReadByte(IAP_ADDRESS+17);                 //周期三停顿时间
              Press_C=IapReadByte(IAP_ADDRESS+18);             //周期三压榨时间
              }
/*************写时间参数到EEPROM*******************************/
               void Write_EepromTime()
              {
               LED=0;
               IapEraseSector(IAP_ADDRESS); //扇区擦除
               IapProgramByte(IAP_ADDRESS+0,RunTime_A/256);   /*周期一压榨总时高八位*/    
               IapProgramByte(IAP_ADDRESS+1,RunTime_A%256);   /*周期一压榨总时低八位*/

               IapProgramByte(IAP_ADDRESS+2,Wait_A/256);      /*周期一停顿时间高八位*/  
               IapProgramByte(IAP_ADDRESS+3,Wait_A%256);      /*周期一停顿时间低八位*/

               IapProgramByte(IAP_ADDRESS+4,Press_A/256);     /*周期一压榨时间高八位*/
               IapProgramByte(IAP_ADDRESS+5,Press_A%256);     /*周期一压榨时间低八位*/

               IapProgramByte(IAP_ADDRESS+6,RunTime_B/256);   /*周期二压榨总时高八位*/    
               IapProgramByte(IAP_ADDRESS+7,RunTime_B%256);   /*周期二压榨总时低八位*/

               IapProgramByte(IAP_ADDRESS+8,Wait_B/256);      /*周期二停顿时间高八位*/  
               IapProgramByte(IAP_ADDRESS+9,Wait_B%256);      /*周期二停顿时间低八位*/

               IapProgramByte(IAP_ADDRESS+10,Press_B/256);    /*周期二压榨时间高八位*/
               IapProgramByte(IAP_ADDRESS+11,Press_B%256);    /*周期二压榨时间低八位*/

               IapProgramByte(IAP_ADDRESS+12,Back_Time);      /*写入回程时间*/
               IapProgramByte(IAP_ADDRESS+13,Down_Time);      /*下降一时间*/
               IapProgramByte(IAP_ADDRESS+14,Press_Time/256); /*写入保压时间高八位*/
               IapProgramByte(IAP_ADDRESS+15,Press_Time%256); /*写入保压时间低八位*/

               IapProgramByte(IAP_ADDRESS+16,RunTime_C);      /*周期三压榨总时*/    
               IapProgramByte(IAP_ADDRESS+17,Wait_C);         /*周期三停顿时间*/  
               IapProgramByte(IAP_ADDRESS+18,Press_C);        /*周期三压榨时间*/
               
               }
/*************关所有输出*******************************/             
               void reset_io()
               {
               P3M0=0X00;
               P3M1=0X00;
               P5M0=0;    
               P5M1=0;
               DOWN=1;                           //气缸下降
               UP=1;                             //气缸上升
               INTPUT1=1;                         //
               }
/****************按键计数器状态寄存器归零*************/
               void RstKey()
               {
               kcounter=0;                       //按键计数器归零
               kstatus=0;                        //状态寄存器归零
               }
/*****************按键低电平检测函数*****************/
               void   LowVoltKey(void)           //按键计数器状态标志加一
               {
               kcounter++;                       
               kstatus++;     
               delay(5);                         //延时                  
               }
/*****************按键高电平检测函数*****************/
               void    HighVoltKey(void)         //按键计数器加一 状态标志归零
               {
               kcounter++;                       //按键计数器加一
               kstatus=0;                        //按键状态标志归零
               Delay100ms(5);                         //延时
               }
/*------------page 0页面显示---------------------*/
               void disdata_a()//周期一参数    周期二参数
               {
                red_eeprom();
                printf("n0.val=%d\xff\xff\xff",RunTime_A);    //第一段周期总时
                printf("n0.val=%d\xff\xff\xff",RunTime_A);    //第一段周期总时
                printf("n1.val=%d\xff\xff\xff",Wait_A);        //第一段停顿时间
                printf("n2.val=%d\xff\xff\xff",Press_A);    //第一段压榨时间
                printf("n3.val=%d\xff\xff\xff",RunTime_B);    //第二段周期总时
                printf("n4.val=%d\xff\xff\xff",Wait_B);        //第二段停顿时间
                printf("n5.val=%d\xff\xff\xff",Press_B);    //第二段压榨时间
                LED=1;
               }
/*------------page 2页面显示---------------------*/
               void disdata_b()//                            //周期三参数  系统参数
               {
                red_eeprom();
                printf("n0.val=%d\xff\xff\xff",RunTime_C);    //第三段周期总时
                printf("n0.val=%d\xff\xff\xff",RunTime_C);    //第三段周期总时
                printf("n1.val=%d\xff\xff\xff",Wait_C);        //第三段停顿时间
                printf("n2.val=%d\xff\xff\xff",Press_C);    //第三段压榨时间
                printf("n3.val=%d\xff\xff\xff",Down_Time);    //下降一时间
                printf("n4.val=%d\xff\xff\xff",Press_Time);    //保压时间
                printf("n5.val=%d\xff\xff\xff",Back_Time);    //回程时间
                LED=1;
               }
/*------------自动压榨开始---------------------*/
              void start()
              {        
              uint t1;    
              RUN_TIME=0;                        //压榨总时间清零
              printf("page 4\XFF\XFF\XFF");         //第三段周期界面显示
              disdata_a();
              FLAG_S=1;                          //1 下降 2上升 3停止 4结束      5保压      6待机       7周期一 8周期二
              printf("va0.val=%d\xff\xff\xff",FLAG_S);    //触摸屏变量va0,用于定时器判断变量显示中文内容
              Delay100ms(5);                     //延时(5);
              DOWN=0;                             //
              UP=1;                                 //
              Delay_100ms(Down_Time*10);         //下降一时间
              RUN_TIME+=Down_Time*10;             //
              DOWN=1;    
              FLAG_S=3;                          //1 下降 2上升 3停止  4结束   5保压 6待机      7周期一 8周期二
              printf("va0.val=%d\xff\xff\xff",FLAG_S);//
              Run_Flag=1;                         //自动运行标志
              while(Run_Flag)
               {
                Delay100ms(Wait_A*10);             //周期一停顿时间
                RUN_TIME+=Wait_A*10;
                DOWN=0;                             //下降
                FLAG_S=1;                        //1 下降 2上升 3停止 4结束      5保压    6待机      7周期一 8周期二
                printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
                Delay100ms(Press_A);           //压榨时间
                RUN_TIME+=Press_A;
                DOWN=1;                             //停止
                FLAG_S=3;                        //1 下降 2上升 3停止  4结束   5保压  6待机       7周期一 8周期二
                printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
                if(RUN_TIME>=RunTime_A*10)         //总时间大于等于设定值
                Run_Flag=0;                         //自动运行标志 结束周期一循环
                printf("n7.val=%d\xff\xff\xff",RUN_TIME/10);    //
               }
//周期一结束
               FLAG_S=8;                         //1 下降 2上升 3停止  4结束   5保压   6待机  7周期一 8周期二
               printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
               Delay100ms(5);                    //延时(5);
               RUN_TIME=0;                         //计时器归零
               printf("n7.val=%d\xff\xff\xff",RUN_TIME);    //
               Run_Flag=1;                         //自动运行标志,启动周期二循环
               while(Run_Flag)
               {
                Delay100ms(Wait_B*10);             //周期二停顿时间
                RUN_TIME+=Wait_B*10;
                DOWN=0;                             //下降
                FLAG_S=1;                        //1 下降 2上升 3停止 4结束     5保压  6待机  7周期一 8周期二
                printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
                Delay100ms(Press_B);             //压榨时间
                RUN_TIME+=Press_B;
                DOWN=1;                             //停止
                FLAG_S=3;                        //1 下降 2上升 3停止  4结束   5保压  6待机      7周期一 8周期二
                printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
                if(RUN_TIME>=RunTime_B*10)         //总时间大于等于设定值
                Run_Flag=0;                         //自动运行标志 结束周期二循环
                printf("n7.val=%d\xff\xff\xff",RUN_TIME/10);    //
               }
//周期二结束
               FLAG_S=9;                          //1 下降 2上升 3停止 4结束      5保压      6待机       7周期一 8周期二
               printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
               printf("page 5\XFF\XFF\XFF");                //第三段周期界面显示
               disdata_b();
                  RUN_TIME=0;                                    //计时器归零
               printf("n7.val=%d\xff\xff\xff",RUN_TIME);    //时间运行显示
               Run_Flag=1;                         //自动运行标志,启动周期三循环
               while(Run_Flag)
               {                                  //Delay100ms
                for(t1=0;t1<Wait_C*60;t1++)          //
                {
                Delay100ms(10);                      //1ms
                printf("n7.val=%d\xff\xff\xff",t1);//
                }
                RUN_TIME+=Wait_C;
                DOWN=0;                             //下降
                FLAG_S=1;                        //1 下降 2上升 3停止 4结束     5保压  6待机    7周期一 8周期二
                printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
                for(t1=0;t1<Press_C*60;t1++)
                {
                Delay100ms(10);                      //1ms
                printf("n7.val=%d\xff\xff\xff",t1);//
                }
                RUN_TIME+=Press_C;
                DOWN=1;                             //停止
                FLAG_S=3;                        //1 下降 2上升 3停止  4结束   5保压  6待机      7周期一8周期二9周期三
                printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
                if(RUN_TIME>=RunTime_C)             //总时间大于等于设定值
                Run_Flag=0;                         //自动运行标志 结束周期三循环
                printf("n7.val=%d\xff\xff\xff",RUN_TIME);    //总时间显示
               }
//周期三结束
               DOWN=0;
               FLAG_S=5;                         //1 下降 2上升 3停止  4结束   5保压   6待机  7周期一 8周期二 9周期三
               printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
               RUN_TIME=0;                         //计时器归零
               printf("n7.val=%d\xff\xff\xff",RUN_TIME/10);    //
               Delay_100ms(Press_Time*10);         //保压        
               DOWN=1;                           //关下降
               FLAG_S=2;                         //1 下降 2上升 3停止  4结束    5保压  6待机   7周期一 8周期二 9周期三
               printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
               UP=0;                             //开上升
               Delay_100ms(Back_Time*10);         //
               UP=1;                             //关上升
               FLAG_S=4;                         //1 下降 2上升 3停止 4结束     5保压      6待机       7周期一 8周期二    9周期三
               printf("va0.val=%d\xff\xff\xff",FLAG_S);    //
               printf("page 0\XFF\XFF\XFF");                //第三段周期界面显示
               Delay100ms(10);                    //延时(10);
               disdata_a();
               }
/*------------初始化串口---------------------*/
              void InitUart()
              {
              SCON = 0x50;
              TMOD = 0x20;
              TL1 = BRT;
              TH1 = BRT;
              TR1 = 1;
              AUXR = 0x40;
              TI=1;                                 //
              ES=1;                                 //
              EA=1;                                 //
              }
/*×--------UART 中断服务程序-------------------**/
/**×**把接收到的数据存进数组a[i]**i开机初始化****/
/***×*接收到触摸屏结束码Receive_Flag标志位置1****/
/****×主程序检测到标志码=1判断指令功能***********/
              void Uart() interrupt 4 using 1
              {
               if(RI)
               {
                if(SBUF==0XFA)                     //触摸屏结束码
                {
                Receive_Flag=1;                     //接收数据标志置一
                RI=0;                             //
                data_i=0;                             //数组计数器归零
                }
                else
                {
                a[data_i]=SBUF;                        //数组下标位置的数据等于SBUF
                RI=0;                              //
                data_i++;
                }
               }
              }
/*************************************************/
              void   main( )                      /*主程序开始*/
              {
               reset_io();
               P_SW1=0x00;                       //RXD/P3.0, TXD/P3.1
               Receive_Flag=0;    
               InitUart();                        //初始化串口
               printf("0XFF,0XFF,0XFF");
               Delay100ms(10);                    //延时(10);
               disdata_a();
               Run_Flag=0;
               Delay100ms(10);                    //延时(10);
               Dataa_Flag=0;
               Datab_Flag=0;
               data_i=0;
               while(1)            //INTPUT1
               {
                if(Dataa_Flag==1)
                {
                Dataa_Flag=0;
                disdata_a();
                }
                if(Datab_Flag==1)
                {
                Datab_Flag=0;
                disdata_b();
                }

               if(Receive_Flag==1)
               {
                Receive_Flag=0;                           //重新接收
/*************周期一*********/
                 if(a[0]==0XE0)            
                 {
                  if(a[1]==0X00)                   //周期一
                  {
                  RunTime_A=a[3]*256+a[2];       //周期一压榨总时
                  Dataa_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",RunTime_A);//数据校对
                  }
                  else if(a[1]==0X01)
                  {
                  Wait_A=a[3]*256+a[2];          //周期一停顿时间
                  Dataa_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Wait_A);    //
                  }
                  else if(a[1]==0X02)       
                  {
                  Press_A=a[3]*256+a[2];         //周期一压榨时间
                  Dataa_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Press_A);    //
                  }
/*************周期二*********/
                  else if(a[1]==0X03)
                  {
                  RunTime_B=a[3]*256+a[2];       //周期二压榨总时
                  Dataa_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",RunTime_B);    //
                  }                        
                  else if(a[1]==0X04)
                  {
                  Wait_B=a[3]*256+a[2];          //周期二停顿时间
                  Dataa_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Wait_B);    //
                  }                          
                  else if(a[1]==0X05)
                  {
                  Press_B=a[3]*256+a[2];         //周期二压榨时间
                  Dataa_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Press_B);    //
                  }    
/*************周期三*********/
                  else if(a[1]==0X06)
                  {
                  RunTime_C=a[2];       //周期三压榨总时
                  Datab_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",RunTime_C);    //
                  }                        
                  else if(a[1]==0X07)
                  {
                  Wait_C=a[2];          //周期三停顿时间
                  Datab_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Wait_C);    //
                  }                          
                  else if(a[1]==0X08)
                  {
                  Press_C=a[2];         //周期三压榨时间
                  Datab_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Press_C);    //
                  }    
//系统参数
/*************系统参数*******/
                  else if(a[1]==0X09)
                  {
                  Down_Time=a[2];                //下降一时间
                  Datab_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Down_Time);    //
                  }    
                  else if(a[1]==0X0A)
                  {
                  Press_Time=a[3]*256+a[2];      //保压时间
                  Datab_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Press_Time);    //
                  }    
                  else if(a[1]==0X0B)
                  {
                  Back_Time=a[2];                //回程时间
                  Datab_Flag=1;
                  printf("n6.val=%d\xff\xff\xff",Back_Time);    //
                  }    
                 Write_EepromTime();
                }
                else  if(a[0]==0XE2)                     //主画面后初始化事件
                {
                  if(a[1]==0X20)             //
                  {
                  UP=0;                          //气缸上升
                  }
                  else  if(a[1]==0X21)               //
                  {
                  DOWN=0;                        //气缸下降
                  }
                  else  if(a[1]==0X22)             //
                  {
                  DOWN=1;                        //关闭气缸下降
                  UP=1;                          //关闭气缸上升
                  }
                  else  if(a[1]==0XA1)             //    周期一参数    周期二参数
                  {
                   LED=0;
                   Delay100ms(20);                    //延时(10);
                   Dataa_Flag=1;
                  // disdata_a();                  //
                  }
                  else  if(a[1]==0XA2)             //周期三参数     系统参数
                  {
                   LED=0;
                   Delay100ms(20);                    //延时(10);
                   Datab_Flag=1;
                   //disdata_b();                  //周期一参数
                  }
                  if(a[1]==0XE2)               //数据全部删除
                  {
                  RUN_TIME=0;   //运行总时间     累计
/*************周期一*********/              
                  RunTime_A=0; //停顿时间  第一段
                  Wait_A=0;    //停顿时间
                  Press_A=0;    //压榨时间
/*************周期二*********/
                  RunTime_B=0;  //停顿时间  第二段
                  Wait_B=0;    //停顿时间
                  Press_B=0;   //压榨时间
/*************周期二*********/
                  RunTime_C=0;  //停顿时间  第三段
                  Wait_C=0;    //停顿时间
                  Press_C=0;    //压榨时间
/*************系统参数*******/
                  Back_Time=0;  //回程时间
                  Down_Time=0;  //下降一时间
                  Press_Time=0; //保压时间
                  Write_EepromTime();
                  }
                 }
                }  
///
               RstKey();
               for(;kcounter<5;)                //按键循环5次
               {
                if(!INTPUT1)                    //按键低电平
                {
                LowVoltKey();                   //按键低电平 计数器加一状态标志加一
                }
                else if(~!INTPUT1)              //按键高电平
                {
                HighVoltKey();                    //按键计数器加一    状态标志归零
                }
               }
               if(kstatus>=3)                   /*按键状态标志大于等于3为有效值*/
               {  
               start();
               }
             }     
            }                    //L573 CODE 3919 2021 1 25

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值