找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2548|回复: 0
打印 上一主题 下一主题
收起左侧

STC12C5630AD做温控程序

[复制链接]
跳转到指定楼层
楼主
ID:115158 发表于 2017-7-10 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include <STC12C5630AD.H>
#include <intrins.h> //51基本运算(包括_nop_空函数)
#include<math.h> //绝对值
typedef unsigned char u8;
typedef unsigned int u16;

/* Declare SFR associated with the IAP */
sfr IAP_DATA = 0xE2;  //Flash data register
sfr IAP_ADDRH = 0xE3;  //Flash address HIGH
sfr IAP_ADDRL = 0xE4;  //Flash address LOW
sfr IAP_CMD  = 0xE5;  //Flash command register
sfr IAP_TRIG = 0xE6;  //Flash command trigger
sfr IAP_CONTR = 0xE7;  //Flash control register

/*Define ISP/IAP/EEPROM command*/
#define CMD_IDLE 0  //Stand-By
#define CMD_READ 1  //Byte-Read
#define CMD_PROGRAM 2  //Byte-Program
#define CMD_ERASE 3  //Sector-Erase

/*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
//#define ENABLE_IAP   0x80 //if SYSCLK<30MHz
//#define ENABLE_IAP   0x81 //if SYSCLK<24MHz
//#define ENABLE_IAP   0x82 //if SYSCLK<20MHz
#define  ENABLE_IAP   0x83 //if SYSCLK<12MHz
//#define ENABLE_IAP 0x84 //if SYSCLK<6MHz
//#define ENABLE_IAP 0x85 //if SYSCLK<3MHz
//#define ENABLE_IAP 0x86 //if SYSCLK<2MHz
//#define ENABLE_IAP 0x87 //if SYSCLK<1MHz

//Start address for STC12C5620AD series EEPROM
#define IAP_ADDRESS 0x0400

#define FOSC 11059200L
#define BAUD 9600


#define    ADC_POWER 0x80                //定义ADC电源常量
#define    ADC_FLAG  0x10                //定义ADC转换结束标志位
#define    ADC_START 0x08                //定义ADC转换开始控制位
#define    ADC_SPEEDLL 0x00            //1080个时钟转换一次
#define ADC_SPEEDL    0x20            //810个时钟转换一次
#define ADC_SPEEDH     0x40            //540个时钟转换一次
#define ADC_SPEEDHH     0x60        //270个时钟转换一次
#define ENABLE_ISP 0x82
#define Error 1
#define Ok 0
#define WaitTime 0x01

/*sfr ISP_DATA  = 0xE2;
sfr ISP_ADDRH = 0xE3;
sfr ISP_ADDRL = 0xE4;
sfr ISP_CMD   = 0xE5;
sfr ISP_TRIG  = 0xE6;
sfr ISP_CONTR = 0xE7;
*/
u16 shu6,shu7;
u8 i1,a;
u16 i2,i3,i4;               
u8 ID0,D3,D4,D5;
u8 m1,m2,n,n1,n2,shu2,shu8;
u16 temp1,LPFdata,D6,D7;
char shu1,shu3,shu4,shu5;

sbit K0=P3^5;  //选择设置 独立的
sbit K1=P1^4;  //移位调整 &设置数码管共9脚
sbit K2=P1^2; //加键 &设置数码管共6脚



sbit Y1=P1^1; //继电器输出1


sbit COM1=P3^2;
sbit COM2=P1^6;
sbit COM3=P1^7;
sbit COM4=P1^3;

sbit COM6=P3^3;
sbit COM7=P3^7;
sbit COM8=P1^0;
sbit COM9=P3^4;

sbit  CLK=P3^0;
sbit  DAT=P3^1;
u8 up,down,up0,down0,up1,down1,up2,down2;

u8 code  table[]={0xbb,0x82,0xad,0x8f,
0x96,0x1f,0x3f,0x8a,0xbf,0x9f,0x00,0x39,0xb6,0xbc,0x04
};        //共阴数码管0-F显示不带小数码 ,因为是IC直接驱动的
        //0x39,0xb6,0xbc,0x04为C,H,P,—

u8 code  table1[]={ 0Xfb,0xc2,0Xed,0xCF,0xd6,0x5f,0x7f, 0xca,
0xFF,0xdf
};        //带小数点显示

u16 code Dad[161]={
995,993,990,988,986,984,981,978,975,972,969,966,963,959,955,
951,947,943,938,933,928,923,918,912,907,901,894,888,881,874,
867,860,852,845,837,828,820,811,802,793,784,775,765,755,745,
735,724,714,703,692,682,671,662,648,637,626,614,603,592,580,
569,557,546,535,523,512,501,490,479,470,457,446,436,425,415,
405,395,385,375,365,356,347,338,329,320,311,303,295,287,278,
271,264,256,249,242,236,229,222,216,210,204,198,193,187,182,
177,172,167,162,157,153,148,144,140,136,132,128,125,121,118,
114,111,108,105,102,99,96,94,91,88,86,84,81,79,77,75,73,71,69,
67,65,63,62,60,58,57,55,54,52,51,50,48,47,46,45,44,43,42,40,39,
38}; //10位AD转换的数值表 float

float code tem[161]={ 40,39,38,37,36,35,34,33,32,31,
        30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,
        14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,1,2,3,4,
        5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,
72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,
95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120} ;  //测试点的温度

/**********************************************
函数名:毫秒级CPU延时函数
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
/******************************************************************/
void delay(u8 t)
{
u16 i;            
for(;t>0;t--)      
  for(i=110;i>0;i--);      
}

/*-----Disable ISP/IAP/EEPROM function
Make MCU in a safe state
----------------------------*/
void IapIdle()
{
IAP_CONTR = 0;  //Close IAP function
IAP_CMD = 0;  //Clear command to standby
IAP_TRIG = 0;  //Clear trigger register
IAP_ADDRH = 0x80; //Data ptr point to non-EEPROM area
IAP_ADDRL = 0;  //Clear IAP address to prevent misuse
}
/*-----Read one u8 from ISP/IAP/EEPROM area
Input: addr (ISP/IAP/EEPROM address)
Output: Flash data
----------------------*/
u8 byte_read(u16 addr)
{
u8 dat;    //Data buffer
IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time
IAP_CMD = CMD_READ;  //Set ISP/IAP/EEPROM READ command
IAP_ADDRL = addr;  //Set ISP/IAP/EEPROM address low
IAP_ADDRH = addr >> 8; //Set ISP/IAP/EEPROM address high
IAP_TRIG = 0x46;  //Send trigger command1 (0x46)
IAP_TRIG = 0xb9;  //Send trigger command2 (0xb9)
_nop_();    //MCU will hold here until ISP/IAP/EEPROM
//operation complete
dat = IAP_DATA;   //Read ISP/IAP/EEPROM data
IapIdle();    //Close ISP/IAP/EEPROM function
return dat;    //Return Flash data
}
/*-----Program one u8 to ISP/IAP/EEPROM area
Input: addr (ISP/IAP/EEPROM address)
   dat (ISP/IAP/EEPROM data)
Output:
-----------------------------*/
void byte_write(u16 addr, u8 dat)
{
IAP_CONTR = ENABLE_IAP;
IAP_CMD = CMD_PROGRAM;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_DATA = dat;   //Write ISP/IAP/EEPROM data
IAP_TRIG = 0x46;
IAP_TRIG = 0xb9;
_nop_();
IapIdle();
}
/*-----Erase one sector area
Input: addr (ISP/IAP/EEPROM address)
Output:
-----------------------------*/
void SectorErase(u16 addr)
{
IAP_CONTR = ENABLE_IAP;
IAP_CMD = CMD_ERASE;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x46;
IAP_TRIG = 0xb9;
_nop_();
IapIdle();
}


void init()
{
P1M0=0x20;    //0010 0000设置P15口模式,用于A/D采集
P1M1=0x20;    //1000 0000设置P17口模式,用于A/D采集
ADC_CONTR=0xe0; //1110 0000开启A/D电源,设置最高转换速度
delay(8);            //延时使电源稳定
}

u16 readad(u8 m)           //m为通道值
{
u8 AD_finished=0;
u16 result;
ADC_DATA=0;
ADC_LOW2=0;
ADC_CONTR&=0xf8;
ADC_CONTR|=m;            //选择通道
ADC_CONTR|=0x08;           //启动AD转换
delay(1);
while(AD_finished==0)          //等待AD转换结束
{
  AD_finished=(ADC_CONTR&0x10);
}
result=ADC_DATA*4+ADC_LOW2;
ADC_CONTR&=0xf7;
return(result);
}

/****************AD数据滤波动函数*****************/
float Ad_d(u8 channel)// 采集电压的平均值20次
{                 
         u8 i;          
         for(i=5;i>0;i--)//数据采集存储
         {               
         LPFdata=readad( channel) ;               
         }
          return (LPFdata);
}

           /**********AD转换值转温度值函数**************/
void Data_temperature()
{            float b;
            u8 i;
                Ad_d(5);
        for(i=0;i<=161;i++)
        {
                if((LPFdata>=Dad[i])&(LPFdata<Dad[i-1]))
                {
b=tem[i]+(LPFdata-Dad[i])*((tem[i]-tem[i+1])/(Dad[i]-Dad[i+1]));
                    break;                                                                                                                                                                                                                                                                         
                }                       
        }
         temp1=b*10+shu5;//强制转化为整形
}

  /***************************************/
   void sendcode(u8 b)//传送负显示PX字节函数
{
u8 num,c;          
for(i1=0;i1<=2;i1++)
   {       
     num=table[13];  //十位 ,小数点位
     for(c=0;c<8;c++)   //依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM4=1; COM3=1;        COM2=0;COM1=1;
   delay(3);
    COM4=1; COM3=1;        COM2=1;COM1=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
     COM4=1; COM3=1;        COM2=1;COM1=0;
   delay(3);
    COM4=1; COM3=1;        COM2=1;COM1=1;
  }
}

/***************************************/
   void sendcode1( u16 b)//传送温度显示字节函数
{
u8 num,c;
for(i1=0;i1<=2;i1++)
        {
    num=table[b/1000];//千位
    COM4=0; COM3=1;        COM2=1;COM1=1;
   for(c=0;c<8;c++)//依次传送8位
    {
    CLK=0;
    DAT=num&0x01;
    CLK=1;
    num>>=1;  
    }
    COM4=0; COM3=1;        COM2=1;COM1=1;
    delay(5);
    COM4=1; COM3=1;        COM2=1;COM1=1;
  }
for(i1=0;i1<=2;i1++)
        {
    num=table[b%1000/100];//百位
  for(c=0;c<8;c++)//依次传送8位
      { CLK=0;
           DAT=num&0x01;
        CLK=1;
        num>>=1;  
       }
     COM4=1; COM3=0;        COM2=1;COM1=1;
     delay(5);
     COM4=1; COM3=1;        COM2=1;COM1=1;
}          
for(i1=0;i1<=2;i1++)
        {       
       num=table1[b%100/10];//十位
  for(c=0;c<8;c++)//依次传送8位
           {CLK=0;
            DAT=num&0x01;
            CLK=1;
           num>>=1;   
           }
     COM4=1; COM3=1;        COM2=0;COM1=1;
     delay(5);
     COM4=1; COM3=1;COM2=1;COM1=1;
   }
for(i1=0;i1<=2;i1++)
        {
     num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
         {  CLK=0;
           DAT=num&0x01;
              CLK=1;
              num>>=1;
         }
        COM4=1; COM3=1;        COM2=1;COM1=0;
         delay(5);
         COM4=1; COM3=1;        COM2=1;COM1=1;
    }
}

/*************显示设置码**************/
void sendcode2(u8 b)//传送设置编号1显示字节函数
{
u8 num,c;          
for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
     DAT=num&0x01;
     CLK=1;
     num>>=1;
    }
  }
COM9=1; COM8=1;        COM7=1;COM6=0;
delay(3);
COM9=1; COM8=1;        COM7=1;COM6=1;
}
  /***************************************/
   void sendcode3(u8 b)//传送负显示3字节函数
{
u8 num,c;
for(i1=0;i1<=2;i1++)
  {
    num=table[b/100];//百位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
     DAT=num&0x01;
     CLK=1;
     num>>=1;  
     }
    COM9=1; COM8=0;COM7=1;COM6=1;
        delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;
  }
          
for(i1=0;i1<=2;i1++)
   {       
     num=table1[b%100/10];  //十位 ,小数点位
     for(c=0;c<8;c++)   //依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM9=1; COM8=1;        COM7=0;COM6=1;
           delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=1;COM6=0;
            delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;
  }
}
/***************************************/
   void sendcode4(u16 b)//传送负号显示字节函数0~-40显示
{
u8 num,c;
for(i1=0;i1<=2;i1++)
  {
    num=table[14];//千位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
     DAT=num&0x01;
     CLK=1;
     num>>=1;  
     }
    COM9=1; COM8=0;COM7=1;COM6=1;
     delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
  }

for(i1=0;i1<=2;i1++)
   {       
     num=table[b%100/10];//十位
     for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM9=1; COM8=1;        COM7=0;COM6=1;
      delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=1;COM6=0;
     delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
  }
}

/*********************************/
  void sendcode5(u16 d)//传送0~120度显示节函数
{
      u8 num,c;
for(i1=0;i1<=2;i1++)
        {
    num=table[d%1000/100];//百位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
      DAT=num&0x01;
      CLK=1;
     num>>=1;  
    }
    COM9=1; COM8=0;COM7=1;COM6=1;
     delay(5);
    COM9=1; COM8=1;COM7=1;COM6=1;
    }          
for(i1=0;i1<=2;i1++)
{       
   num=table[d%100/10];//十位
   for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
     DAT=num&0x01;
    CLK=1;
     num>>=1;   
     }
   COM9=1; COM8=1;COM7=0;COM6=1;
   delay(5);
   COM9=1; COM8=1;COM7=1;COM6=1;

}
for(i1=0;i1<=2;i1++)
        {
     num=table[d%10];//个位
     for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
      num>>=1;
      }
    COM9=1; COM8=1;        COM7=1;COM6=0;
    delay(5);
    COM9=1; COM8=1;COM7=1;COM6=1;
    }
}

  /***************************************/
   void sendcode6(u8 b)//传送负号显示字节函数-5显示
{
u8 num,c;          
for(i1=0;i1<=2;i1++)
   {       
     num=table[14];//十位
     for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM9=1; COM8=0;        COM7=1;COM6=1;
     delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table1[b%100/10];//位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=0;COM6=1;
     delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
  }
for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=1;COM6=0;
    delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
  }
}

  /***************************************/
   void sendcode7(u8 b)//传送负号显示字节函数5显示
{
u8 num,c;          
for(i1=0;i1<=2;i1++)
  {
    num=table1[b%100/10];//位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=0;COM6=1;
     delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
  }
for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=1;COM6=0;
    delay(3);
    COM9=1; COM8=1;COM7=1;COM6=1;
  }
}

  /***************************************/
   void sendcode8(u16 b)//传送负显示3字节函数
{
u8 num,c;
for(i1=0;i1<=2;i1++)
  {
    num=table[b/100];//百位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
     DAT=num&0x01;
     CLK=1;
     num>>=1;  
     }
    COM9=1; COM8=0;COM7=1;COM6=1;
        delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;
  }
          
for(i1=0;i1<=2;i1++)
   {       
     num=table1[b%100/10];  //十位 ,小数点位
     for(c=0;c<8;c++)   //依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM9=1; COM8=1;        COM7=0;COM6=1;
           delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=1;COM6=0;
            delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;
  }
}
  /***************************************/
   void sendcode9(u8 b)//传送负显示2字节函数
{
u8 num,c;          
for(i1=0;i1<=5;i1++)
   {       
     num=table[b%100/10];  //十位 ,小数点位
     for(c=0;c<8;c++)   //依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM9=1; COM8=1;        COM7=0;COM6=1;
           delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;
   }

for(i1=0;i1<=5;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM9=1; COM8=1;        COM7=1;COM6=0;
            delay(3);
   COM9=1; COM8=1;COM7=1;COM6=1;  
  }
}
         /***************************************/
   void sendcode10(u16 b)//传送断路,短路,超量程显示字节函数
{
u8 num,c;  
for(i1=0;i1<=2;i1++)
        {
    num=table[14];//千位
    COM4=0; COM3=1;        COM2=1;COM1=1;
   for(c=0;c<8;c++)//依次传送8位
    {
    CLK=0;
    DAT=num&0x01;
    CLK=1;
    num>>=1;  
    }
    COM4=0; COM3=1;        COM2=1;COM1=1;
    delay(5);
    COM4=1; COM3=1;        COM2=1;COM1=1;
  }
for(i1=0;i1<=2;i1++)
        {
    num=table[14];//百位
  for(c=0;c<8;c++)//依次传送8位
      { CLK=0;
           DAT=num&0x01;
        CLK=1;
        num>>=1;  
       }
     COM4=1; COM3=0;        COM2=1;COM1=1;
     delay(5);
     COM4=1; COM3=1;        COM2=1;COM1=1;
}          
for(i1=0;i1<=2;i1++)
        {       
       num=table[14];//十位
  for(c=0;c<8;c++)//依次传送8位
           {CLK=0;
            DAT=num&0x01;
            CLK=1;
           num>>=1;   
           }
     COM4=1; COM3=1;        COM2=0;COM1=1;
     delay(5);
     COM4=1; COM3=1;COM2=1;COM1=1;
   }
for(i1=0;i1<=2;i1++)
        {
     num=table[14];//个位
   for(c=0;c<8;c++)//依次传送8位
         {  CLK=0;
           DAT=num&0x01;
              CLK=1;
              num>>=1;
         }
        COM4=1; COM3=1;        COM2=1;COM1=0;
         delay(5);
         COM4=1; COM3=1;        COM2=1;COM1=1;
    }
}

/***************************************/
  void sendcode11(u16 b)//传送PV区负号显示字节函数0~-40显示
{
u8 num,c;
for(i1=0;i1<=2;i1++)
  {
    num=table[14];//百位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
     DAT=num&0x01;
     CLK=1;
     num>>=1;  
     }
    COM4=0; COM3=1;COM2=1;COM1=1;
     delay(5);
    COM4=1; COM3=1;COM2=1;COM1=1;
  }
for(i1=0;i1<=2;i1++)
  {
    num=table[b/100];//百位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
     DAT=num&0x01;
     CLK=1;
     num>>=1;  
     }
    COM4=1; COM3=0;COM2=1;COM1=1;
     delay(5);
    COM4=1; COM3=1;COM2=1;COM1=1;
  }          
for(i1=0;i1<=2;i1++)
   {       
     num=table1[b%100/10];//十位
     for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM4=1; COM3=1;COM2=0;COM1=1;
     delay(5);
    COM4=1; COM3=1;COM2=1;COM1=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM4=1; COM3=1;COM2=1;COM1=0;
     delay(5);
    COM4=1; COM3=1;COM2=1;COM1=1;
  }
}
/***************************************/
   void sendcode12(u16 b)//传送PV区负号显示字节函数0~9.9显示
{
u8 num,c;          
for(i1=0;i1<=4;i1++)
   {       
     num=table1[b%100/10];//十位
     for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM4=1; COM3=1;COM2=0;COM1=1;
     delay(5);
    COM4=1; COM3=1;COM2=1;COM1=1;
   }

for(i1=0;i1<=4;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM4=1; COM3=1;COM2=1;COM1=0;
     delay(5);
    COM4=1; COM3=1;COM2=1;COM1=1;
  }
}

/***************************************/
   void sendcode13(u16 b)//传送PV区负号显示字节函数10.0~99.9显示
{
u8 num,c;
for(i1=0;i1<=2;i1++)
   {       
     num=table[b/100];//位
     for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM4=1; COM3=0;COM2=1;COM1=1;
     delay(3);
    COM4=1; COM3=1;COM2=1;COM1=1;
   }
          
for(i1=0;i1<=2;i1++)
   {       
     num=table1[b%100/10];//十位
     for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
    COM4=1; COM3=1;COM2=0;COM1=1;
     delay(3);
    COM4=1; COM3=1;COM2=1;COM1=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
    COM4=1; COM3=1;COM2=1;COM1=0;
     delay(3);
    COM4=1; COM3=1;COM2=1;COM1=1;
  }
}
  /***************************************/
   void sendcode14(u8 b)//传送负号显示字节函数-5.0显示
{
u8 num,c;          
for(i1=0;i1<=2;i1++)
   {       
     num=table[14];//十位
     for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;   
     }
  COM4=1; COM3=0;COM2=1;COM1=1;
     delay(3);
    COM4=1; COM3=1;COM2=1;COM1=1;
   }

for(i1=0;i1<=2;i1++)
  {
    num=table1[b%100/10];//位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
  COM4=1; COM3=1;COM2=0;COM1=1;
     delay(3);
    COM4=1; COM3=1;COM2=1;COM1=1;
  }
for(i1=0;i1<=2;i1++)
  {
    num=table[b%10];//个位
   for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
       num>>=1;
     }
  COM4=1; COM3=1;COM2=1;COM1=0;
     delay(3);
    COM4=1; COM3=1;COM2=1;COM1=1;
  }
}

/*********************************/
  void sendcode15(u16 b)  //报错
{
      u8 num,c;
for(i1=0;i1<=2;i1++)
        {
    num=table[13];//位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
      DAT=num&0x01;
      CLK=1;
     num>>=1;  
    }
    COM9=0; COM8=1;COM7=1;COM6=1;
     delay(5);
    COM9=1; COM8=1;COM7=1;COM6=1;
    }

for(i1=0;i1<=2;i1++)
        {
    num=table[13];//百位
    for(c=0;c<8;c++)//依次传送8位
    { CLK=0;
      DAT=num&0x01;
      CLK=1;
     num>>=1;  
    }
    COM9=1; COM8=0;COM7=1;COM6=1;
     delay(5);
    COM9=1; COM8=1;COM7=1;COM6=1;
    }          
for(i1=0;i1<=2;i1++)
{       
   num=table[13];//十位
   for(c=0;c<8;c++)//依次传送8位
     {        CLK=0;
     DAT=num&0x01;
    CLK=1;
     num>>=1;   
     }
   COM9=1; COM8=1;COM7=0;COM6=1;
   delay(5);
   COM9=1; COM8=1;COM7=1;COM6=1;

}
for(i1=0;i1<=2;i1++)
        {
     num=table[13];//个位
     for(c=0;c<8;c++)//依次传送8位
     {  CLK=0;
       DAT=num&0x01;
       CLK=1;
      num>>=1;
      }
    COM9=1; COM8=1;        COM7=1;COM6=0;
    delay(5);
    COM9=1; COM8=1;COM7=1;COM6=1;
    }
}
/*****************************/
char Adjustment1(char shu1)  //加减函数参数设置
{   
if(K1==0)           //减键
    {
          delay(5);
  if(K1==0)
          down1=1;}

if((K1==1)&(down1==1))//按键弹起点动减减
    {  
        down1=0;up1=1;}

         if(up1==1)
          { up1=0;  
          shu1--;
            if(shu1<0)
        shu1=2;   
           }


if(K2==0)                //加键
    {  
           delay(5);
  if(K2==0)                   
   down2=1;}
if((K2==1)&(down2==1))        //按键弹起点动加加
    {  
        down2=0;up2=1;}

         if(up2==1)
          { up2=0;
        shu1++;
     if(shu1>2)
       shu1=0;      
          }                             
return(shu1);//返回
}

/*****************************/
u8 Adjustment2(u8 shu2 )  //加减函数参数设置
{   
if(K1==0)           //减键
    {down1=1;
          delay(5);
  if(K1==0)
        {  if(m1==0)   //中速减少
                {    a++;
            delay(5);//停留时间5X10
                if(a==20)
                   { n1++;
                     if(n1==5)//减少快慢
                      m1=1;
                      a=0;                   
              shu2--;
             if(shu2==0)
             shu2=150;
                    }
                 }

       if(m1==1) //高速减少
                 { a=0;                           
          shu2--;
           delay(20);
           if(shu2==0)
           shu2=150;
                 }
        }
  }

if((K1==1)&(down1==1))//按键弹起点动减减
    {  a=0; n1=0;m1=0;
        down1=0;up1=1;}
         if(up1==1)
          { up1=0;  shu2--;
            if(shu2==0)
        shu2=150;   
           }


if(K2==0)                //加键
    {  down2=1;
           delay(5);
  if(K2==0)
         {  if(m2==0)           //中速增加
                { a++;
          delay(5);           //停留时间5X10
             if(a==20)
                     { n2++;
                       if(n2==5)   //增加快慢
                       m2=1;
                       a=0;                   
               shu2++;
               if(shu2>150)
               shu2=0;
                     }
                 }

       if(m2==1) //高速增加
                  { a=0;                           
           shu2++;
           delay(20);
           if(shu2>150)
           shu2=0;
                  }
         }
   }

if((K2==1)&(down2==1))        //按键弹起点动加加
    {  a=0; n2=0;m2=0;
        down2=0;up2=1;}
         if(up2==1)
          { up2=0;
        shu2++;
     if(shu2>150)
       shu2=0;      
          }                             
return(shu2);//返回
}



/*****************************/
char Adjustment3(char shu3 )  //加减函数参数设置
{   
if(K1==0)           //减键
    {down1=1;
          delay(5);
  if(K1==0)
        {  if(m1==0)   //中速减少
                {    a++;
            delay(5);//停留时间5X10
                if(a==10)
                   { n1++;
                     if(n1==5)//减少快慢
                      m1=1;
                      a=0;                   
              shu3--;
             if(shu3<-40)
             shu3=120;
                    }
                 }

       if(m1==1) //高速减少
                 { a=0;                           
          shu3--;
           delay(20);//加的速度
           if(shu3<-40)
           shu3=120;
                 }
        }
  }

if((K1==1)&(down1==1))//按键弹起点动减减
    {  a=0; n1=0;m1=0;
        down1=0;up1=1;}
         if(up1==1)
          { up1=0;  shu3--;
            if(shu3<-40)
        shu3=120;   
           }


if(K2==0)                //加键
    {  down2=1;
           delay(5);
  if(K2==0)
         {  if(m2==0)           //中速增加
                { a++;
          delay(5);           //停留时间5X10
             if(a==10)
                     { n2++;
                       if(n2==5)   //增加快慢
                       m2=1;
                       a=0;                   
               shu3++;
               if(shu3>120)
               shu3=-40;
                     }
                 }

       if(m2==1) //高速增加
                  { a=0;                           
           shu3++;
           delay(20);
           if(shu3>120)
           shu3=-40;
                  }
         }
   }

if((K2==1)&(down2==1))        //按键弹起点动加加
    {  a=0; n2=0;m2=0;
        down2=0;up2=1;}
         if(up2==1)
          { up2=0;
        shu3++;
     if(shu3>120)
       shu3=-40;      
          }                             


   return(shu3);


}

/*****************************/
char Adjustment4(char shu4 )  //加减函数参数设置
{   
if(K1==0)           //减键
    {down1=1;
          delay(5);
  if(K1==0)
        {  if(m1==0)   //中速减少
                {    a++;
            delay(5);//停留时间5X10
                if(a==10)
                   { n1++;
                     if(n1==5)//减少快慢
                      m1=1;
                      a=0;                   
              shu4--;
             if(shu4<-40)
             shu4=120;
                    }
                 }

       if(m1==1) //高速减少
                 { a=0;                           
          shu4--;
           delay(20);
           if(shu4<-40)
           shu4=120;
                 }
        }
  }

if((K1==1)&(down1==1))//按键弹起点动减减
    {  a=0; n1=0;m1=0;
        down1=0;up1=1;}
         if(up1==1)
          { up1=0;  shu4--;
            if(shu4<-40)
        shu4=120;   
           }


if(K2==0)                //加键
    {  down2=1;
           delay(5);
  if(K2==0)
         {  if(m2==0)           //中速增加
                { a++;
          delay(5);           //停留时间5X10
             if(a==10)
                     { n2++;
                       if(n2==5)   //增加快慢
                       m2=1;
                       a=0;                   
               shu4++;
               if(shu4>120)
               shu4=-40;
                     }
                 }

       if(m2==1) //高速增加
                  { a=0;                           
           shu4++;
           delay(20);
           if(shu4>120)
           shu4=-40;
                  }
         }
   }

if((K2==1)&(down2==1))        //按键弹起点动加加
    {  a=0; n2=0;m2=0;
        down2=0;up2=1;}
         if(up2==1)
          { up2=0;
        shu4++;
     if(shu4>120)
       shu4=-40;      
          }                             
return(shu4);//返回
}

/*****************************/
char Adjustment5(char shu5 )  //加减函数参数设置
{   
if(K1==0)           //减键
    {down1=1;TR0=0;  i2=0;
          delay(5);
  if(K1==0)
        {  if(m1==0)   //中速减少
                {    a++;
            delay(5);//停留时间5X10
                if(a==10)
                   { n1++;
                     if(n1==5)//减少快慢
                      m1=1;
                      a=0;                   
              shu5--;
             if(shu5<-90)
             shu5=90;
                    }
                 }

       if(m1==1) //高速减少
                 { a=0;                           
          shu5--;
           delay(20);
           if(shu5<-90)
           shu5=90;
                 }
        }
  }

if((K1==1)&(down1==1))//按键弹起点动减减
    {  a=0; n1=0;m1=0;
        down1=0;up1=1;}
         if(up1==1)
          { up1=0;  shu5--;
            if(shu5<-90)
        shu5=90;   
           }


if(K2==0)                //加键
    {  down2=1;TR0=0;        i2=0;
           delay(5);
  if(K2==0)
         {  if(m2==0)           //中速增加
                { a++;
          delay(5);           //停留时间5X10
             if(a==10)
                     { n2++;
                       if(n2==5)   //增加快慢
                       m2=1;
                       a=0;                   
               shu5++;
               if(shu5>90)
               shu5=-90;
                     }
                 }

       if(m2==1) //高速增加
                  { a=0;                           
           shu5++;
           delay(20);
           if(shu5>90)
           shu5=-90;
                  }
         }
   }

if((K2==1)&(down2==1))        //按键弹起点动加加
    {  a=0; n2=0;m2=0;
        down2=0;up2=1;}
         if(up2==1)
          { up2=0;
        shu5++;
     if(shu5>90)
       shu5=-90;      
          }                             
return(shu5);//返回
}

/*****************************/
u16 Adjustment6(u16 shu6 )  //加减函数参数设置
{   
if(K1==0)           //减键
    {down1=1;
          delay(5);
  if(K1==0)
        {  if(m1==0)   //中速减少
                {    a++;
            delay(5);//停留时间5X10
                if(a==10)
                   { n1++;
                     if(n1==5)//减少快慢
                      m1=1;
                      a=0;                   
              shu6--;
             if(shu6==0)
             shu6=999;
                    }
                 }

       if(m1==1) //高速减少
                 { a=0;                           
          shu6--;
           delay(20);
           if(shu6==0)
           shu6=999;
                 }
        }
  }

if((K1==1)&(down1==1))//按键弹起点动减减
    {  a=0; n1=0;m1=0;
        down1=0;up1=1;}
         if(up1==1)
          { up1=0;  shu6--;
            if(shu6==0)
        shu6=999;   
           }


if(K2==0)                //加键
    {  down2=1;
           delay(5);
  if(K2==0)
         {  if(m2==0)           //中速增加
                { a++;
          delay(5);           //停留时间5X10
             if(a==10)
                     { n2++;
                       if(n2==5)   //增加快慢
                       m2=1;
                       a=0;                   
               shu6++;
               if(shu6>999)
               shu6=0;
                     }
                 }

       if(m2==1) //高速增加
                  { a=0;                           
           shu6++;
           delay(20);
           if(shu6>999)
           shu6=0;
                  }
         }
   }

if((K2==1)&(down2==1))        //按键弹起点动加加
    {  a=0; n2=0;m2=0;
        down2=0;up2=1;}
         if(up2==1)
          { up2=0;
        shu6++;
     if(shu6>999)
       shu6=0;      
          }                             
return(shu6);//返回
}

/*****************************/
u16 Adjustment7(u16 shu7 )  //加减函数参数设置
{   
if(K1==0)           //减键
    {down1=1;
          delay(5);
  if(K1==0)
        {  if(m1==0)   //中速减少
                {    a++;
            delay(5);//停留时间5X10
                if(a==10)
                   { n1++;
                     if(n1==5)//减少快慢
                      m1=1;
                      a=0;                   
              shu7--;
             if(shu7==0)
             shu7=240;
                    }
                 }

       if(m1==1) //高速减少
                 { a=0;                           
          shu7--;
           delay(20);
           if(shu7==0)
           shu7=240;
                 }
        }
  }

if((K1==1)&(down1==1))//按键弹起点动减减
    {  a=0; n1=0;m1=0;
        down1=0;up1=1;}
         if(up1==1)
          { up1=0;  shu7--;
            if(shu7==0)
        shu7=240;   
           }


if(K2==0)                //加键
    {  down2=1;
           delay(5);
  if(K2==0)
         {  if(m2==0)           //中速增加
                { a++;
          delay(5);           //停留时间5X10
             if(a==10)
                     { n2++;
                       if(n2==5)   //增加快慢
                       m2=1;
                       a=0;                   
               shu7++;
               if(shu7>=240)
               shu7=0;
                     }
                 }

       if(m2==1) //高速增加
                  { a=0;                           
           shu7++;
           delay(20);
           if(shu7>=240)
           shu7=0;
                  }
         }
   }

if((K2==1)&(down2==1))        //按键弹起点动加加
    {  a=0; n2=0;m2=0;
        down2=0;up2=1;}
         if(up2==1)
          { up2=0;
        shu7++;
     if(shu7>=240)
       shu7=0;      
          }                             
return(shu7);//返回
}
          
/*****************************/
char Adjustment8(char shu8 )  //加减函数参数设置
{   
if(K1==0)           //减键
    {
          delay(5);
  if(K1==0)
          down1=1;}

if((K1==1)&(down1==1))//按键弹起点动减减
    {  
        down1=0;up1=1;}

         if(up1==1)
          { up1=0;  
          shu8-=10;
            if(shu8<0)
        shu8=40;   
           }


if(K2==0)                //加键
    {  
           delay(5);
  if(K2==0)                   
   down2=1;}
if((K2==1)&(down2==1))        //按键弹起点动加加
    {  
        down2=0;up2=1;}

         if(up2==1)
          { up2=0;
        shu8+=10;
     if(shu8>40)
       shu8=0;      
          }                             
return(shu8);//返回
}


/********************************/
void clock_T0(void) interrupt 1
{   
TH0=(65536-50000)/256;        //10ms定时器
TL0=(65536-50000)%256;
i2++; i3++;i4++;
}
/****************************/
        void timer1() interrupt 3
{
        TH1=(65536-1000)/256;//60MS附值
        TL1=(65536-1000)%256;

}

void main (void)
{
        TMOD=0x11;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  TH1=(65536-1000)/256;
  TL1=(65536-1000)%256;
  ET0=1;
  EA=1;

  TR1=1;
  init();
  Ad_d(5);
                   shu1=Adjustment1(shu1);
                    shu2=Adjustment2(shu2);
                        shu3=Adjustment3(shu3);
                    shu4=Adjustment4(shu4);
                        shu5=Adjustment5(shu5);
                    shu6=Adjustment6(shu6);
                        shu7=Adjustment7(shu7);
                    shu8=Adjustment8(shu8);
                   D3=abs(shu3);
                   D4=abs(shu4);
                   D6=abs(shu3)*10;
                      D7=abs(shu4)*10;
      shu1= byte_read(0x2001);
      shu2= byte_read(0x2002);
          shu3= byte_read(0x2003);
      shu4= byte_read(0x2004);
          shu5= byte_read(0x2005);
      shu6= byte_read(0x2006);
          shu7= byte_read(0x2007);
      shu8= byte_read(0x2008);

                       
while(1)
{         
  if(K0==0)         //单位
{
           delay(5);
           if(K0==0)
                  {
                    a++;
                  delay(2);
                   if(a==5)
           {down0=1;a=0;}
        }
}
   if((K0==1)&&(down0==1))
                {down0=0;up0=1;        }
         if(up0==1)
           {up0=0;
            ID0++;
       if(ID0>8)
        ID0=0;
      }
                                  

switch(ID0)
  {   
         
      case 0:           
             D4=abs(shu4);
           D6=abs(shu3)*10;
                      D7=abs(shu4)*10;
                    TR0=0;
                    i4=0;  i3=0;        i2=0;
                  Data_temperature();

switch(shu1)
  {   
         
      case 0:          //制冷
           for(n=0;n<15;n++)
{       
   if((LPFdata<38)|| (LPFdata>995))  //超量程显示 或短路,断路
   {   
   sendcode10(temp1);
    }

else if((LPFdata>784)&(LPFdata<867))//        显示负号-10以下量程区域       
     {  
     sendcode14(temp1);
      }
else if(LPFdata>=867)//        显示负号-10以上量程区域       
      {  
       sendcode11(temp1);
      }
else if ((LPFdata>682)&(LPFdata<784)) //百位不显示
     {       
      sendcode12(temp1);
      }
else if ((LPFdata<=682) &(LPFdata>65)) //千位不显示
     {  
     sendcode13(temp1);
     }
else
   {  
    sendcode1(temp1);
   }

         if(shu3>shu4)//开始>停止温度
           {           if(shu4>=0)
                         {  
                        sendcode5(D4);}
            else {
                                  
                sendcode4(D4);}
           if(temp1>=D6)
                  Y1=0;
           else        if(temp1<=D7)
                        Y1=1;
                 }
          else
               {Y1=1;        sendcode15(13);        }
}
          break;


        case 1:  
           D4=abs(shu4);
            D6=abs(shu3)*10;
                      D7=abs(shu4)*10;
                      for(n=0;n<12;n++)
{
        if((LPFdata<38)|| (LPFdata>995))  //超量程显示 或短路,断路
   {
   sendcode10(temp1);
    }

else if((LPFdata>784)&(LPFdata<867))//        显示负号-10以下量程区域       
     {
     sendcode14(temp1);
      }
else if(LPFdata>=867)//        显示负号-10以上量程区域       
      {
       sendcode11(temp1);
      }
else if ((LPFdata>682)&(LPFdata<784)) //百位不显示
     {
      sendcode12(temp1);
      }
else if ((LPFdata<=682) &(LPFdata>=67)) //千位不显示
     {                                                         
     sendcode13(temp1);
     }
else
   {
    sendcode1(temp1);
   }

         if(shu3<shu4)//开始<停止温度
           {           if(shu4>=0)
                        sendcode5(D4);
            else       
                sendcode4(D4);
           if(temp1<=D6)
                  Y1=0;
           else        if(temp1>=D7)
                        Y1=1;
                 }
          else
               {Y1=1;        sendcode15(13);        }
}
         break;


        case 2:  
             D4=abs(shu4);
                      for(n=0;n<15;n++)
{
                if((LPFdata<38)|| (LPFdata>995))  //超量程显示 或短路,断路
   {     
   sendcode10(14);
    }

else if((LPFdata>784)&(LPFdata<867))//        显示负号-10以下量程区域       
     {
     sendcode14(temp1);
      }
else if(LPFdata>=867)//        显示负号-10以上量程区域       
      {
       sendcode11(temp1);
      }
else if ((LPFdata>682)&(LPFdata<784)) //百位不显示
     {
      sendcode12(temp1);
      }
else if ((LPFdata<=682) &(LPFdata>65)) //千位不显示
     {
     sendcode13(temp1);
     }
else
   {
    sendcode1(temp1);
   }

         if(shu3=shu4)//开始>停止温度
           {           if(shu4>=0)
                        sendcode5(D4);
            else       
                sendcode4(D4);
                        Y1=1;
                 }
}
         break;
}
       
  break;

          case 1:         TR0=1;
                                  i3++;        i4=0;
                                  if(i3==4000)
                                    {i3=0;        ID0=0; }
                          sendcode(ID0);//PV区显示P1
                                  if(shu8==30)
                         {shu1=Adjustment1(shu1);//PS区显示D1的值
                                   sendcode2(shu1);}
                                else  sendcode2(shu1);                  
       break;
         
          case 2:           TR0=1;
                                  i4++; i3=0;
                                  if(i4==4000)
                                    {i3=0;i4=0; ID0=0; }
                    sendcode(ID0);
                                 if(shu8==30)
                                 {shu2=Adjustment2(shu2);
                                   sendcode3(shu2);}
                                else   sendcode3(shu2);

      break;
           case 3:   
                                            TR0=1;
                                  i3++;         i4=0;
                                  if(i3==4000)
                                    {i3=0;i4=0;ID0=0; }
                      sendcode(ID0);//PV区显示P1
                                   if(shu8==30)
                                 {         shu3=Adjustment3(shu3);
                         D3=abs(shu3); //求绝对值
                         if(shu3>=0)
                        sendcode5(D3);
            else       
                sendcode4(D3);}
                          else
                                        { D3=abs(shu3); //求绝对值
                              if(shu3>=0)
                             sendcode5(D3);
               else       
                     sendcode4(D3);}


       break;
           case 4:          TR0=1;
                                  i4++;        i3=0;
                                  if(i4==4000)
                                    {i3=0;i4=0;ID0=0; }
                        sendcode(ID0);
                                           if(shu8==30)
                                 {shu4=Adjustment4(shu4);
                         D4=abs(shu4);
                         if(shu4>=0)
                        sendcode5(D4);
            else       
                sendcode4(D4);}
                        else {D4=abs(shu4);
                         if(shu4>=0)
                        sendcode5(D4);
            else       
                sendcode4(D4);}       
                       
                                            
       break;
           case 5:           TR0=1;
                                  i3++;        i4=0;
                                  if(i3==4000)
                                    {i3=0;i4=0;ID0=0; }
                         sendcode(ID0);
                                           if(shu8==30)
                                 {
                                  shu5=Adjustment5(shu5);
                         D5=abs(shu5);
                         if(shu5>=0)
                        sendcode7(D5);
            else       
                sendcode6(D5);}
                        else {D5=abs(shu5);
                         if(shu5>=0)
                        sendcode7(D5);
            else       
                sendcode6(D5);}         
                       
                                                            
       break;
           case 6:     TR0=1;
                                  i4++;        i3=0;
                                  if(i4==4000)
                                    {i3=0;i4=0;ID0=0; }
                        sendcode(ID0);
                                             if(shu8==30)
                                 {
                                 shu6=Adjustment6(shu6);
                                                if(shu6<=99)
                        sendcode7(shu6);
            else       
                sendcode8(shu6);}

                        else
                                {        if(shu6<=99)
                        sendcode7(shu6);
            else       
                sendcode8(shu6);}


       break;
          case 7:         
                      TR0=1;
                                  i3++;        i4=0;
                                  if(i3==4000)
                                    {i3=0;i4=0;ID0=0; }
                     
                     sendcode(ID0);
                                               if(shu8==30)
                                 {
                                 shu7=Adjustment7(shu7);
                                                if(shu7<=99)
                        sendcode7(shu7);
            else       
                sendcode8(shu7);}
                         else
                                 {        if(shu7<=99)
                        sendcode7(shu7);
            else       
                sendcode8(shu7);}
               
       break;


                 case 8:           
                              TR0=1;   i2++; i4++; i3=0;
                              shu8=Adjustment8(shu8);

       
                   for(n=0;n<50;n++)
                                        {        sendcode(ID0);        
                                                  delay(2);
                                            shu8=Adjustment8(shu8);  
                                    sendcode9(shu8);
                                                 delay(2);
        if(K0==0)         //单位
    {
           delay(5);
           if(K0==0)
                  {
                    a++;
                  delay(2);
                   if(a==5)
           {down0=1;a=0;}
        }
}
   if((K0==1)&&(down0==1))
                {down0=0;up0=1;        }
         if(up0==1)
           {up0=0;
            ID0++;
       if(ID0>8)
        ID0=0;
      }               
}
                               

                                                        
                                  if(i4==2000)
                           {i3=0;i4=0;ID0=0; i2=0;}
                             
                        SectorErase(0x2000);  
                                        SectorErase(0x2001);  
                                        SectorErase(0x2002);  
#include <STC12C5630AD.H>#include <intrins.h> //51基本运算(包括_nop_空函数)#include<math.h> //绝对值typedef unsigned char u8;typedef unsigned int u16;/* Declare SFR associated with the IAP */sfr IAP_DATA = 0xE2;  //Flash data registersfr IAP_ADDRH = 0xE3;  //Flash address HIGHsfr IAP_ADDRL = 0xE4;  //Flash address LOWsfr IAP_CMD  = 0xE5;  //Flash command registersfr IAP_TRIG = 0xE6;  //Flash command triggersfr IAP_CONTR = 0xE7;  //Flash control register/*Define ISP/IAP/EEPROM command*/#define CMD_IDLE 0  //Stand-By#define CMD_READ 1  //Byte-Read#define CMD_PROGRAM 2  //Byte-Program#define CMD_ERASE 3  //Sector-Erase/*Define ISP/IAP/EEPROM operation const for IAP_CONTR*///#define ENABLE_IAP   0x80 //if SYSCLK<30MHz//#define ENABLE_IAP   0x81 //if SYSCLK<24MHz//#define ENABLE_IAP   0x82 //if SYSCLK<20MHz#define  ENABLE_IAP   0x83 //if SYSCLK<12MHz//#define ENABLE_IAP 0x84 //if SYSCLK<6MHz//#define ENABLE_IAP 0x85 //if SYSCLK<3MHz//#define ENABLE_IAP 0x86 //if SYSCLK<2MHz//#define ENABLE_IAP 0x87 //if SYSCLK<1MHz//Start address for STC12C5620AD series EEPROM#define IAP_ADDRESS 0x0400#define FOSC 11059200L#define BAUD 9600#define    ADC_POWER 0x80                //定义ADC电源常量#define    ADC_FLAG  0x10                //定义ADC转换结束标志位#define    ADC_START 0x08                //定义ADC转换开始控制位#define    ADC_SPEEDLL 0x00            //1080个时钟转换一次#define ADC_SPEEDL    0x20            //810个时钟转换一次#define ADC_SPEEDH     0x40            //540个时钟转换一次#define ADC_SPEEDHH     0x60        //270个时钟转换一次 #define ENABLE_ISP 0x82#define Error 1#define Ok 0#define WaitTime 0x01/*sfr ISP_DATA  = 0xE2;sfr ISP_ADDRH = 0xE3;sfr ISP_ADDRL = 0xE4;sfr ISP_CMD   = 0xE5;sfr ISP_TRIG  = 0xE6;sfr ISP_CONTR = 0xE7;*/u16 shu6,shu7;u8 i1,a;u16 i2,i3,i4;                u8 ID0,D3,D4,D5;u8 m1,m2,n,n1,n2,shu2,shu8;u16 temp1,LPFdata,D6,D7;char shu1,shu3,shu4,shu5;sbit K0=P3^5;  //选择设置 独立的sbit K1=P1^4;  //移位调整 &设置数码管共9脚sbit K2=P1^2; //加键 &设置数码管共6脚sbit Y1=P1^1; //继电器输出1sbit COM1=P3^2;sbit COM2=P1^6;sbit COM3=P1^7;sbit COM4=P1^3;sbit COM6=P3^3;sbit COM7=P3^7;sbit COM8=P1^0;sbit COM9=P3^4;sbit  CLK=P3^0;sbit  DAT=P3^1;u8 up,down,up0,down0,up1,down1,up2,down2;u8 code  table[]={0xbb,0x82,0xad,0x8f,0x96,0x1f,0x3f,0x8a,0xbf,0x9f,0x00,0x39,0xb6,0xbc,0x04};        //共阴数码管0-F显示不带小数码 ,因为是IC直接驱动的         //0x39,0xb6,0xbc,0x04为C,H,P,—u8 code  table1[]={ 0Xfb,0xc2,0Xed,0xCF,0xd6,0x5f,0x7f, 0xca,0xFF,0xdf};        //带小数点显示 u16 code Dad[161]={ 995,993,990,988,986,984,981,978,975,972,969,966,963,959,955,951,947,943,938,933,928,923,918,912,907,901,894,888,881,874,867,860,852,845,837,828,820,811,802,793,784,775,765,755,745,735,724,714,703,692,682,671,662,648,637,626,614,603,592,580,569,557,546,535,523,512,501,490,479,470,457,446,436,425,415,405,395,385,375,365,356,347,338,329,320,311,303,295,287,278,271,264,256,249,242,236,229,222,216,210,204,198,193,187,182,177,172,167,162,157,153,148,144,140,136,132,128,125,121,118,114,111,108,105,102,99,96,94,91,88,86,84,81,79,77,75,73,71,69,67,65,63,62,60,58,57,55,54,52,51,50,48,47,46,45,44,43,42,40,39,38}; //10位AD转换的数值表 floatfloat code tem[161]={ 40,39,38,37,36,35,34,33,32,31,        30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,        14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,1,2,3,4,        5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120} ;  //测试点的温度/**********************************************函数名:毫秒级CPU延时函数结  果:占用CPU方式延时与参数数值相同的毫秒时间备  注:应用于1T单片机时i<600,应用于12T单片机时i<125/******************************************************************/void delay(u8 t){u16 i;             for(;t>0;t--)         for(i=110;i>0;i--);      }  /*-----Disable ISP/IAP/EEPROM function Make MCU in a safe state----------------------------*/void IapIdle(){ IAP_CONTR = 0;  //Close IAP function IAP_CMD = 0;  //Clear command to standby IAP_TRIG = 0;  //Clear trigger register IAP_ADDRH = 0x80; //Data ptr point to non-EEPROM area IAP_ADDRL = 0;  //Clear IAP address to prevent misuse}/*-----Read one u8 from ISP/IAP/EEPROM area Input: addr (ISP/IAP/EEPROM address) Output: Flash data----------------------*/u8 byte_read(u16 addr){ u8 dat;    //Data buffer IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time IAP_CMD = CMD_READ;  //Set ISP/IAP/EEPROM READ command IAP_ADDRL = addr;  //Set ISP/IAP/EEPROM address low IAP_ADDRH = addr >> 8; //Set ISP/IAP/EEPROM address high IAP_TRIG = 0x46;  //Send trigger command1 (0x46) IAP_TRIG = 0xb9;  //Send trigger command2 (0xb9) _nop_();    //MCU will hold here until ISP/IAP/EEPROM //operation complete dat = IAP_DATA;   //Read ISP/IAP/EEPROM data IapIdle();    //Close ISP/IAP/EEPROM function return dat;    //Return Flash data}/*-----Program one u8 to ISP/IAP/EEPROM area Input: addr (ISP/IAP/EEPROM address)   dat (ISP/IAP/EEPROM data) Output:-----------------------------*/void byte_write(u16 addr, u8 dat){ IAP_CONTR = ENABLE_IAP; IAP_CMD = CMD_PROGRAM; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; IAP_DATA = dat;   //Write ISP/IAP/EEPROM data IAP_TRIG = 0x46; IAP_TRIG = 0xb9; _nop_(); IapIdle();}/*-----Erase one sector area Input: addr (ISP/IAP/EEPROM address) Output:-----------------------------*/void SectorErase(u16 addr){ IAP_CONTR = ENABLE_IAP; IAP_CMD = CMD_ERASE; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; IAP_TRIG = 0x46; IAP_TRIG = 0xb9; _nop_(); IapIdle();}void init(){ P1M0=0x20;    //0010 0000设置P15口模式,用于A/D采集 P1M1=0x20;    //1000 0000设置P17口模式,用于A/D采集 ADC_CONTR=0xe0; //1110 0000开启A/D电源,设置最高转换速度delay(8);            //延时使电源稳定}u16 readad(u8 m)           //m为通道值{ u8 AD_finished=0; u16 result; ADC_DATA=0; ADC_LOW2=0; ADC_CONTR&=0xf8; ADC_CONTR|=m;            //选择通道 ADC_CONTR|=0x08;           //启动AD转换 delay(1); while(AD_finished==0)          //等待AD转换结束 {  AD_finished=(ADC_CONTR&0x10); } result=ADC_DATA*4+ADC_LOW2; ADC_CONTR&=0xf7; return(result);} /****************AD数据滤波动函数*****************/float Ad_d(u8 channel)// 采集电压的平均值20次{                           u8 i;                    for(i=5;i>0;i--)//数据采集存储         {                         LPFdata=readad( channel) ;                         }          return (LPFdata);}           /**********AD转换值转温度值函数**************/void Data_temperature(){            float b;            u8 i;                Ad_d(5);        for(i=0;i<=161;i++)        {                if((LPFdata>=Dad[i])&(LPFdata<Dad[i-1]))                {b=tem[i]+(LPFdata-Dad[i])*((tem[i]-tem[i+1])/(Dad[i]-Dad[i+1]));                    break;                                                                                                                                                                                                                                                                                          }                                }         temp1=b*10+shu5;//强制转化为整形}  /***************************************/   void sendcode(u8 b)//传送负显示PX字节函数{u8 num,c;           for(i1=0;i1<=2;i1++)   {             num=table[13];  //十位 ,小数点位     for(c=0;c<8;c++)   //依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM4=1; COM3=1;        COM2=0;COM1=1;   delay(3);    COM4=1; COM3=1;        COM2=1;COM1=1;   } for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }      COM4=1; COM3=1;        COM2=1;COM1=0;   delay(3);    COM4=1; COM3=1;        COM2=1;COM1=1;  }}/***************************************/   void sendcode1( u16 b)//传送温度显示字节函数{u8 num,c; for(i1=0;i1<=2;i1++)        {    num=table[b/1000];//千位    COM4=0; COM3=1;        COM2=1;COM1=1;   for(c=0;c<8;c++)//依次传送8位    {    CLK=0;    DAT=num&0x01;    CLK=1;    num>>=1;      }    COM4=0; COM3=1;        COM2=1;COM1=1;    delay(5);    COM4=1; COM3=1;        COM2=1;COM1=1;  }for(i1=0;i1<=2;i1++)        {    num=table[b%1000/100];//百位  for(c=0;c<8;c++)//依次传送8位      { CLK=0;           DAT=num&0x01;        CLK=1;        num>>=1;         }     COM4=1; COM3=0;        COM2=1;COM1=1;     delay(5);     COM4=1; COM3=1;        COM2=1;COM1=1;}           for(i1=0;i1<=2;i1++)        {               num=table1[b%100/10];//十位  for(c=0;c<8;c++)//依次传送8位           {CLK=0;            DAT=num&0x01;            CLK=1;           num>>=1;               }      COM4=1; COM3=1;        COM2=0;COM1=1;     delay(5);     COM4=1; COM3=1;COM2=1;COM1=1;   } for(i1=0;i1<=2;i1++)        {     num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位         {  CLK=0;           DAT=num&0x01;              CLK=1;              num>>=1;          }         COM4=1; COM3=1;        COM2=1;COM1=0;         delay(5);         COM4=1; COM3=1;        COM2=1;COM1=1;    }} /*************显示设置码**************/void sendcode2(u8 b)//传送设置编号1显示字节函数{u8 num,c;           for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位    { CLK=0;     DAT=num&0x01;     CLK=1;     num>>=1;     }  }COM9=1; COM8=1;        COM7=1;COM6=0;delay(3);COM9=1; COM8=1;        COM7=1;COM6=1;}  /***************************************/   void sendcode3(u8 b)//传送负显示3字节函数{u8 num,c;for(i1=0;i1<=2;i1++)  {    num=table[b/100];//百位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;     DAT=num&0x01;     CLK=1;     num>>=1;       }    COM9=1; COM8=0;COM7=1;COM6=1;        delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;  }           for(i1=0;i1<=2;i1++)   {             num=table1[b%100/10];  //十位 ,小数点位     for(c=0;c<8;c++)   //依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM9=1; COM8=1;        COM7=0;COM6=1;           delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;   } for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=1;COM6=0;            delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;  }}/***************************************/   void sendcode4(u16 b)//传送负号显示字节函数0~-40显示{u8 num,c;for(i1=0;i1<=2;i1++)  {    num=table[14];//千位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;     DAT=num&0x01;     CLK=1;     num>>=1;       }    COM9=1; COM8=0;COM7=1;COM6=1;     delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;  } for(i1=0;i1<=2;i1++)   {             num=table[b%100/10];//十位     for(c=0;c<8;c++)//依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM9=1; COM8=1;        COM7=0;COM6=1;      delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;   } for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=1;COM6=0;     delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;  }}/*********************************/  void sendcode5(u16 d)//传送0~120度显示节函数{      u8 num,c; for(i1=0;i1<=2;i1++)        {    num=table[d%1000/100];//百位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;      DAT=num&0x01;      CLK=1;     num>>=1;      }    COM9=1; COM8=0;COM7=1;COM6=1;     delay(5);    COM9=1; COM8=1;COM7=1;COM6=1;    }           for(i1=0;i1<=2;i1++){           num=table[d%100/10];//十位   for(c=0;c<8;c++)//依次传送8位     {        CLK=0;     DAT=num&0x01;    CLK=1;     num>>=1;         }    COM9=1; COM8=1;COM7=0;COM6=1;   delay(5);   COM9=1; COM8=1;COM7=1;COM6=1;} for(i1=0;i1<=2;i1++)        {     num=table[d%10];//个位     for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;      num>>=1;       }     COM9=1; COM8=1;        COM7=1;COM6=0;    delay(5);    COM9=1; COM8=1;COM7=1;COM6=1;    }}  /***************************************/   void sendcode6(u8 b)//传送负号显示字节函数-5显示{u8 num,c;           for(i1=0;i1<=2;i1++)   {             num=table[14];//十位     for(c=0;c<8;c++)//依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM9=1; COM8=0;        COM7=1;COM6=1;     delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;   } for(i1=0;i1<=2;i1++)  {    num=table1[b%100/10];//位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=0;COM6=1;     delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;  }for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=1;COM6=0;    delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;  }}  /***************************************/   void sendcode7(u8 b)//传送负号显示字节函数5显示{u8 num,c;           for(i1=0;i1<=2;i1++)  {    num=table1[b%100/10];//位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=0;COM6=1;     delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;  }for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=1;COM6=0;    delay(3);    COM9=1; COM8=1;COM7=1;COM6=1;  }}  /***************************************/   void sendcode8(u16 b)//传送负显示3字节函数{u8 num,c;for(i1=0;i1<=2;i1++)  {    num=table[b/100];//百位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;     DAT=num&0x01;     CLK=1;     num>>=1;       }    COM9=1; COM8=0;COM7=1;COM6=1;        delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;  }           for(i1=0;i1<=2;i1++)   {             num=table1[b%100/10];  //十位 ,小数点位     for(c=0;c<8;c++)   //依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM9=1; COM8=1;        COM7=0;COM6=1;           delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;   } for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=1;COM6=0;            delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;  }}  /***************************************/   void sendcode9(u8 b)//传送负显示2字节函数{u8 num,c;           for(i1=0;i1<=5;i1++)   {             num=table[b%100/10];  //十位 ,小数点位     for(c=0;c<8;c++)   //依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM9=1; COM8=1;        COM7=0;COM6=1;           delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;    } for(i1=0;i1<=5;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM9=1; COM8=1;        COM7=1;COM6=0;            delay(3);   COM9=1; COM8=1;COM7=1;COM6=1;    }}         /***************************************/   void sendcode10(u16 b)//传送断路,短路,超量程显示字节函数{u8 num,c;  for(i1=0;i1<=2;i1++)        {    num=table[14];//千位    COM4=0; COM3=1;        COM2=1;COM1=1;   for(c=0;c<8;c++)//依次传送8位    {    CLK=0;    DAT=num&0x01;    CLK=1;    num>>=1;      }    COM4=0; COM3=1;        COM2=1;COM1=1;    delay(5);    COM4=1; COM3=1;        COM2=1;COM1=1;  }for(i1=0;i1<=2;i1++)        {    num=table[14];//百位  for(c=0;c<8;c++)//依次传送8位      { CLK=0;           DAT=num&0x01;        CLK=1;        num>>=1;         }     COM4=1; COM3=0;        COM2=1;COM1=1;     delay(5);     COM4=1; COM3=1;        COM2=1;COM1=1;}           for(i1=0;i1<=2;i1++)        {               num=table[14];//十位  for(c=0;c<8;c++)//依次传送8位           {CLK=0;            DAT=num&0x01;            CLK=1;           num>>=1;               }      COM4=1; COM3=1;        COM2=0;COM1=1;     delay(5);     COM4=1; COM3=1;COM2=1;COM1=1;   } for(i1=0;i1<=2;i1++)        {     num=table[14];//个位   for(c=0;c<8;c++)//依次传送8位         {  CLK=0;           DAT=num&0x01;              CLK=1;              num>>=1;          }         COM4=1; COM3=1;        COM2=1;COM1=0;         delay(5);         COM4=1; COM3=1;        COM2=1;COM1=1;    }}/***************************************/  void sendcode11(u16 b)//传送PV区负号显示字节函数0~-40显示{u8 num,c;for(i1=0;i1<=2;i1++)  {    num=table[14];//百位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;     DAT=num&0x01;     CLK=1;     num>>=1;       }    COM4=0; COM3=1;COM2=1;COM1=1;     delay(5);    COM4=1; COM3=1;COM2=1;COM1=1;  }for(i1=0;i1<=2;i1++)  {    num=table[b/100];//百位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;     DAT=num&0x01;     CLK=1;     num>>=1;       }    COM4=1; COM3=0;COM2=1;COM1=1;     delay(5);    COM4=1; COM3=1;COM2=1;COM1=1;  }           for(i1=0;i1<=2;i1++)   {             num=table1[b%100/10];//十位     for(c=0;c<8;c++)//依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM4=1; COM3=1;COM2=0;COM1=1;     delay(5);    COM4=1; COM3=1;COM2=1;COM1=1;   } for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM4=1; COM3=1;COM2=1;COM1=0;     delay(5);    COM4=1; COM3=1;COM2=1;COM1=1;  }} /***************************************/   void sendcode12(u16 b)//传送PV区负号显示字节函数0~9.9显示{u8 num,c;           for(i1=0;i1<=4;i1++)   {             num=table1[b%100/10];//十位     for(c=0;c<8;c++)//依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM4=1; COM3=1;COM2=0;COM1=1;     delay(5);    COM4=1; COM3=1;COM2=1;COM1=1;   } for(i1=0;i1<=4;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM4=1; COM3=1;COM2=1;COM1=0;     delay(5);    COM4=1; COM3=1;COM2=1;COM1=1;  }}/***************************************/   void sendcode13(u16 b)//传送PV区负号显示字节函数10.0~99.9显示{u8 num,c;for(i1=0;i1<=2;i1++)   {             num=table[b/100];//位     for(c=0;c<8;c++)//依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM4=1; COM3=0;COM2=1;COM1=1;     delay(3);    COM4=1; COM3=1;COM2=1;COM1=1;   }            for(i1=0;i1<=2;i1++)   {             num=table1[b%100/10];//十位     for(c=0;c<8;c++)//依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }     COM4=1; COM3=1;COM2=0;COM1=1;     delay(3);    COM4=1; COM3=1;COM2=1;COM1=1;   } for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }     COM4=1; COM3=1;COM2=1;COM1=0;     delay(3);    COM4=1; COM3=1;COM2=1;COM1=1;  }}  /***************************************/   void sendcode14(u8 b)//传送负号显示字节函数-5.0显示{u8 num,c;           for(i1=0;i1<=2;i1++)   {             num=table[14];//十位     for(c=0;c<8;c++)//依次传送8位     {        CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;         }   COM4=1; COM3=0;COM2=1;COM1=1;     delay(3);    COM4=1; COM3=1;COM2=1;COM1=1;   } for(i1=0;i1<=2;i1++)  {    num=table1[b%100/10];//位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }   COM4=1; COM3=1;COM2=0;COM1=1;     delay(3);    COM4=1; COM3=1;COM2=1;COM1=1;  }for(i1=0;i1<=2;i1++)  {    num=table[b%10];//个位   for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;       num>>=1;      }   COM4=1; COM3=1;COM2=1;COM1=0;     delay(3);    COM4=1; COM3=1;COM2=1;COM1=1;  }}/*********************************/  void sendcode15(u16 b)  //报错{      u8 num,c; for(i1=0;i1<=2;i1++)        {    num=table[13];//位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;      DAT=num&0x01;      CLK=1;     num>>=1;      }    COM9=0; COM8=1;COM7=1;COM6=1;     delay(5);    COM9=1; COM8=1;COM7=1;COM6=1;    }for(i1=0;i1<=2;i1++)        {    num=table[13];//百位    for(c=0;c<8;c++)//依次传送8位    { CLK=0;      DAT=num&0x01;      CLK=1;     num>>=1;      }    COM9=1; COM8=0;COM7=1;COM6=1;     delay(5);    COM9=1; COM8=1;COM7=1;COM6=1;    }           for(i1=0;i1<=2;i1++){           num=table[13];//十位   for(c=0;c<8;c++)//依次传送8位     {        CLK=0;     DAT=num&0x01;    CLK=1;     num>>=1;         }    COM9=1; COM8=1;COM7=0;COM6=1;   delay(5);   COM9=1; COM8=1;COM7=1;COM6=1;} for(i1=0;i1<=2;i1++)        {     num=table[13];//个位     for(c=0;c<8;c++)//依次传送8位     {  CLK=0;       DAT=num&0x01;       CLK=1;      num>>=1;       }     COM9=1; COM8=1;        COM7=1;COM6=0;    delay(5);    COM9=1; COM8=1;COM7=1;COM6=1;    }} /*****************************/char Adjustment1(char shu1)  //加减函数参数设置{    if(K1==0)           //减键    {          delay(5);  if(K1==0)          down1=1;} if((K1==1)&(down1==1))//按键弹起点动减减    {          down1=0;up1=1;}         if(up1==1)          { up1=0;            shu1--;             if(shu1<0)         shu1=2;               } if(K2==0)                //加键    {             delay(5);  if(K2==0)                       down2=1;} if((K2==1)&(down2==1))        //按键弹起点动加加    {          down2=0;up2=1;}         if(up2==1)          { up2=0;        shu1++;     if(shu1>2)        shu1=0;                }                              return(shu1);//返回}/*****************************/u8 Adjustment2(u8 shu2 )  //加减函数参数设置{    if(K1==0)           //减键    {down1=1;          delay(5);  if(K1==0)        {  if(m1==0)   //中速减少                {    a++;            delay(5);//停留时间5X10                if(a==20)                    { n1++;                     if(n1==5)//减少快慢                      m1=1;                      a=0;                                  shu2--;             if(shu2==0)              shu2=150;                    }                 }       if(m1==1) //高速减少                 { a=0;                                      shu2--;           delay(20);           if(shu2==0)            shu2=150;                 }        }  } if((K1==1)&(down1==1))//按键弹起点动减减    {  a=0; n1=0;m1=0;        down1=0;up1=1;}         if(up1==1)          { up1=0;  shu2--;             if(shu2==0)         shu2=150;               } if(K2==0)                //加键    {  down2=1;           delay(5);  if(K2==0)         {  if(m2==0)           //中速增加                { a++;          delay(5);           //停留时间5X10             if(a==20)                      { n2++;                       if(n2==5)   //增加快慢                       m2=1;                       a=0;                                   shu2++;               if(shu2>150)                shu2=0;                     }                 }       if(m2==1) //高速增加                  { a=0;                                       shu2++;           delay(20);           if(shu2>150)            shu2=0;                  }         }   } if((K2==1)&(down2==1))        //按键弹起点动加加    {  a=0; n2=0;m2=0;        down2=0;up2=1;}         if(up2==1)          { up2=0;        shu2++;     if(shu2>150)        shu2=0;                }                              return(shu2);//返回}/*****************************/char Adjustment3(char shu3 )  //加减函数参数设置{    if(K1==0)           //减键    {down1=1;          delay(5);  if(K1==0)        {  if(m1==0)   //中速减少                {    a++;            delay(5);//停留时间5X10                if(a==10)                    { n1++;                     if(n1==5)//减少快慢                      m1=1;                      a=0;                                  shu3--;             if(shu3<-40)              shu3=120;                    }                 }       if(m1==1) //高速减少                 { a=0;                                      shu3--;           delay(20);//加的速度           if(shu3<-40)            shu3=120;                 }        }  } if((K1==1)&(down1==1))//按键弹起点动减减    {  a=0; n1=0;m1=0;        down1=0;up1=1;}         if(up1==1)          { up1=0;  shu3--;             if(shu3<-40)         shu3=120;               } if(K2==0)                //加键    {  down2=1;           delay(5);  if(K2==0)         {  if(m2==0)           //中速增加                { a++;          delay(5);           //停留时间5X10             if(a==10)                      { n2++;                       if(n2==5)   //增加快慢                       m2=1;                       a=0;                                   shu3++;               if(shu3>120)                shu3=-40;                     }                 }       if(m2==1) //高速增加                  { a=0;                                       shu3++;           delay(20);           if(shu3>120)            shu3=-40;                  }         }   } if((K2==1)&(down2==1))        //按键弹起点动加加    {  a=0; n2=0;m2=0;        down2=0;up2=1;}         if(up2==1)          { up2=0;        shu3++;     if(shu3>120)        shu3=-40;                }                                  return(shu3);}/*****************************/char Adjustment4(char shu4 )  //加减函数参数设置{    if(K1==0)           //减键    {down1=1;          delay(5);  if(K1==0)        {  if(m1==0)   //中速减少                {    a++;            delay(5);//停留时间5X10                if(a==10)                    { n1++;                     if(n1==5)//减少快慢                      m1=1;                      a=0;                                  shu4--;             if(shu4<-40)              shu4=120;                    }                 }       if(m1==1) //高速减少                 { a=0;                                      shu4--;           delay(20);           if(shu4<-40)            shu4=120;                 }        }  } if((K1==1)&(down1==1))//按键弹起点动减减    {  a=0; n1=0;m1=0;        down1=0;up1=1;}         if(up1==1)          { up1=0;  shu4--;             if(shu4<-40)         shu4=120;               } if(K2==0)                //加键    {  down2=1;           delay(5);  if(K2==0)         {  if(m2==0)           //中速增加                { a++;          delay(5);           //停留时间5X10             if(a==10)                      { n2++;                       if(n2==5)   //增加快慢                       m2=1;                       a=0;                                   shu4++;               if(shu4>120)                shu4=-40;                     }                 }       if(m2==1) //高速增加                  { a=0;                                       shu4++;           delay(20);           if(shu4>120)            shu4=-40;                  }         }   } if((K2==1)&(down2==1))        //按键弹起点动加加    {  a=0; n2=0;m2=0;        down2=0;up2=1;}         if(up2==1)          { up2=0;        shu4++;     if(shu4>120)        shu4=-40;                }                              return(shu4);//返回}/*****************************/char Adjustment5(char shu5 )  //加减函数参数设置{    if(K1==0)           //减键    {down1=1;TR0=0;  i2=0;          delay(5);  if(K1==0)        {  if(m1==0)   //中速减少                {    a++;            delay(5);//停留时间5X10                if(a==10)                    { n1++;                     if(n1==5)//减少快慢                      m1=1;                      a=0;                                  shu5--;             if(shu5<-90)              shu5=90;                    }                 }       if(m1==1) //高速减少                 { a=0;                                      shu5--;           delay(20);           if(shu5<-90)            shu5=90;                 }        }  } if((K1==1)&(down1==1))//按键弹起点动减减    {  a=0; n1=0;m1=0;        down1=0;up1=1;}         if(up1==1)          { up1=0;  shu5--;             if(shu5<-90)         shu5=90;               } if(K2==0)                //加键    {  down2=1;TR0=0;        i2=0;           delay(5);  if(K2==0)         {  if(m2==0)           //中速增加                { a++;          delay(5);           //停留时间5X10             if(a==10)                      { n2++;                       if(n2==5)   //增加快慢                       m2=1;                       a=0;                                   shu5++;               if(shu5>90)                shu5=-90;                     }                 }       if(m2==1) //高速增加                  { a=0;                                       shu5++;           delay(20);           if(shu5>90)            shu5=-90;                  }         }   } if((K2==1)&(down2==1))        //按键弹起点动加加    {  a=0; n2=0;m2=0;        down2=0;up2=1;}         if(up2==1)          { up2=0;        shu5++;     if(shu5>90)        shu5=-90;                }                              return(shu5);//返回}/*****************************/u16 Adjustment6(u16 shu6 )  //加减函数参数设置{    if(K1==0)           //减键    {down1=1;          delay(5);  if(K1==0)        {  if(m1==0)   //中速减少                {    a++;            delay(5);//停留时间5X10                if(a==10)                    { n1++;                     if(n1==5)//减少快慢                      m1=1;                      a=0;                                  shu6--;             if(shu6==0)              shu6=999;                    }                 }       if(m1==1) //高速减少                 { a=0;                                      shu6--;           delay(20);           if(shu6==0)            shu6=999;                 }        }  } if((K1==1)&(down1==1))//按键弹起点动减减    {  a=0; n1=0;m1=0;        down1=0;up1=1;}         if(up1==1)          { up1=0;  shu6--;             if(shu6==0)         shu6=999;               } if(K2==0)                //加键    {  down2=1;           delay(5);  if(K2==0)         {  if(m2==0)           //中速增加                { a++;          delay(5);           //停留时间5X10             if(a==10)                      { n2++;                       if(n2==5)   //增加快慢                       m2=1;                       a=0;                                   shu6++;               if(shu6>999)                shu6=0;                     }                 }       if(m2==1) //高速增加                  { a=0;                                       shu6++;           delay(20);           if(shu6>999)            shu6=0;                  }         }   } if((K2==1)&(down2==1))        //按键弹起点动加加    {  a=0; n2=0;m2=0;        down2=0;up2=1;}         if(up2==1)          { up2=0;        shu6++;     if(shu6>999)        shu6=0;                }                              return(shu6);//返回}/*****************************/u16 Adjustment7(u16 shu7 )  //加减函数参数设置{    if(K1==0)           //减键    {down1=1;          delay(5);  if(K1==0)        {  if(m1==0)   //中速减少                {    a++;            delay(5);//停留时间5X10                if(a==10)                    { n1++;                     if(n1==5)//减少快慢                      m1=1;                      a=0;                                  shu7--;             if(shu7==0)              shu7=240;                    }                 }       if(m1==1) //高速减少                 { a=0;                                      shu7--;           delay(20);           if(shu7==0)            shu7=240;                 }        }  } if((K1==1)&(down1==1))//按键弹起点动减减    {  a=0; n1=0;m1=0;        down1=0;up1=1;}         if(up1==1)          { up1=0;  shu7--;             if(shu7==0)         shu7=240;               } if(K2==0)                //加键    {  down2=1;           delay(5);  if(K2==0)         {  if(m2==0)           //中速增加                { a++;          delay(5);           //停留时间5X10             if(a==10)                      { n2++;                       if(n2==5)   //增加快慢                       m2=1;                       a=0;                                   shu7++;               if(shu7>=240)                shu7=0;                     }                 }       if(m2==1) //高速增加                  { a=0;                                       shu7++;           delay(20);           if(shu7>=240)            shu7=0;                  }         }   } if((K2==1)&(down2==1))        //按键弹起点动加加    {  a=0; n2=0;m2=0;        down2=0;up2=1;}         if(up2==1)          { up2=0;        shu7++;     if(shu7>=240)        shu7=0;                }                              return(shu7);//返回}          /*****************************/char Adjustment8(char shu8 )  //加减函数参数设置{    if(K1==0)           //减键    {          delay(5);  if(K1==0)          down1=1;} if((K1==1)&(down1==1))//按键弹起点动减减    {          down1=0;up1=1;}         if(up1==1)          { up1=0;            shu8-=10;             if(shu8<0)         shu8=40;               } if(K2==0)                //加键    {             delay(5);  if(K2==0)                       down2=1;} if((K2==1)&(down2==1))        //按键弹起点动加加    {          down2=0;up2=1;}         if(up2==1)          { up2=0;        shu8+=10;     if(shu8>40)        shu8=0;                }                              return(shu8);//返回}   /********************************/void clock_T0(void) interrupt 1 {   TH0=(65536-50000)/256;        //10ms定时器TL0=(65536-50000)%256;i2++; i3++;i4++;}/****************************/        void timer1() interrupt 3{        TH1=(65536-1000)/256;//60MS附值        TL1=(65536-1000)%256;        }void main (void){        TMOD=0x11;   TH0=(65536-50000)/256;   TL0=(65536-50000)%256;   TH1=(65536-1000)/256;   TL1=(65536-1000)%256;  ET0=1;   EA=1;      TR1=1;  init();  Ad_d(5);                   shu1=Adjustment1(shu1);                    shu2=Adjustment2(shu2);                        shu3=Adjustment3(shu3);                    shu4=Adjustment4(shu4);                        shu5=Adjustment5(shu5);                    shu6=Adjustment6(shu6);                        shu7=Adjustment7(shu7);                    shu8=Adjustment8(shu8);                   D3=abs(shu3);                   D4=abs(shu4);                   D6=abs(shu3)*10;                      D7=abs(shu4)*10;      shu1= byte_read(0x2001);       shu2= byte_read(0x2002);          shu3= byte_read(0x2003);       shu4= byte_read(0x2004);          shu5= byte_read(0x2005);       shu6= byte_read(0x2006);          shu7= byte_read(0x2007);       shu8= byte_read(0x2008);                        while(1){           if(K0==0)         //单位{           delay(5);           if(K0==0)                  {                     a++;                  delay(2);                   if(a==5)           {down0=1;a=0;}        } }   if((K0==1)&&(down0==1))                 {down0=0;up0=1;        }         if(up0==1)           {up0=0;            ID0++;       if(ID0>8)         ID0=0;       }                                   switch(ID0)   {                   case 0:                        D4=abs(shu4);           D6=abs(shu3)*10;                      D7=abs(shu4)*10;                    TR0=0;                     i4=0;  i3=0;        i2=0;                  Data_temperature(); switch(shu1)   {                   case 0:          //制冷           for(n=0;n<15;n++){           if((LPFdata<38)|| (LPFdata>995))  //超量程显示 或短路,断路   {       sendcode10(temp1);     }else if((LPFdata>784)&(LPFdata<867))//        显示负号-10以下量程区域             {       sendcode14(temp1);       }else if(LPFdata>=867)//        显示负号-10以上量程区域              {         sendcode11(temp1);       }else if ((LPFdata>682)&(LPFdata<784)) //百位不显示     {              sendcode12(temp1);       }else if ((LPFdata<=682) &(LPFdata>65)) //千位不显示     {       sendcode13(temp1);      }else    {      sendcode1(temp1);    }         if(shu3>shu4)//开始>停止温度           {           if(shu4>=0)                         {                          sendcode5(D4);}            else {                                                   sendcode4(D4);}           if(temp1>=D6)                  Y1=0;           else        if(temp1<=D7)                         Y1=1;                 }          else               {Y1=1;        sendcode15(13);        }}          break;        case 1:             D4=abs(shu4);            D6=abs(shu3)*10;                      D7=abs(shu4)*10;                       for(n=0;n<12;n++){        if((LPFdata<38)|| (LPFdata>995))  //超量程显示 或短路,断路   {    sendcode10(temp1);     }else if((LPFdata>784)&(LPFdata<867))//        显示负号-10以下量程区域             {      sendcode14(temp1);       }else if(LPFdata>=867)//        显示负号-10以上量程区域              {        sendcode11(temp1);       }else if ((LPFdata>682)&(LPFdata<784)) //百位不显示     {      sendcode12(temp1);       }else if ((LPFdata<=682) &(LPFdata>=67)) //千位不显示     {                                                              sendcode13(temp1);      }else    {    sendcode1(temp1);    }         if(shu3<shu4)//开始<停止温度           {           if(shu4>=0)                        sendcode5(D4);            else                        sendcode4(D4);           if(temp1<=D6)                  Y1=0;           else        if(temp1>=D7)                         Y1=1;                 }          else               {Y1=1;        sendcode15(13);        }}         break;        case 2:               D4=abs(shu4);                      for(n=0;n<15;n++){                if((LPFdata<38)|| (LPFdata>995))  //超量程显示 或短路,断路   {        sendcode10(14);     }else if((LPFdata>784)&(LPFdata<867))//        显示负号-10以下量程区域             {      sendcode14(temp1);       }else if(LPFdata>=867)//        显示负号-10以上量程区域              {        sendcode11(temp1);       }else if ((LPFdata>682)&(LPFdata<784)) //百位不显示     {      sendcode12(temp1);       }else if ((LPFdata<=682) &(LPFdata>65)) //千位不显示     {     sendcode13(temp1);      }else    {    sendcode1(temp1);    }          if(shu3=shu4)//开始>停止温度           {           if(shu4>=0)                        sendcode5(D4);            else                        sendcode4(D4);                         Y1=1;                 } }         break;}          break;              case 1:         TR0=1;                                  i3++;        i4=0;                                  if(i3==4000)                                    {i3=0;        ID0=0; }                          sendcode(ID0);//PV区显示P1                                  if(shu8==30)                         {shu1=Adjustment1(shu1);//PS区显示D1的值                                   sendcode2(shu1);}                                else  sendcode2(shu1);                         break;                   case 2:           TR0=1;                                  i4++; i3=0;                                  if(i4==4000)                                    {i3=0;i4=0; ID0=0; }                    sendcode(ID0);                                 if(shu8==30)                                 {shu2=Adjustment2(shu2);                                   sendcode3(shu2);}                                else   sendcode3(shu2);      break;           case 3:                                               TR0=1;                                  i3++;         i4=0;                                  if(i3==4000)                                    {i3=0;i4=0;ID0=0; }                      sendcode(ID0);//PV区显示P1                                   if(shu8==30)                                 {         shu3=Adjustment3(shu3);                          D3=abs(shu3); //求绝对值                          if(shu3>=0)                        sendcode5(D3);            else                        sendcode4(D3);}                           else                                        { D3=abs(shu3); //求绝对值                               if(shu3>=0)                             sendcode5(D3);               else                             sendcode4(D3);}        break;           case 4:          TR0=1;                                  i4++;        i3=0;                                  if(i4==4000)                                    {i3=0;i4=0;ID0=0; }                        sendcode(ID0);                                           if(shu8==30)                                 {shu4=Adjustment4(shu4);                          D4=abs(shu4);                           if(shu4>=0)                        sendcode5(D4);            else                        sendcode4(D4);}                         else {D4=abs(shu4);                           if(shu4>=0)                        sendcode5(D4);            else                        sendcode4(D4);}                                                                                   break;           case 5:           TR0=1;                                  i3++;        i4=0;                                  if(i3==4000)                                    {i3=0;i4=0;ID0=0; }                         sendcode(ID0);                                           if(shu8==30)                                 {                                  shu5=Adjustment5(shu5);                          D5=abs(shu5);                           if(shu5>=0)                        sendcode7(D5);            else                        sendcode6(D5);}                        else {D5=abs(shu5);                           if(shu5>=0)                        sendcode7(D5);            else                        sendcode6(D5);}                                                                                                     break;           case 6:     TR0=1;                                  i4++;        i3=0;                                  if(i4==4000)                                    {i3=0;i4=0;ID0=0; }                        sendcode(ID0);                                             if(shu8==30)                                 {                                 shu6=Adjustment6(shu6);                                                if(shu6<=99)                        sendcode7(shu6);            else                        sendcode8(shu6);}                        else                                {        if(shu6<=99)                        sendcode7(shu6);            else                        sendcode8(shu6);}       break;          case 7:                                TR0=1;                                  i3++;        i4=0;                                  if(i3==4000)                                    {i3=0;i4=0;ID0=0; }                                          sendcode(ID0);                                               if(shu8==30)                                 {                                 shu7=Adjustment7(shu7);                                                if(shu7<=99)                        sendcode7(shu7);            else                        sendcode8(shu7);}                         else                                  {        if(shu7<=99)                        sendcode7(shu7);            else                        sendcode8(shu7);}                       break;                 case 8:                                         TR0=1;   i2++; i4++; i3=0;                              shu8=Adjustment8(shu8);                            for(n=0;n<50;n++)                                         {        sendcode(ID0);                                                           delay(2);                                            shu8=Adjustment8(shu8);                                      sendcode9(shu8);                                                  delay(2);        if(K0==0)         //单位    {           delay(5);           if(K0==0)                  {                     a++;                  delay(2);                   if(a==5)           {down0=1;a=0;}        } }   if((K0==1)&&(down0==1))                 {down0=0;up0=1;        }         if(up0==1)           {up0=0;            ID0++;       if(ID0>8)         ID0=0;       }                }                                                                                                                          if(i4==2000)                           {i3=0;i4=0;ID0=0; i2=0;}                                                      SectorErase(0x2000);                                          SectorErase(0x2001);                                          SectorErase(0x2002);                                          SectorErase(0x2003);                                       SectorErase(0x2004);                                      SectorErase(0x2005);                                      SectorErase(0x2006);                                      SectorErase(0x2007);                                      SectorErase(0x2008);                                     byte_write(0x2001,shu1);                            byte_write(0x2002,shu2);                                 byte_write(0x2003,shu3);                                            byte_write(0x2004,shu4);                                             byte_write(0x2005,shu5);                                             byte_write(0x2006,shu6);                                              byte_write(0x2007,shu7);                                              byte_write(0x2008,shu8);                                                                                                                            break;                   }}}                                        SectorErase(0x2003);   
                                    SectorErase(0x2004);  
                                    SectorErase(0x2005);  
                                    SectorErase(0x2006);  
                                    SectorErase(0x2007);  
                                    SectorErase(0x2008);  
               
                   byte_write(0x2001,shu1);         
                   byte_write(0x2002,shu2);  
                               byte_write(0x2003,shu3);         
                                   byte_write(0x2004,shu4);          
                                   byte_write(0x2005,shu5);          
                                   byte_write(0x2006,shu6);          
                                   byte_write(0x2007,shu7);          
                                   byte_write(0x2008,shu8);                                                                                                            
                break;                  
}
}

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表