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

📄 led.h

📁 電源供應器設計利用鍵盤介面輸入電源電壓值以SPI界面傳至另一顆CPU做前端之運算結果傳回做LED顯示
💻 H
字号:

/* This is the header file of led type robot handheld ckt. */
void EEWrite(unsigned char Adr,unsigned char Data)
{
  //while (EECR&0x02);  
  while (1) {
    if ( (EECR&0x02)==0x00 ) break;  
    #asm("nop")  
    #asm("nop")
    //_NOP();
    //_NOP(); 
  }   
  EEARH=0;
  EEARL=Adr;
  EEDR=Data;  
  //_CLI(); 
  #asm("cli")
  EECR|=0x04;   
  EECR|=0x02; 
  #asm("nop")  
  #asm("nop") 
  //_NOP();
  //_NOP();  
  //_SEI(); 
  #asm("sei") 
}

unsigned char EERead(unsigned char Adr)
{       
  unsigned char data; 
  //while (EECR&0x02); 
  while (1) {
    if ( (EECR&0x02)==0x00 ) break;
  }    
  EEARH=0;
  EEARL=Adr;
  EECR|=0x01; 
  data=EEDR; 
  return data;
} 




 
void Bin4Bcd(void)
{
  unsigned char j;
  for ( j=0;j<4;j++) {
    CurDigBuf[j]=0;
  }
  //i=CurBinByte[1]; i<<=8;
  //i|=CurBinByte[2];
  while ( WordNumber>=1000 ) {
    WordNumber-=1000;
    CurDigBuf[0]++;
  }
  while ( WordNumber>=100 ) {
    WordNumber-=100;
    CurDigBuf[1]++;
  }
  while ( WordNumber>=10 ) {
    WordNumber-=10;
    CurDigBuf[2]++;
  }
  CurDigBuf[3]=WordNumber;
}

void Bin2Bcd(unsigned char i)
{
  unsigned char j;
  for ( j=0;i<2;j++) {
    CurDigBuf[i]=0;
  }
  //i=CurBinByte[2];
  while ( i>=10 ) {
    i-=10;
    CurDigBuf[0]++;
  }
  CurDigBuf[1]=i;
}

void DspMode(void)
{ 
  if (Mode==0) {
    CurLedDspBuf[0]=0x0f;
    CurLedDspBuf[1]=0x12;
    CurLedDspBuf[2]=0x0e;
    CurLedDspBuf[3]=9;   
  }
  if (Mode==1) {
    CurLedDspBuf[0]=41;
    CurLedDspBuf[1]=0;
    CurLedDspBuf[2]=1;
    CurLedDspBuf[3]=17;   
  }  

}
void DspData(void)
{ 
  if (Mode==0) { 
    WordNumber=ParaNo[0].Data; 
    Bin4Bcd();
    CurLedDspBuf[0]=CurDigBuf[0];
    CurLedDspBuf[1]=CurDigBuf[1];
    CurLedDspBuf[2]=CurDigBuf[2]+20;
    CurLedDspBuf[3]=CurDigBuf[3];   
  }  
  if (Mode==1) { 
    WordNumber=ParaNo[1].Data; 
    Bin4Bcd();
    CurLedDspBuf[0]=CurDigBuf[0];
    CurLedDspBuf[1]=CurDigBuf[1];
    CurLedDspBuf[2]=CurDigBuf[2];
    CurLedDspBuf[3]=CurDigBuf[3];   
  }        
}    
void DspNoPreData(void)
{ 
    CurLedDspBuf[0]=36;
    CurLedDspBuf[1]=36;
    CurLedDspBuf[2]=36;  
    CurLedDspBuf[3]=36;   
    
} 
void DspPreData(void)
{ 
  if (Mode==0) { 
    WordNumber=ParaNo[0].PreData; 
    Bin4Bcd();
    CurLedDspBuf[0]=CurDigBuf[0];
    CurLedDspBuf[1]=CurDigBuf[1];
    CurLedDspBuf[2]=CurDigBuf[2]+20;
    CurLedDspBuf[3]=CurDigBuf[3];   
  } 
  if (Mode==1) { 
    WordNumber=ParaNo[1].PreData; 
    Bin4Bcd();
    CurLedDspBuf[0]=CurDigBuf[0];
    CurLedDspBuf[1]=CurDigBuf[1];
    CurLedDspBuf[2]=CurDigBuf[2];
    CurLedDspBuf[3]=CurDigBuf[3];   
  }      
}
void DspPreFlash(void)
{  
  if (Flash==0) {
    DspPreData();  
    Flash=1;  
    Tmr[1].Pv=80; 
  }
  else {
    DspNoPreData(); 
    Flash=0; 
    Tmr[1].Pv=13;
  }     
  Tmr[1].Con=0x81;


}   
void KeyInc(void)
{  
  if (SnrBuf[1]==0xff) {  
    UpKeyPressed=1;
    if (MenuLevel==2) { 
      if (IncCnt<20) {
        if (Mode==0) { 
          if (ParaNo[Mode].PreData++ >=1200) {
            ParaNo[Mode].PreData--;
          }  
        }  
        if (Mode==1) { 
          if (ParaNo[Mode].PreData++ >=220) {
            ParaNo[Mode].PreData--;
         
          }  
        }
      } 
      if (IncCnt>=20 && IncCnt<40) {
        if (Mode==0) {  
          ParaNo[Mode].PreData+=10; 
          if ( ParaNo[Mode].PreData >=1200) {
            ParaNo[Mode].PreData-=10;
            IncCnt=0;
          }  
        }  
        if (Mode==1) {  
          ParaNo[Mode].PreData+=10; 
          if (ParaNo[Mode].PreData >=220) {
            ParaNo[Mode].PreData-=10;
            IncCnt=0;
          }  
        }
      } 
      if (IncCnt>=40) {
        if (Mode==0) { 
          ParaNo[Mode].PreData+=100;
          if ( ParaNo[Mode].PreData >=1200) {
            ParaNo[Mode].PreData-=100; 
            IncCnt=0; 
          
          }  
        }  
        if (Mode==1) {
          ParaNo[Mode].PreData+=100; 
          if (ParaNo[Mode].PreData >=220) {
            ParaNo[Mode].PreData-=100;  
            IncCnt=0; 
         
          }  
        }
      }  
          
    }   
    DspPreData();      
  }
   
  if (SnrBuf[2]==0xff) { 
    DownKeyPressed=1; 
    if (MenuLevel==2) { 
      if (IncCnt<20) {
        if (Mode==0) { 
          if (ParaNo[Mode].PreData-- <=400) {
            ParaNo[Mode].PreData++;
          }  
        }   
        if (Mode==1) { 
          if (ParaNo[Mode].PreData-- <=110) {
            ParaNo[Mode].PreData++;
          }  
        }
      } 
      if (IncCnt>=20 && IncCnt<40) {
        if (Mode==0) {  
          ParaNo[Mode].PreData-=10; 
          if (ParaNo[Mode].PreData <=400) {
            ParaNo[Mode].PreData+=10; 
            IncCnt=0; 
          }  
        }   
        if (Mode==1) { 
          ParaNo[Mode].PreData-=10;
          if (ParaNo[Mode].PreData <=110) {
            ParaNo[Mode].PreData+=10;  
            IncCnt=0; 
          }  
        }
      }     
      if (IncCnt>=40) {
        if (Mode==0) {  
          ParaNo[Mode].PreData-=100; 
          if (ParaNo[Mode].PreData <=400) {
            ParaNo[Mode].PreData+=100;  
            IncCnt=0; 
          }  
        }   
        if (Mode==1) { 
          ParaNo[Mode].PreData-=100;
          if (ParaNo[Mode].PreData <=110) {
            ParaNo[Mode].PreData+=100;  
            IncCnt=0;  
          }  
        }
      }    
    } 
    DspPreData();  
  }   
  if (SnrBuf[1]==0 && SnrBuf[2]==0) IncCnt=0;
  else 
    if (IncCnt++ >=61 ) IncCnt=61;  
  Tmr[2].Con=0x81;   

} 
void KeyScan(void)
{  
  if (KeyFlag==0xff) {
    KeyFlag=0;
    switch ( PressKeyCode ) {
      case ModeKey: 
        switch (MenuLevel) {
          case 0:
            if (Mode==0) Mode=1;
            else Mode=0; 
            DspMode();   
            break;
          case 1: 
            MenuLevel=0;
            DspMode();   
            break;
          case 2:
            MenuLevel=1; 
            Tmr[1].Con=0;  
            Tmr[2].Con=0;    
            DspData();    
            break;
        }    
        break;
      case UpKey:  
        if (MenuLevel==2) { 
          IncCnt=0; 
          if (Mode==0) {  
             
            if (ParaNo[Mode].PreData++ >=1200) { 
              ParaNo[Mode].PreData--;
              break;
            }  
            
          }  
          if (Mode==1) { 
            if (ParaNo[Mode].PreData++ >=220) { 
              ParaNo[Mode].PreData--; 
              break;   
            }   
            else ParaNo[Mode].PreData++;
          } 
        }   
        break;   
      case DownKey:
        if (MenuLevel==2) {
          IncCnt=0;
          if (Mode==0) { 
            if (ParaNo[Mode].PreData-- <=400) {  
              ParaNo[Mode].PreData++; 
              break;                   
            }   
            
          }   
          if (Mode==1) { 
            if (ParaNo[Mode].PreData-- <=110) {  
              ParaNo[Mode].PreData++; 
              break;
            }
          } 
        }   
        break;
      case EnterKey:  
        switch (MenuLevel) {
          case 0:
            MenuLevel=1;
            DspData();
            break;
          case 1:  
            MenuLevel=2;    
            ParaNo[Mode].PreData=ParaNo[Mode].Data; 
            Tmr[1].Con=0x81;  
            Tmr[2].Con=0x81;  
            IncCnt=0;
            break; 
          case 2:  
            ParaNo[Mode].Data=ParaNo[Mode].PreData;    
            if (Mode==0) {
              DeltaSmall=K1/ParaNo[Mode].Data;
              EEWrite(100,ParaNo[Mode].Data>>8);          //纗

⌨️ 快捷键说明

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