橡胶硫化机的单片机控制

/*** 2020 10 16 21:21硫化机控制程序 ***/    
/****L971 CODE5035*********************/          
              #include     <REG52.H>  
              #include     <intrins.h>
              #include     <string.h>
              #include     "stdio.h"
              #include     <stdlib.h>
              #define      uint unsigned int
              #define      uchar unsigned char
              #define      IAP_ADDRESS_Time  0x0000   //时间 EEPROM首地址
              #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;
              bit          Signauto=0;              /*退出循环检测*/
              bit           Rst_Bit=0;            /**/
              sbit         OUT0=P2^6;             //前闸前进  光耦输出    
              sbit         OUT1=P2^7;              //前闸后退  光耦输出    
              sbit         OUT2=P1^0;              //后闸前进
              sbit         OUT3=P1^1;            //后闸后退
              sbit         OUT4=P1^2;              //
              sbit         M_Pump=P1^3;             //大泵溢流
              sbit         PRESS=P1^4;             //辅助压力
              sbit         Model_merge=P1^5;      //并流输出
              sbit         Model_close=P1^6;     //合模     下降
              sbit         Model_open=P1^7;         //开模     上升
              sbit         ALARM=P5^4;              //警报
              sbit         MOTOR=P5^5;             //电机
              sbit         INTPUT1=P3^2;
              sbit         INTPUT2=P3^3;
              sbit         INTPUT3=P3^4;
              sbit         INTPUT4=P3^5;
              sbit         INTPUT5=P3^6;
              sbit         INTPUT6=P3^7;
              sbit         INTPUT7=P2^0;
              sbit         INTPUT8=P2^1;
              sbit         INTPUT9=P2^2;
              sbit         INTPUT10=P2^3;
              sbit         INTPUT11=P2^4;
              sbit         INTPUT12=P2^5;
              uint         Ad_data;
              uint         DELAY_A;              //排气一段延时时间
              uint         DELAY_B;              //排气二段延时时间
              uint         DELAY_C;              //排气三段延时时间
              uint         DELAY_D;              //排气四段延时时间
              uint         DELAY_E;              //排气一段停顿延时时间
              uint         DELAY_F;              //排气二段停顿延时时间
              uint         DELAY_G;              //排气三段停顿延时时间
              uint         DELAY_H;              //排气四段停顿延时时间
              uint         DELAY_I;              //硫化开模延时时间
              uint         DELAY_J;              //合模电磁阀延时
              uint         DELAY_K;              //开模电磁阀延时
              uint         a[10];                //定义数组a  
              uchar        i;                    //串口接收计数器
              uchar        k;                    //信号输入高电平计数器
              uint         counter;              //产量计数器
              uint         RUN_TIM;
              bit           Receive_Flag;
              bit          Run_Flag;
              uint         FLAG_S;                 //触摸屏显示标志
              uchar        kcounter,kstatus;     //按键计数标志 按键状态标志
/*----关闭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 delay(uint t)
              {
              uint i,j;
              for(i=0;i<t;i++)
              for(j=0;j<1000;j++);
              }
/*-----------(1)延时子程序12MHz 加千百十个显示--------*/
               void Delay100ms(uint x)
               {
               int i,j;
                for(i=0;i<x;i++)
                {
                for(j=0;j<9200;j++);
                printf("n8.val=%d\xff\xff\xff",i);//
                }
               }
/*-----------(1)延时子程序12MHz 加千百十个显示--------*/
               void Delay_100ms(uint x)
               {
               int i,j;
                for(i=0;i<x;i++)
                {
                for(j=0;j<9200;j++);
                printf("n8.val=%d\xff\xff\xff",i);//
                }
               }               
/********************************************/             
              void resrt_io()
              {
              OUT0=1;
              OUT1=1;
              OUT2=1;
              OUT3=1;
              OUT4=1;
              M_Pump=1;           //大泵溢流
              PRESS=1;
              Model_close=1;
              Model_merge=1;
              Model_open=1;
              ALARM=1;        //警报
              MOTOR=1;       //电机
              }
/****************按键计数器状态寄存器归零*************/
               void RstKey()
               {
               kcounter=0;                       //按键计数器归零
               kstatus=0;                        //状态寄存器归零
               }
/*****************按键低电平检测函数*****************/
               void   LowVoltKey(void)           //按键计数器状态标志加一
               {
               kcounter++;                       
               kstatus++;     
               delay(5);                         //延时                  
               }
/*****************按键高电平检测函数*****************/
               void    HighVoltKey(void)         //按键计数器加一 状态标志归零
               {
               kcounter++;                       //按键计数器加一
               kstatus=0;                        //按键状态标志归零
               delay(5);                         //延时
               }
/******************************************/
              void red_eeprom(void)
              {
              uint m,n;        
              m=IapReadByte(IAP_ADDRESS);    //时间前八位
              n=IapReadByte(IAP_ADDRESS+1);  //时间后八位
              DELAY_A=m*256+n;                 //排气一段延时时间
              m=IapReadByte(IAP_ADDRESS+2);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+3);  //时间后八位
              DELAY_B=m*256+n;                 //排气二段延时时间
              m=IapReadByte(IAP_ADDRESS+4);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+5);  //时间后八位
              DELAY_C=m*256+n;                 //排气三段延时时间
              m=IapReadByte(IAP_ADDRESS+6);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+7);  //时间后八位
              DELAY_D=m*256+n;                 //排气四段延时时间
              m=IapReadByte(IAP_ADDRESS+8);  //时间前八位
              n=IapReadByte(IAP_ADDRESS+9);  //时间后八位
              DELAY_E=m*256+n;                 //排气一段停顿延时时间
              m=IapReadByte(IAP_ADDRESS+10); //时间前八位
              n=IapReadByte(IAP_ADDRESS+11); //时间后八位
              DELAY_F=m*256+n;                 //排气二段停顿延时时间
              m=IapReadByte(IAP_ADDRESS+12); //时间前八位
              n=IapReadByte(IAP_ADDRESS+13); //时间后八位
              DELAY_G=m*256+n;                 //排气三段停顿延时时间
              m=IapReadByte(IAP_ADDRESS+14); //时间前八位
              n=IapReadByte(IAP_ADDRESS+15); //时间后八位
              DELAY_H=m*256+n;                 //排气四段停顿延时时间
              m=IapReadByte(IAP_ADDRESS+16); //时间前八位
              n=IapReadByte(IAP_ADDRESS+17); //时间后八位
              DELAY_I=m*256+n;                 //硫化开模延时时间
              m=IapReadByte(IAP_ADDRESS+18); //时间前八位
              n=IapReadByte(IAP_ADDRESS+19); //时间后八位
              DELAY_J=m*256+n;                 //合模电磁阀延时
              m=IapReadByte(IAP_ADDRESS+20); //时间前八位
              n=IapReadByte(IAP_ADDRESS+21); //时间后八位
              DELAY_K=m*256+n;                 //开模电磁阀延时
              }
/******************************************/
              void Write_EepromTime()
              {
               IapEraseSector(IAP_ADDRESS);                 //扇区擦除
               IapProgramByte(IAP_ADDRESS,DELAY_A/256);     // 排气一段延时时间高位
               IapProgramByte(IAP_ADDRESS+1,DELAY_A%256);   // 排气一段延时时间低位
               IapProgramByte(IAP_ADDRESS+2,DELAY_B/256);   // 排气二段延时时间高位
               IapProgramByte(IAP_ADDRESS+3,DELAY_B%256);   // 排气二段延时时间低位
               IapProgramByte(IAP_ADDRESS+4,DELAY_C/256);   // 排气三段延时时间高位
               IapProgramByte(IAP_ADDRESS+5,DELAY_C%256);   // 排气三段延时时间低位
               IapProgramByte(IAP_ADDRESS+6,DELAY_D/256);   // 排气四段延时时间高位
               IapProgramByte(IAP_ADDRESS+7,DELAY_D%256);   // 排气四段延时时间低位
               IapProgramByte(IAP_ADDRESS+8,DELAY_E/256);   // 排气一段停顿延时时间高位
               IapProgramByte(IAP_ADDRESS+9,DELAY_E%256);   // 排气一段停顿延时时间低位
               IapProgramByte(IAP_ADDRESS+10,DELAY_F/256);  // 排气二段停顿延时时间高位
               IapProgramByte(IAP_ADDRESS+11,DELAY_F%256);  // 排气二段停顿延时时间低位
               IapProgramByte(IAP_ADDRESS+12,DELAY_G/256);  // 排气三段停顿延时时间高位
               IapProgramByte(IAP_ADDRESS+13,DELAY_G%256);  // 排气三段停顿延时时间低位
               IapProgramByte(IAP_ADDRESS+14,DELAY_H/256);  // 排气四段停顿延时时间高位
               IapProgramByte(IAP_ADDRESS+15,DELAY_H%256);  // 排气四段停顿延时时间低位
               IapProgramByte(IAP_ADDRESS+16,DELAY_I/256);  // 硫化开模延时时间高位
               IapProgramByte(IAP_ADDRESS+17,DELAY_I%256);  // 硫化开模延时时间低位
               IapProgramByte(IAP_ADDRESS+18,DELAY_J/256);  // 合模电磁阀延时高位
               IapProgramByte(IAP_ADDRESS+19,DELAY_J%256);  // 合模电磁阀延时低位
               IapProgramByte(IAP_ADDRESS+20,DELAY_K/256);  // 开模电磁阀延时高位
               IapProgramByte(IAP_ADDRESS+21,DELAY_K%256);  // 开模电磁阀延时低位
              }
/*****************************************/
              void start()
              {
              Run_Flag=1;               //运行标志置一
              M_Pump=1;                   //大泵溢流 关
              Model_merge=1;            //并流输出 关
              ALARM=0;
              Delay100ms(5);           //警报提示
              ALARM=1;    
              Delay100ms(5);           //警报提示
              ALARM=0;
              Delay100ms(5);           //警报提示
              ALARM=1;
              Delay100ms(5);           //警报提示
              ALARM=0;
              Delay100ms(5);           //警报提示
              ALARM=1;               
              FLAG_S=5;                //1模板下降2模板上升3硫化计时4待机停止5开启6停止
              printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
              MOTOR=0;                   //电机开
              PRESS=0;                  //辅助压力
              Model_close=0;           //合模  小缸下降开
              Delay100ms(DELAY_J);       //合模电磁阀延时
              printf("n10.val=%d\xff\xff\xff",DELAY_J);// 显示合模电磁阀延时设置值
              Model_close=1;           //合模 小缸下降关
              PRESS=1;                  //辅助压力关
              M_Pump=0;                   //大泵溢流 开
              Model_merge=0;            //并流输出 开
              FLAG_S=2;                //1模板下降2模板上升3硫化计时4待机停止5开启6停止
              printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
              Signauto=1;               /*电接点压力表输入信号检测标志无输入为1,永久循环*/
                while(Signauto)           //压力表检测1
                {
                RstKey();
                for(;kcounter<5;)      //输入信号检测循环5次
                {
                 if(!INTPUT2)            //电接点压力表低电平
                 {
                  LowVoltKey();
                 }
                 else if(~!INTPUT2)    //电接点压力表高电平
                 {
                  HighVoltKey();   
                 }
                }
               if(kstatus>=3)          /*按键状态标志大于等于3为有效值*/
                {     
                Signauto=0;            /*行程输入信号连续检测到五次Signauto=0退出循环*/   
                }
               }
//电接点压力表检测
               M_Pump=1;                //大泵溢流关
               Model_merge=1;            //并流输出关
               printf("n10.val=%d\xff\xff\xff",DELAY_E);// 显示一段硫化设置值
               Delay100ms(DELAY_E); //    一段硫化停顿计时
//第一段硫化停顿
               FLAG_S=1;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               PRESS=0;                   //辅助压力开
               Model_open=0;           //开模    小缸 上升
               printf("n10.val=%d\xff\xff\xff",DELAY_A);// 显示设置值
               Delay100ms(DELAY_A);    //第一段排气计时
               Model_open=1;           //开模电磁阀关
//第一段循环结束
//第二段合模开始
              Model_close=0;           //合模  小缸下降开
              Delay100ms(DELAY_J);       //合模电磁阀延时
              printf("n10.val=%d\xff\xff\xff",DELAY_J);// 显示合模电磁阀延时设置值
              Model_close=1;           //合模 小缸下降关
              PRESS=1;                  //辅助压力关
              M_Pump=0;                   //大泵溢流 开
              Model_merge=0;            //并流输出 开
              FLAG_S=2;                //1模板下降2模板上升3硫化计时4待机停止5开启6停止
              printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
              Signauto=1;               /*电接点压力表输入信号检测标志无输入为1,永久循环*/
                 while(Signauto)           //压力表检测2
                {
                RstKey();
                for(;kcounter<5;)      //输入信号检测循环5次
                {
                 if(!INTPUT2)            //电接点压力表低电平
                 {
                  LowVoltKey();
                 }
                 else if(~!INTPUT2)    //电接点压力表高电平
                 {
                  HighVoltKey();   
                 }
                }
               if(kstatus>=3)          /*按键状态标志大于等于3为有效值*/
                {     
                Signauto=0;            /*行程输入信号连续检测到五次Signauto=0退出循环*/   
                }
                }
//电接点压力表检测
               M_Pump=1;                //大泵溢流关
               Model_merge=1;            //并流输出关
               printf("n10.val=%d\xff\xff\xff",DELAY_F);//显示一段硫化设置值
               Delay100ms(DELAY_F);                     //    二段硫化停顿计时    
//第二段硫化停顿
               FLAG_S=1;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               PRESS=0;                   //辅助压力开
               Model_open=0;           //开模    小缸 上升
               printf("n10.val=%d\xff\xff\xff",DELAY_B);// 显示第二段排气计时设置值
               Delay100ms(DELAY_B);    //第二段排气计时
               Model_open=1;           //开模电磁阀关
//第二段循环结束
//第三段合模开始
               Model_close=0;          //合模  小缸下降开
               Delay100ms(DELAY_J);       //合模电磁阀延时
               printf("n10.val=%d\xff\xff\xff",DELAY_J);// 显示合模电磁阀延时设置值
               Model_close=1;           //合模 小缸下降关
               PRESS=1;                  //辅助压力关
               M_Pump=0;               //大泵溢流 开
               Model_merge=0;            //并流输出 开
               FLAG_S=2;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               Signauto=1;               /*电接点压力表输入信号检测标志无输入为1,永久循环*/
               while(Signauto)           //压力表检测3
                {
                RstKey();
                for(;kcounter<5;)      //输入信号检测循环5次
                {
                 if(!INTPUT2)            //电接点压力表低电平
                 {
                  LowVoltKey();
                 }
                 else if(~!INTPUT2)    //电接点压力表高电平
                 {
                  HighVoltKey();   
                 }
                }
               if(kstatus>=3)          /*按键状态标志大于等于3为有效值*/
                {     
                Signauto=0;            /*行程输入信号连续检测到五次Signauto=0退出循环*/   
                }
                }
//电接点压力表检测
               M_Pump=1;                //大泵溢流关
               Model_merge=1;            //并流输出关
               printf("n10.val=%d\xff\xff\xff",DELAY_G);// 显示三段硫化设置值
               Delay100ms(DELAY_G);    //三段硫化停顿计时
//第三段硫化停顿
               FLAG_S=1;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               PRESS=0;                   //辅助压力开
               Model_open=0;           //开模    小缸 上升
               printf("n10.val=%d\xff\xff\xff",DELAY_C);// 显示第三段排气计时设置值
               Delay100ms(DELAY_C);    //第三段排气计时
               Model_open=1;           //开模电磁阀关
//第三段循环结束
//第四段合模开始
               Model_close=0;          //合模  小缸下降开
               Delay100ms(DELAY_J);       //合模电磁阀延时
               printf("n10.val=%d\xff\xff\xff",DELAY_J);// 显示合模电磁阀延时设置值
               Model_close=1;           //合模 小缸下降关
               PRESS=1;                  //辅助压力关
               M_Pump=0;               //大泵溢流 开
               Model_merge=0;            //并流输出 开
               FLAG_S=2;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               Signauto=1;               /*电接点压力表输入信号检测标志无输入为1,永久循环*/
               while(Signauto)           //压力表检测4
                {
                RstKey();
                for(;kcounter<5;)      //输入信号检测循环5次
                {
                 if(!INTPUT2)            //电接点压力表低电平
                 {
                  LowVoltKey();
                 }
                 else if(~!INTPUT2)    //电接点压力表高电平
                 {
                  HighVoltKey();   
                 }
                }
               if(kstatus>=3)          /*按键状态标志大于等于3为有效值*/
                {     
                Signauto=0;            /*行程输入信号连续检测到五次Signauto=0退出循环*/   
                }
                }
//电接点压力表检测
               M_Pump=1;                //大泵溢流关
               Model_merge=1;            //并流输出关
               printf("n10.val=%d\xff\xff\xff",DELAY_H);// 显示四段硫化设置值
               Delay100ms(DELAY_H);    //四段硫化停顿计时
//第四段硫化停顿
               FLAG_S=1;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               PRESS=0;                   //辅助压力开
               Model_open=0;           //开模    小缸 上升
               printf("n10.val=%d\xff\xff\xff",DELAY_D);// 显示第四段排气计时设置值
               Delay100ms(DELAY_D);    //第四段排气计时
               Model_open=1;           //开模电磁阀关
//第五段合模开始
               Model_close=0;          //合模  小缸下降开
               Delay100ms(DELAY_J);       //合模电磁阀延时
               printf("n10.val=%d\xff\xff\xff",DELAY_J);// 显示合模电磁阀延时设置值
               Model_close=1;           //合模 小缸下降关
               PRESS=1;                  //辅助压力关
               M_Pump=0;               //大泵溢流 开
               Model_merge=0;            //并流输出 开
               FLAG_S=2;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               Signauto=1;               /*电接点压力表输入信号检测标志无输入为1,永久循环*/
               while(Signauto)           //压力表检测5
                {
                RstKey();
                for(;kcounter<5;)      //输入信号检测循环5次
                {
                 if(!INTPUT2)            //电接点压力表低电平
                 {
                  LowVoltKey();
                 }
                 else if(~!INTPUT2)    //电接点压力表高电平
                 {
                  HighVoltKey();   
                 }
                }
               if(kstatus>=3)          /*按键状态标志大于等于3为有效值*/
                {  
                Signauto=0;            /*行程输入信号连续检测到五次Signauto=0退出循环*/  
                MOTOR=1;               /*关电机*/   
                FLAG_S=6;              //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                }
               }
               M_Pump=1;               //大泵溢流关
               PRESS=1;                   //辅助压力关
               Model_merge=1;            //并流输出关
               Model_close=1;           //合模主油缸电磁阀关
               Delay100ms(10);           //时间缓冲
               FLAG_S=3;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               printf("n10.val=%d\xff\xff\xff",DELAY_I);// 显示设置值
               Delay_100ms(DELAY_I*10); //硫化延时计时
               ALARM=0;
               Delay100ms(5);           //警报提示
               ALARM=1;    
               Delay100ms(5);           //警报提示
               ALARM=0;
               Delay100ms(5);           //警报提示
               ALARM=1;
               Delay100ms(5);           //警报提示
               ALARM=0;
               Delay100ms(5);           //警报提示
               ALARM=1;    
               MOTOR=0;                 /*开电机*/
               PRESS=0;                   //辅助压力开
               Model_open=0;            //开模电磁阀开
               FLAG_S=1;                //
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               printf("n10.val=%d\xff\xff\xff",DELAY_K);// 显示设置值
               Delay100ms(DELAY_K);    //开模电磁阀延时
               Model_open=1;           //开模电磁阀关
               PRESS=1;                  //辅助压力关
               MOTOR=1;               /*关电机*/
               counter++;
               printf("n0.val=%d\xff\xff\xff",counter);    // 开模计数
               FLAG_S=4;                //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
              }
/*------------初始化串口---------------------*/
              void InitUart()
              {
              SCON=0X50;                         //8位数据,可变波特率
              AUXR|=0x01;                        //串口1选择定时器2为波特率发生器
              AUXR|=0X04;                        //定时器2时钟为Fosc,即1T
              T2L=0XE0;                          //设置定时器处置  110592》9600
              T2H=0XFE;                          //设置定时器处置  110592》9600
              AUXR|=0X10;                        //启动定时器2
              TI=1;
              ES=1;                        //
              EA=1;
              }
/*×--------UART 中断服务程序-------------------**/
/**×**把接收到的数据存进数组a[i]**i开机初始化****/
/***×*接收到触摸屏结束码Receive_Flag标志位置1****/
/****×主程序检测到标志码=1判断指令功能***********/
/****第一个字节E0存储时间 第一个字节E1存储气压***/
/****第二个字节01,02,03,04为模式1A B C D段参数***/
/****第二个字节11,12,13,14为模式2A B C D段参数***/
/****第二个字节21,22,23,24为模式3A B C D段参数***/
/****第二个字节31,32,33,34为模式4A B C D段参数***/
              void Uart() interrupt 4 using 1
              {
               if(RI)
               {
                if(SBUF==0XFA)                     //触摸屏结束码
                {
                Receive_Flag=1;                     //接收数据标志置一
                RI=0;                             //
                i=0;                             //数组计数器归零
                }
                else
                {
                a[i]=SBUF;                       //数组下标位置的数据等于SBUF
                RI=0;                             //
                i++;
                }
               }
              }
/*************************************************/
              void   main( )                     /*主程序开始*/
              {
               resrt_io();
               AUXR=0X80;                        //STC系列的1T 设置
               TMOD=0X01;
               P_SW1=0x00;                       //RXD/P3.0, TXD/P3.1
               Receive_Flag=0;    
               InitUart();                       //初始化串口
               Delay100ms(20);
               red_eeprom();                     //
               printf("0XFF,0XFF,0XFF");
               i=0;                              //数据接收计数器等于0
               Run_Flag=0;
               counter=0;                        //产量归零
               FLAG_S=4;                //1模板下降2模板上升3硫化计时4待机停止5开启6停止
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               FLAG_S=6;                //
               printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
               printf("n7.val=%d\xff\xff\xff",DELAY_I);    // 硫化时间
               printf("n0.val=%d\xff\xff\xff",counter);    // 开模计数
               while(1)                             //INTPUT1
               {
                 delay(5);                      //运行指示
                 OUT1=0;                          //
/***************模板上升检测*************/
                 RstKey();                         //按键复位
                 for(;kcounter<5;)               //按键循环5次
                 {
                  if(!INTPUT3)                      //模退 按键低电平
                  {
                  LowVoltKey();
                  }
                  else if(~!INTPUT3)             //模退 按键高电平
                  {
                  HighVoltKey();                     //高电平检测
                  }
                 }
                 if(kstatus>=3)                  /*按键状态标志大于等于3为有效值*/
                 {  
                 FLAG_S=2;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                 printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                 ALARM=0;
                 Delay100ms(5);           //警报提示
                 ALARM=1;    
                 Delay100ms(5);           //警报提示
                 ALARM=0;
                 Delay100ms(5);           //警报提示
                 ALARM=1;
                 Delay100ms(5);           //警报提示
                 ALARM=0;
                 Delay100ms(5);           //警报提示
                 ALARM=1;
                 M_Pump=1;               //大泵溢流 关
                 Model_merge=1;        //并流输出 关
                 delay(5);
                 FLAG_S=5;                      //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                 printf("va1.val=%d\xff\xff\xff",FLAG_S);    //           
                 MOTOR=0;               //开电机
                 PRESS=0;               //辅助压力
                    Model_close=0;        //合模     小缸下降开
                 Delay100ms(DELAY_J);  //合模电磁阀延时
                 M_Pump=0;               //大泵溢流 开
                 Model_merge=0;        //并流输出 开
                 Model_close=1;        //合模     小缸下降关               
                 PRESS=1;               //辅助压力 关
                 delay(50);
                 k=0;  
                 for(;k<=5;)                     /*寄存器复位*/
                  {
                  if(~!INTPUT3)                  /*检测模退按键为高电平?*/
                   {                     
                   k++;
                   delay(10);
                   }
                  else if(!INTPUT3)              /*检测合模按键为低电平?*/
                  k=0;                           /*寄存器复位*/                 
                  }   
                  delay(50);
                  MOTOR=1;                         //关电机
                  M_Pump=1;                         //大泵溢流 关
                  Model_merge=1;                  //并流输出 关
                  Model_close=1;                 //关模板上升
                  PRESS=1;                         //关辅助压力
                  FLAG_S=4;                      //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                  printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                  delay(5);
                  FLAG_S=6;                      //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                  printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                  delay(50);
                  FLAG_S=6;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                  printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                 }
//模板上升
/***************模板下降检测*************/
                 RstKey();                         //按键复位
                 for(;kcounter<5;)               //按键循环5次
                 {
                  if(!INTPUT4)                      //模退 按键低电平
                  {
                  LowVoltKey();
                  }
                  else if(~!INTPUT4)             //模退 按键高电平
                  {
                  HighVoltKey();                 //高电平检测
                  }
                 }
                 if(kstatus>=3)                  /*按键状态标志大于等于3为有效值*/
                 {   
                 FLAG_S=1;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                 printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                 ALARM=0;
                 Delay100ms(5);           //警报提示
                 ALARM=1;    
                 Delay100ms(5);           //警报提示
                 ALARM=0;
                 Delay100ms(5);           //警报提示
                 ALARM=1;
                 Delay100ms(5);           //警报提示
                 ALARM=0;
                 Delay100ms(5);           //警报提示
                 ALARM=1;    
                 M_Pump=1;               //大泵溢流 关
                 Model_merge=1;        //并流输出 关
                 delay(5);
                 FLAG_S=5;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                 printf("va1.val=%d\xff\xff\xff",FLAG_S);    //       
                 MOTOR=0;                         //开电机  
                 Model_open=0;                   //模板下降
                 PRESS=0;                         //开辅助压力
                 Delay100ms(DELAY_K);  //开模电磁阀延时
                 delay(50);
                 FLAG_S=5;                      //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                 printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                 k=0;  
                 for(;k<=5;)                     /*寄存器复位*/
                  {
                  if(~!INTPUT4)                  /*检测模退按键为高电平?*/
                   {                     
                   k++;
                   delay(10);
                   }
                  else if(!INTPUT4)              /*检测合模按键为低电平?*/
                  k=0;                           /*寄存器复位*/                 
                  }   
                  delay(50);
                  MOTOR=1;                         //关电机
                  Model_open=1;                  //关模板下降
                  PRESS=1;                         //关辅助压力
                  FLAG_S=4;                      //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                  printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                  delay(50);
                  FLAG_S=6;               //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                  printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                 }
//模板下降
/***************开机键检测*************/
                 RstKey();                         //按键复位
                 if(!INTPUT1)                     //启动信号键
                 {
                  for(;kcounter<5;)              //按键循环5次
                  {
                   if(!INTPUT1)                  //按键低电平
                   {
                   LowVoltKey();
                   }
                   else if(~!INTPUT1)            //按键高电平
                   {
                   HighVoltKey();
                   }
                  }
                  if(kstatus>=4)                 /*按键状态标志大于等于3为有效值*/
                  {                              /*循环检测 */
                   start();
                  }
                 }

               if(Receive_Flag==1)
               {
               Receive_Flag=0;
                if(a[0]==0XE0)            //EEPROM参数存储
                {
                   OUT0=0;                    //写EEPROM指示
                 if(a[1]==0X00)            
                  {                                      
                  DELAY_I=a[3]*256+a[2];//硫化开模延时时间
                  }
                  else if(a[1]==0X01)    
                  {
                  DELAY_A=a[3]*256+a[2];//排气一段延时时间
                  }
                  else if(a[1]==0X02)
                  {
                  DELAY_B=a[3]*256+a[2];//排气二段延时时间
                  }
                  else if(a[1]==0X03)
                  {
                  DELAY_C=a[3]*256+a[2];//排气三段延时时间
                  }
                  else if(a[1]==0X04)
                  {
                  DELAY_D=a[3]*256+a[2];//排气四段延时时间
                  }
                  else if(a[1]==0X05)
                  {
                  DELAY_E=a[3]*256+a[2];//排气一段停顿延时
                  }
                  else if(a[1]==0X06)
                  {
                  DELAY_F=a[3]*256+a[2];//排气二段停顿延时
                  }
                  else if(a[1]==0X07)
                  {
                  DELAY_G=a[3]*256+a[2];//排气三段停顿延时
                  }
                  else if(a[1]==0X08)
                  {
                  DELAY_H=a[3]*256+a[2];//排气四段停顿延时
                  }
                  else if(a[1]==0X09)
                  {
                  DELAY_J=a[3]*256+a[2];//合模导通延时
                  }
                  else if(a[1]==0X10)
                  {
                  DELAY_K=a[3]*256+a[2];//开模导通延时
                  }
                  Write_EepromTime();
                  delay(10);
                  OUT0=1;               //写EEPROM指示
                 }
                 else if(a[0]==0XD0)   //动作测试
                 {
                  if(a[1]==0X00)       //电机开
                  {
                  MOTOR=0;
                  }
                  else if(a[1]==0X01)  //后闸前进
                  {
                  OUT2=0;
                  }
                  else if(a[1]==0X02)  //后闸后退
                  {
                  OUT3=0;
                  }
                  else if(a[1]==0X03)  //备用
                  {
                  OUT4=0;
                  }
                  else if(a[1]==0X04)  //
                  {
                  M_Pump=0;               //大泵溢流
                  }
                  else if(a[1]==0X05)  //合模输出
                  {
                  Model_close=0;
                  }
                  else if(a[1]==0X06)  //开模输出
                  {
                  Model_open=0;                    
                  }
                  else if(a[1]==0X07)  //辅助压力
                  {
                  PRESS=0;
                  }
                  else if(a[1]==0X08)  //并流输出
                  {
                  Model_close=0;
                  }
                  else if(a[1]==0X09)  //前闸前进
                  {
                  OUT1=0;
                  }
                  else if(a[1]==0X10)  //前闸后退
                  {
                  OUT2=0;
                  }
                  else if(a[1]==0X11)  //警报输出
                  {
                  ALARM=0;
                  }
                 }
                else if(a[0]==0XD1)    //动作测试
                 {
                   if(a[1]==0X00)              //电机关
                  {
                  MOTOR=1;
                  }
                  else if(a[1]==0X01)  //后闸前进
                  {
                  OUT2=1;
                  }
                  else if(a[1]==0X02)  //后闸后退
                  {
                  OUT3=1;
                  }
                  else if(a[1]==0X03)  //备用
                  {
                  OUT4=1;
                  }
                  else if(a[1]==0X04)  //
                  {
                  M_Pump=1;               //大泵溢流
                  }
                  else if(a[1]==0X05)  //合模输出
                  {
                  Model_close=1;
                  }
                  else if(a[1]==0X06)  //开模输出
                  {
                  Model_open=1;                    
                  }
                  else if(a[1]==0X07)  //辅助压力
                  {
                  PRESS=1;
                  }
                  else if(a[1]==0X08)  //并流输出
                  {
                  Model_close=1;
                  }
                  else if(a[1]==0X09)  //前闸前进
                  {
                  OUT1=1;
                  }
                  else if(a[1]==0X10)  //前闸后退
                  {
                  OUT2=1;
                  }
                  else if(a[1]==0X11)  //警报输出
                  {
                  ALARM=1;
                  }
                 }
                else if(a[0]==0XB0)       //  B0 00发送主画面 内容
                 {
                 if(a[1]==0X00)          //
                  {
                   red_eeprom();
                   printf("n7.val=%d\xff\xff\xff",DELAY_I);    // 硫化时间
                   printf("n0.val=%d\xff\xff\xff",counter);    // 开模计数
                  }
                 else if(a[1]==0X01)       //发送参数设置页面内容
                  {
                   red_eeprom();
                   printf("n0.val=%d\xff\xff\xff",DELAY_A);    //排气一段延时时间
                   printf("n1.val=%d\xff\xff\xff",DELAY_B);    //排气二段延时时间
                   printf("n2.val=%d\xff\xff\xff",DELAY_C);    //排气三段延时时间
                   printf("n3.val=%d\xff\xff\xff",DELAY_D);    //排气四段延时时间
                   printf("n4.val=%d\xff\xff\xff",DELAY_E);    //排气一段停顿延时时间
                   printf("n5.val=%d\xff\xff\xff",DELAY_F);    //排气二段停顿延时时间
                   printf("n6.val=%d\xff\xff\xff",DELAY_G);    //排气三段停顿延时时间
                   printf("n7.val=%d\xff\xff\xff",DELAY_H);    //排气四段停顿延时时间
                   printf("n8.val=%d\xff\xff\xff",DELAY_J);    //合模电磁阀延时
                   printf("n9.val=%d\xff\xff\xff",DELAY_K);    //开模电磁阀延时
                  }
                 }
                 else if(a[0]==0XC0)             //手动操作
                 {
                 if(a[1]==0X10)                     //合模
                  {
                   FLAG_S=2;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                   printf("va1.val=%d\xff\xff\xff",FLAG_S);    //    
                   delay(5);
                   FLAG_S=5;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                   printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                   Model_close=0;                 //合模 小油缸下开
                   PRESS=0;                         //辅助压力开
                   Delay100ms(DELAY_J);             //合模电磁阀延时
                   PRESS=1;                         //辅助压力关
                   Model_close=1;                 //合模    小油缸下关
                   M_Pump=0;                     //大泵溢流开
                   Model_merge=0;                  //并流输出开
                  }
                  else if(a[1]==0X11)             //开模
                  {
                   FLAG_S=1;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                   printf("va1.val=%d\xff\xff\xff",FLAG_S);    //    
                   delay(5);
                   FLAG_S=5;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                   printf("va1.val=%d\xff\xff\xff",FLAG_S);    //
                   M_Pump=1;                     //大泵溢流关
                   Model_merge=1;                  //并流输出关
                   PRESS=0;                         //辅助压力开
                   Model_open=0;                 //开模 小油缸上开
                  }
                  else if(a[1]==0X12)             //
                  {
                   ALARM=0;
                   Delay100ms(5);                 //警报提示
                   ALARM=1;
                   ALARM=0;
                   Delay100ms(5);                 //警报提示
                   ALARM=1;
                   MOTOR=0;                         //电机开
                  }
                  }
                  else if(a[0]==0XC1)
                  {
                   if(a[1]==0X10)           
                   {
                   FLAG_S=4;                     //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                   printf("va1.val=%d\xff\xff\xff",FLAG_S);    //    
                   PRESS=1;                         //辅助压力关
                   Model_close=1;                 //合模关
                   M_Pump=1;                     //大泵溢流关
                   Model_merge=1;                  //并流输出关
                   }
                   else if(a[1]==0X11)             
                   {
                   FLAG_S=4;                       //1模板下降2模板上升3硫化计时4待机停止5开启6停止
                   printf("va1.val=%d\xff\xff\xff",FLAG_S);    //    
                   PRESS=1;                         //辅助压力关
                   Model_open=1;                 //开模关
                   M_Pump=1;                     //大泵溢流关
                   Model_merge=1;                  //并流输出关
                   }
                   else if(a[1]==0X12)             //
                   {
                   MOTOR=1;                         //电机关
                   }
                 }
               }  
               delay(5);
               OUT1=1;                    //
              }     
            }                    //L971 CODE5035
            

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

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

相关文章

测试的分类(3)

目录 按照测试阶段测试 系统测试 冒烟测试和回归测试的区别 验收测试 单元测试, 集成测试, 系统测试, 回归测试之间的关系 是否按手工进行测试 手工测试 自动化测试 自动化测试和手工测试的优缺点 自动化测试优点 自动化测试缺点 手工测试优点 手工测试缺点 按照…

Python基础:【习题系列】列表、元组、字典和集合

在Python中,用于创建空列表的语法是什么?( A ) A.[] B.() C.{} D.None 答案:A 难易程度:易 答案解析:在Python中,空列表可以通过空方括号[]来创建。 知识点:列表;Python数据结构 在Python中,以下哪个方法用于向列表添加元素?( B ) A.insert B.append C.ad…

【SpringCloud】LoadBalance负载均衡服务调用快速入门

【SpringCloud】LoadBalance负载均衡服务调用快速入门 文章目录 【SpringCloud】LoadBalance负载均衡服务调用快速入门1. 概述2. 引入依赖3. 配置、验证3.1 配置3.2 验证 1. 概述 官网地址&#xff1a;点击跳转 Spring Cloud LoadBalancer 是由 SpringCloud 官方提供的一个开…

MemFire案例-政务应急物联网实时监测预警项目

客户背景 党的十八大以来&#xff0c;中央多次就应急管理工作做出重要指示&#xff1a;要求坚持以防为主、防抗救相结合&#xff0c;全面提升综合防灾能力&#xff1b;坚持生命至上、安全第一&#xff0c;完善安全生产责任制&#xff0c;坚决遏制重特大安全事故。 面对新形势…

部署zookeeper+kafka

目录 一、二进制安装 1.安装jdk &#xff08;1&#xff09;yum 安装 &#xff08;2&#xff09;二进制安装 2.部署 zookeeper 3.部署kafka 01.安装 02.常用命令 03.示例 创建topic 创建 Kafka 生产者 创建Kafka消费者 运行示例 二、 docker 安装 1.搭建zookeepe…

linux环境下的MySQL UDF提权

linux环境下的MySQL UDF提权 ##1. 背景介绍 ###UDF UDF&#xff08;user defined function&#xff09;用户自定义函数,是MySQL的一个扩展接口&#xff0c;称为用户自定义函数,是用来拓展MySQL的技术手段&#xff0c;用户通过自定义函数来实现在MySQL中无法实现的功能。文件…

LINUX基础培训三十之理论基础知识自测题(附答案)

一、单选题(50题) 1. Linux是一套类( )操作系统。 A、 POSIX B、 BSD C、 WINDOWS D、 UNIX 2. Linux系统中,所提供的安装软件包,默认格式为( )。 A、 .tar B、.tar.gz C、.rpm D、 .zip 3. Linux系统中,以下哪个是管道符( )。 A、| B、> …

Node.js -- 模块化

文章目录 1. 模块化介绍2. 模块化初体验3. 模块暴露数据4. 导入文件(夹)模块5. 导入模块的基本流程6. CommonJS 规范 这里是引用 1. 模块化介绍 之前我们所编写的文件都是单个文件&#xff0c;这就会出现一些问题&#xff1a; 变量不能重复命名&#xff1b;代码复用性差&…

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024)

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024) 会议简介 我们诚挚邀请您参加2024年大数据应用、智能控制和软件工程国际会议&#xff08;BDAICSE2024&#xff09;。这次会议将在美丽的长沙市举行。 本次大会旨在汇聚全球大数据应用、智能控制、软件工程等领…

【华为OD机试】生成哈夫曼树【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。 请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。 …

云LIS系统概述JavaScript+前端框架JQuery+EasyUI+Bootstrap医院云HIS系统源码 开箱即用

云LIS系统概述JavaScript前端框架JQueryEasyUIBootstrap医院云HIS系统源码 开箱即用 云LIS&#xff08;云实验室信息管理系统&#xff09;是一种结合了计算机网络化信息系统的技术&#xff0c;它无缝嵌入到云HIS&#xff08;医院信息系统&#xff09;中&#xff0c;用于连…

[iOS]CocoaPods安装和使用

1.了解brew、rvm、ruby、gem、cocaspods之间的关系 在 macOS 环境中&#xff0c;Brew、RVM、Ruby、Gem 和 CocoaPods 之间存在以下关系&#xff1a; Homebrew (Brew)&#xff1a;Homebrew 是 macOS 上的包管理器&#xff0c;用于安装和管理各种开源软件包。它使您能够轻松地从…

信息系统项目管理师0069:数据运维(5信息系统工程—5.2数据工程—5.2.3数据运维)

点击查看专栏目录 文章目录 5.2.3数据运维1.数据存储2.数据备份3.数据容灾4.数据质量评价与控制记忆要点总结5.2.3数据运维 数据开发利用的前提是通过合适的方式将数据保存到存储介质上,并能保证有效的访问,还要通过数据备份和容灾手段,保证数据的高可用性。数据质量管理是在…

Pytorch实用教程:Pytorch的nn.LSTM中参数的含义

文章目录 基本组成关键特性使用`nn.LSTM`的基本步骤注意事项Pytorch的nn.LSTM中参数的含义示例课外分享PyTorch的nn.LSTM模块是一个用于构建长短期记忆(LSTM)网络的类,它是一种特殊类型的循环神经网络(RNN),能够学习序列数据中的长期依赖关系。 LSTM网络被广泛用于时间序…

频裂变加群推广强制分享引流源码

视频裂变加群推广强制分享引流源码&#xff0c;用户达到观看次数后需要分享给好友或者群,好友必须点击推广链接后才会增加观看次数。 引导用户转发QV分享,达到快速裂变引流的效果&#xff01; 视频裂变推广程序&#xff0c;强制分享链接&#xff0c;引导用户转发&#xff0c;…

场内股票期权和场外期权(附场内期权交易攻略)

期权是交易双方关于未来买卖权利达成的合约。 就股票期权来说&#xff0c;期权的买方(权利方)通过向卖方(义务方)支付一定的费用(即期权费或权利金)&#xff0c;获得一种权利&#xff0c;即有权在约定的时间以约定的价格向期权卖方买入或卖出约定数量的标的股票或ETF。 买方(…

【SQL】SQL语句执行顺序

今天写一个相当基础的知识点&#xff0c;主要是之前对这块比较模糊&#xff0c;也没有细究&#xff0c;这次一并记录一下。 用一个例子说明SQL语句在逻辑执行计划时候的执行顺序&#xff0c;实际物理计划可能由于不同数据库优化策略的不同而略有差异。 例如&#xff0c;一个典型…

PyQt介绍——动画使用详解之QPropertyAnimation

一、继承关系 PyQt5的动画框架是QAbstractAnimation&#xff0c;它是一个抽象类&#xff0c;不能直接使用&#xff0c;需要使用它的子类。它的类结构如下&#xff1a; QAbstractAnimation&#xff1a;抽象动画&#xff0c;是所有动画的基类&#xff0c;不能直接使用。 QVariant…

Wi-Fi HaLow:重塑物联网的未来

Wi-Fi HaLow&#xff1a;引领物联网连接的革命 数字时代的蓬勃发展正在引发一场深刻的变革&#xff0c;物联网已经融入到我们的日常生活和工作中&#xff0c;成为不可或缺的一部分。随着新一代Wi-Fi技术一Wi-Fi HaLow的崭露头角&#xff0c;有望在2024年及未来&#xff0c;重新…

Mybatis 动态Sql标签使用总结

一、前言 常用的动态sql标签包括 if、choose(when、otherwise)、trim(where、set)、foreach。 二、标签介绍 2.1、if 标签 1、动态拼接查询条件 select DISTINCT ksid as id,ksdm as cd , ksmc as na ,id_org ,1 as fg_active,kspydm as py FROMV_CIS_RO_USERWHERE 11<…