📄 pragma.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 + -