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

📄 pragma.bak

📁 NEC做的铝电池管理程序
💻 BAK
字号:

#pragma SFR
#pragma  NOP
#pragma  DI
#pragma  EI
#pragma  access
#pragma  asm

#pragma  vect RESET main NOBANK   //DON'T USE CSTART 
#pragma  interrupt INTTM80 tm2ms  //TIMER80 INT PROGRAM

#define uchar unsigned char
#define MOSFM      PM12.3
#define MOSF     P12.3
#define MOSC     P13.0 
#define MOSCHM    PM4.0
#define MOSCH    P4.0

uchar TimerCnt;
uchar ADC();
bit Timerflg;


void main()
{
 int abc();
 int i,j,x,y,z;
  #asm   
  ;stack head 0XFEFF
  MOVW AX,#0FEFFH
  MOVW SP,AX
  NOP
  #endasm	
  
   LVIS=0X09;  //2.3V
   LVIM=0x80; //>2.3v work
   
   TMHMD1=0b01010000; //1.88KHz SUBCLK
   CMP01=200;         //50ms 480KH
   TMHE1=1;          //TMH1
   while(!TMIFH1);   
   TMIFH1=0;         //TMH1 FLG
   TMHE1=0;

  PCC=0;
  PPCC=0x02;//2MHZ fxp
   
  CR80=62;   //2ms
  TCE80=1;
  
  TimerCnt=0;
  MOSF=0;
  MOSFM=0;
  MOSC=0;
  MOSCHM=0;
  MOSCH=0;
  
  if(LVIF)
  {
  	MOSF=1;
  }
  	
  
  TMMK80=0;
  EI();
  
  while(1)
  {
   if(Timerflg)
   {
    WDTE=0xAC;
    Timerflg=0;
    TimerCnt++;
    if(LVIS==0X09) //2.35V
    {
    	if(LVIF)
    	  MOSF=0;
    	else
    	 {
    	     MOSF=1;
    	     LVIS=0X03;
    	  }
     }
    else if(LVIS==0X03)//3.7V
    {
    	if(LVIF)
    	  { 
    	  	MOSC=1;
    	  	MOSCH=0;
    	  	}
    	else
    	   MOSC=0;
    	   MOSCH=1;
    	   LVIS=0X09;
    }
    else LVIS=0X03;    
    
     }
     
   if(TimerCnt>=50)
   {
    abc();
    i=ADC(2);
    j=ADC(3);
    if(i-j>z)
     {MOSC=0;
      MOSF=0;}
      else if(i==j)
      {MOSC=0;
       MOSF=0;
       }
       else 
       MOSC=1;
       MOSF=1;
       if(i+y==0XFF)
        {MOSC=0;
         MOSF=0;}
        else
        MOSC=1;
        MOSF=1;
       
       TimerCnt=0;
       }
          }
 }
 

 
 void tm2ms()
 {
  Timerflg=1;
 }
 

uchar ADC(uchar i)
{
	register uchar j;
	ADM=0X19; //ADCE=1,FR=011
	ADS=i;
	NOP();
	NOP();
	ADCS=1;
	while(!ADIF)
	{
	 ;
	}
	ADIF=0;
	j=ADCRH;
	ADCS=0;
	ADCE=0;
       
       return j;
}

int abc()
 { 
  int z,y,x=3;
  uchar a1[6]={0X1A,0X18,0X16,0X14,0X13,0X12};
  uchar a2[6]={0X5D,0X55,0X4E,0X48,0X44,0X40};
  LVIS=x;
  if(LVIF)
  x++;
  else
  {z=x-3;
  y=a2[z];
  z=a1[z];
  return y,z;}

}

⌨️ 快捷键说明

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