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

📄 3192uc.c

📁 本系统利用AT89S52在线编程技术
💻 C
字号:
#include<reg52.h>
#include<absacc.h>
#include<init.h>
#define uchar  unsigned char
#define uint   unsigned int
/********************************************************************************/
/************                      Main Function                     ************/
/********************************************************************************/
void main(void)
{
   initial();
   array[0]=0;array[1]=10;array[2]=0;array[3]=1;
   while(RL1);
   BINTBCD(ENL,ENH);
   while(RL0);
   while(1){
    CHKT();
   }
   while(1);
}
void CHKT(void)
{
   if(SAMOK){
     SAMOK=0;
     ADJDLY=0;
     while(!SAMOK);
     SAMOK=0;
     TMPL=AD_RESULTL+ABSDL;
     TMPH=AD_RESULTH+ABSDH;
     BINTBCD(TMPL,TMPH);
     if(TMPH>=0x80){SIGN=0;POL=1;}
     else{SIGN=1;POL=0;}
   }
}
/********************************************************************************/
/************             Initiation programme Function              ************/
/********************************************************************************/
void initial(void)
{
   //uint bcdth;
   uchar i,j;
   j=4;
   DARK=0;
   for(i=18;i>0;i--)array_r1[i+36]=DEFAULT_PID[i];
   for(i=18;i>0;i--)array_r0[i]=DEFAULT1[i];
   for(i=18;i>0;i--)WRU3(array_r0[i],i+1);
   ENH=RDSU3(0X07);
   ENL=RDSU3(0X08);
   COMMDLY1=255;
   COMMDLY2=200;
   TMOD  =0X21;
   RCAP2H=0XFF;
   RCAP2L=0XFA;
   T2CON =0X34;
   SCON  =0X50;
   PCON  =0X80;
   IP    =0X01;
   IE    =0X03;
   TL0   =0X33;
   TH0   =0XFE;
   IT0   =1;
   T2mS  =4;
   T05Sec =500/20;
   T1min  =120;
   CLONDLY=3;
   CLONDLYF   =1;
   COMM_OPEN_F=0;
   POL=1;
   DGTCNT=1;
   TR0=1;
   EA=1;
}
void BINTBCD(uchar x,uchar y)
{
   uint i;
   i=0;
   if(y>=0x80)y=y-0x80;
   else {
    if(x>0x00){x=(0xff-x)+1;y=0x7f-y;}
    else {x=0x00;y=0x80-y;}
   }
   i=i+y;i<<=8;i=i+x;
   if(i>=10000){array[0]=1;i=i-10000;}
   else array[0]=0;
   array[1]=i/1000;
   if(array[1]>0x00)i=i-array[1]*1000;
   array[2]=i/100;
   if(array[2]>0x00)i=i-array[2]*100;
   array[3]=i/10;
}
/********************************************************************************/
/************                       Timer0 ISR                       ************/
/********************************************************************************/
void intt0(void) interrupt 1  using 1
{
  TL0=0x33;
  TH0=0x0FE;
  T2mS--;
  if(T2mS==0){
   T2mS=4;
   P0=0XFF;
   DARK=0;
   P0=P0&DGT[DGTCNT-1];
   P0=P0&(0XF0|array[DGTCNT-1]);
   DGTCNT++;
   if(DGTCNT>=5)DGTCNT=1;
   if(!((DGTCNT==0X02)&&(array[0]==0X00)))
   DARK=1;
  }
}
/********************************************************************************/
/************                  Exterior Interrupt0 ISR               ************/
/********************************************************************************/
void INT_7135(void) interrupt 0 using 1
{
  uint  admid;
  uchar SAMV;
  if(!AD_D5){                   //选通信号有无决定是否输出
    if(TRAN_EFFIC_F){
      SAMV=P1&0X0F;
      switch(AD_FACTORIAL)
      {
        case 1:
        {
          admid=0x0000;
          admid=admid+SAMV;
          admid=admid+AD_MID_L;
          AD_MID_L=admid&0x00ff;
          AD_MID_H=AD_MID_H+(admid>>8);
        };break;
        case 2:
        {
          admid=0x0000;
          admid=admid+SAMV*10;
          admid=admid+AD_MID_L;
          AD_MID_L=admid&0x00ff;
          AD_MID_H=AD_MID_H+(admid>>8);
        };break;
        case 3:
        {
          admid=0x0000;
          admid=admid+SAMV*100;
          admid=admid+AD_MID_L;
          AD_MID_L=admid&0x00ff;
          AD_MID_H=AD_MID_H+(admid>>8);
        };break;
        case 4:
        {
          admid=0x0000;
          admid=admid+SAMV*1000;
          admid=admid+AD_MID_L;
          AD_MID_L=admid&0x00ff;
          AD_MID_H=AD_MID_H+(admid>>8);
        };break;
        default:break;
      }
      AD_FACTORIAL--;
      if(AD_FACTORIAL==0){
	TRAN_EFFIC_F=0;
	if(AD_POL)                          //是负的值吗?(AD-POL  1 为正,0 为负)
        {
          AD_RESULTH=0x80+AD_MID_H;
          AD_RESULTL=AD_MID_L;
        }
        else{
          if(AD_MID_L>0){
           AD_RESULTH=0X7F-AD_MID_H;
           AD_RESULTL=(0XFF-AD_MID_L)+1;
          }
          else{
           AD_RESULTH=0x80-AD_MID_H;
           AD_RESULTL=AD_MID_L;
          }
       }
       SAMOK=1;
       ENDLT=~ENDLT;
     }
    }
  }
  else{
    TRAN_EFFIC_F=1;                             //开始转化标志置高
    AD_FACTORIAL=4;                             // AD因子数
    if(!DB1){AD_MID_H=0;AD_MID_L=0;}            //万位是否为零
    else{AD_MID_H=0x27; AD_MID_L=0x10; }        //万位送1
  }
}
/********************************************************************************/
/************             Read data from 93c46 funcation             ************/
/********************************************************************************/
uchar RDSU3(uchar x)
{
  uchar y;
  INSB();
  WRBYTE(x|0x80);
  y=RDBYTE();
  CS=1;
  return (y);
}
/********************************************************************************/
/************              Write data to 93c46 funcation             ************/
/********************************************************************************/
void WRU3(uchar x,uchar y)
{
  INSB();
  WRBYTE(0X30);
  INSB();
  WRBYTE(0X40|y);
  WRBYTE(x);
  SK=0;
  CS=1;
  while(!DOI);
  CS=0;
  INSB();
  WRBYTE(0X00);
  SK=0;
  CS=1;
}
/********************************************************************************/
/************                  start EEPROM funcation                ************/
/********************************************************************************/
void INSB(void)
{
  SK=0;
  DOI=0;
  CS=1;
  SK=1;
  SK=0;
  DOI=1;
  SK=1;
  SK=0;
  CS=0;
}
/********************************************************************************/
/************                    write 8bit funcation                ************/
/********************************************************************************/
void WRBYTE(uchar x)
{
  uchar i;
  i=8;
  while(i--){
   DI=(bit)(x&0x80);
   x<<=1;
   SK=1;
   SK=0;
  }
}
/********************************************************************************/
/************                  read 8 data funcation                 ************/
/********************************************************************************/
uchar RDBYTE(void)
{
  uchar x;
  uchar j=8;
  x=0;
  while(j--)
  {
    DOI=1;
    x<<=1;
    SK=1;
    SK=0;
    if (DOI) x|=0x01;
  }
  return x;
}
/*void CTR(void)
{
   EN1H=ENH;
   EN1L=ENL;
   EN1F=ENF;
   if((SETTH<TMPH)|((SETTL<TMPL)&(SETTH=TMPH)))CTR0();
   else{
    PIDCASEL=SETTL-TMPL;
    PIDCASEH=SETTH-TMPH;
    if(SETTH>TMPH)CTRMAX();
    else{
     ENH=PIDCASEH;
     ENL=PIDCASEL;
     ENF=0;
    }
   }
   CTR1();
}
void CTR0(void)
{
   PIDCASEL=TMPL-SETTL;
   PIDCASEH=TMPH-SETTH;
   if(TMPH>SETTH)CTRMIN();
   else{
    ENH=PIDCASEH;
    ENL=PIDCASEL;
    ENF=1;
   }
}
void CTR1(void)
{
   PIDF=ENF;
   PID1F=EN1F;
   F0=1;
   ADDF(&ENL,&EN1L);         //L(R0),1L(R1)
   DENH=PIDCASET;
   DENL=PIDCASEH;
   DENF=F0;
}
void CTRMAX(void)
{
   if(MAXMIN>=4){
     PNH=0X00;
     PNL=0X65;
   }
   ECTR();
}
void CTRMIN(void)
{
   if(MAXMIN>=4){
     PNH=0X00;
     PNL=0X00;
   }
   ECTR();
}
void ECTR(void)
{
   EA=0;
   PWMBAK=PNL;
   if(PNH>0)PWMBAK=0X65;
   if(PNL>=0x65)PWMBAK=0X65;
   EA=1;
}
void ADDF(uchar *x,uchar *y)
{
  while(1)
 {
   if(F0){
     if(PID1F^PIDF){
       PIDCASEH=(*x)+(*y);
       PIDCASET=(*(x+1))+(*(y+1));
       F0=PIDF;
       break;
     }
     if(*(x+1)<*(y+1)){
       PIDCASEH=(*y)-(*x);
       PIDCASET=(*(y+1))-(*(x+1));
       F0=~PIDF;
       break;
     }
     PIDCASEH=(*x)-(*y);
     PIDCASET=(*(x+1))-(*(y+1));
     F0=PIDF;
     break;
   }
   if(PID1F^PIDF)
   {
     if((*(x+1)<*(y+1))){
       PIDCASEH=(*y)-(*x);
       PIDCASET=(*(y+1))-(*(x+1));
       F0=PID1F;
       break;
     }
     PIDCASEH=(*x)-(*y);
     PIDCASET=(*(x+1))-(*(y+1));
     F0=PID1F;
     break;
   }
   PIDCASEH=(*x)+(*y);
   PIDCASET=(*(x+1))-(*(y+1));
   F0=PIDF;
   break;
  }
}
void ready(void)
{
   uchar i;
   SETDGT=5;
   while(1){
    if(!NEWKeyF)STADLY2();
    KEYDOWN=1;
    NEWKeyF=0;
    if(BX3>0x00)STADLY2();
    if(BY0!=0x40)STADLY1();
    if(ADJDLY)STADLY5();
    i=18;
    while(i--){
      array_r0[i]=DEFAULT1[i];
    }
    WRU3();
    break;
   }
}
void STADLY2(void)
{
   if(!SAMOK)STADLY();
   else{
    SAMOK=0;
    while(SETDGT--){
     STADLY();
    }
    ADJDLY=0;
    while(!SAMOK);
    SAMOK=0;
    TMPL=AD_RESULTL+ABSDL;
    TMPH=AD_RESULTH+ABSDH;
    if(TMPH>=0x80){
     SIGN=0;
     BINTBCD(TMPL,(TMPH-0x80));
    }
    else{
     SIGN=1;
     if(TMPL>0X00)BINTBCD(((0XFF-TMPL)+1),(0X7F-TMPH));
     else BINTBCD(0X00,(0X80-TMPH));
    }

   }
}*/
/*void BINTBCD(uchar x,uchar y)
{
   uint i;
   i=0;
   i=i+y;
   i<<=8;
   i=i+x;
   if(i>=10000){
    array[0]=1;
    i=i-10000;
   }
   else array[0]=0;
   //array[0]=i/10000;
   //if(array[0]!=0x00)i=i-array[0]*10000;
   array[1]=i/1000;
   if(array[1]>0x00)i=i-array[1]*1000;
   array[2]=i/100;
   if(array[2]>0x00)i=i-array[2]*100;
   array[3]=i/10;
}
uint BCDTBIN(void)
{
   uint i;
   uchar j;
   i=0;
   for(j=0;j<=3;j++){
    i=i+array[j];
    i=i*10;
   }
   return (i);
}  */
  /* while(j--){
    array[j]=RRL[j];
   }
   SIGN=0;
   if((KEYBUF0&0X80)==0X80)SIGN=1;
   KEYBUF0&=0X7F;
   bcdth=BCDTBIN();
   LRNGL=bcdth&0x00ff;
   LRNGH=bcdth>>8;
   if(SIGN)LRNGH=0X80-LRNGH;
   else LRNGH=0X80+LRNGH;
   j=4;
   while(j--){
    array[j]=RRH[j];
   }
   SIGN=0;
   if((KEYBUF0&0X80)==0X80)SIGN=1;
   KEYBUF0&=0X7F;
   bcdth=BCDTBIN();
   HRNGL=bcdth&0x00ff;
   HRNGH=bcdth>>8;
   if(SIGN)HRNGH=0X80-HRNGH;
   else HRNGH=0X80+HRNGH;
   array[0]=0;array[1]=2;array[2]=0;array[3]=9;
   POL=1;
   DGTCNT=1;
   TR0=1;
   EA=1;
  /* P1&=0x3F;
   SK=0;
   i=18;
   j=0;
   while(i--){
      array_r0[i]=RDSU3(j);
      j++;
   }
   start();

}
/********************************************************************************/
/************                     Delay Funcation                    ************/
/********************************************************************************/
/*void delay(uint y)
{
  uchar n;
  while(y--){
    n=200;
    while(n--)
     {;}
  }
  return;
} */
/*void intt0(void) interrupt 1  using 1
{
  TL0=0x33;
  TH0=0x0FE;
  while(1){
   T2mS--;
   if(T2mS>0)break;
   T2mS=2*TIMES;
   T20ms--;
   if(T20ms>0){
     KEY();
   }
   T20ms=20/TIMES;
   if(PUMP|DSHEAT)CLCK3();
   if(HTONDLYF)
   {
     HTONDLY--;
     if(HTONDLY>0)CLCKxxx();
     HTONDLYF=0;
   }
   T2Sec--;
   if(T2Sec>0)CLCK2();
   T2Sec=100;
   CTR();
   if(PWMBAK==0)CLCK3();
   HEAT=0;
   PWMON=PWMBAK;
  }
} */

⌨️ 快捷键说明

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