📄 adcvrt.c
字号:
#pragma NOP
#pragma rot
#include "define.h"
unsigned char D_ADtimes; //ad sample times
unsigned char D_ADmin; //ad value min
unsigned char D_ADbuf; //ad value buffer
unsigned char D_ADmax; //ad value max
unsigned char D_ADch; //ad channle
unsigned char D_ADroom; //room temprature ad value
unsigned char D_TMPrm; //room temprature degree
unsigned char D_ADcoil; //coil temprature ad value
unsigned char C_ADerr; //AD Sample erro
unsigned char D_TMPcoil; //coil temprature degree
unsigned char D_ADkey; //eletric current ad value
unsigned char D_ADice; //out coil temprature ad value
unsigned char err_buf; //erro buf for erro ad sample flag
unsigned char D_ADout; //out door temprature ad value
sreg unsigned char F_FLGerr; //ad erro flag
sreg unsigned char F_ERRbak; //ad erro flag backup
#define b_ERRTrm F_ERRbak.0 //room ad value erro flag
#define b_ERRTcoil F_ERRbak.1 //coil ad value erro flag
sreg unsigned char ad_flag;
#define f_AD1s ad_flag.0 //AD 1 ms delay
#define b_ERR1 ad_flag.1 //bit buffer
extern bit f_temp;
const char TEMPTAB1[256]=
{ 21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
22,
22,
23,
24,
25,
25,
26,
27,
27,
28,
28,
29,
30,
30,
31,
31,
32,
32,
33,
33,
34,
34,
35,
35,
36,
36,
37,
37,
38,
38,
38,
39,
39,
40,
40,
41,
41,
41,
42,
42,
43,
43,
43,
44,
44,
45,
45,
45,
46,
46,
47,
47,
47,
48,
48,
48,
49,
49,
49,
50,
50,
51,
51,
51,
52,
52,
52,
53,
53,
53,
54,
54,
55,
55,
55,
56,
56,
56,
57,
57,
57,
58,
58,
58,
59,
59,
59,
60,
60,
60,
61,
61,
62,
62,
62,
63,
63,
63,
64,
64,
64,
65,
65,
66,
66,
66,
67,
67,
68,
68,
68,
69,
69,
69,
70,
70,
70,
71,
71,
72,
72,
72,
73,
73,
74,
74,
74,
75,
75,
76,
76,
76,
77,
77,
78,
78,
78,
79,
79,
80,
80,
80,
81,
81,
82,
82,
83,
83,
84,
84,
85,
85,
86,
86,
87,
87,
88,
88,
89,
90,
90,
91,
91,
92,
92,
93,
93,
94,
95,
95,
96,
96,
97,
98,
98,
99,
100,
100,
101,
102,
103,
103,
104,
105,
106,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
121,
122,
123,
125,
126,
128,
129,
131,
133,
135,
137,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
138,
139,
139,
139,
139,
139,
};
void ADnext(void);
void ADtab(void);
void ADcvrt()
{register unsigned char AD_buf1,AD_buf2;
if(f_adovr)
{ f_adovr=0;
//f_adstart=0;
if(D_ADtimes==18)
{ D_ADtimes--;
D_ADmin=ADCRL0;
D_ADbuf=0;
// f_adstart=1;
}
else
{ if(D_ADtimes==17)
{D_ADtimes--;
if(ADCRL0<D_ADmin)
{ D_ADmax=D_ADmin;
D_ADmin=ADCRL0;
}
else
{D_ADmax=ADCRL0;
}
// f_adstart=1;
}
else
{ AD_buf1=ADCRL0;
if(AD_buf1<D_ADmin)
{ AD_buf1=D_ADmin;
D_ADmin=ADCRL0;
}
if(AD_buf1>D_ADmax)
{ AD_buf2=D_ADmax;
D_ADmax=AD_buf1;
}
D_ADbuf=+AD_buf1;
D_ADtimes--;
if(D_ADtimes==0)
{ D_ADtimes=18;
rorb(D_ADbuf,4);
switch(D_ADch)
{ case n_ADroom:
{ D_ADroom=D_ADbuf;
//if(f_AD1s)
//{
// f_AD1s=0;
ADtab();
D_TMPrm=D_ADbuf;
b_ERRTrm=b_ERR1;
// }
ADnext();
break;
}
case n_ADcoil:
{D_ADcoil=D_ADbuf;
ADtab();
D_TMPcoil=D_ADbuf;
b_ERRTcoil=b_ERR1;
ADnext();
break;
}
case n_ADcurt:
{D_ADkey=D_ADbuf;
ADnext();
break;
}
case n_iceAD:
{D_ADice=D_ADbuf;
ADnext();
break;
}
case n_outAD:
{D_ADout=D_ADbuf;
ADnext();
break;
}
default: ADnext();
}
}
else
{// f_adstart=1;
return;
}
}
}
}
}
void ADtab()
{ register unsigned char *ax, j=0;
if(D_ADbuf>=10&&D_ADbuf<245)
{
j=D_ADbuf;
//if(f_temp)
//ax=(unsigned int)j+TEMPTAB;
//else
ax=( unsigned char *)(j+TEMPTAB1);
D_ADbuf=*ax;
b_ERR1=0;
}
else
{ D_ADbuf=65;
b_ERR1=1;
}
}
void ADnext()
{
ADCS0=0;
err_buf&=0b00000011;
if(F_ERRbak!=0)
{ if(err_buf!=F_ERRbak)
{ C_ADerr=n_2s05s;
err_buf=F_ERRbak;
}
else
{
if(C_ADerr==0)
{// err_buf=F_FLGerr;
err_buf&=0b11111100;
err_buf|=F_ERRbak;
F_FLGerr=err_buf;
}
}
}
else{F_FLGerr=0;
}
f_adovr=0;
// f_adstart=0;
D_ADch++;
if(D_ADch>5)
D_ADch=1;
ADS0=D_ADch;
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
// f_adstart=1;
ADCS0=1;
return;
}
void ADintit0()
{ADCS0=1;
//f_adovr=0;
D_ADch=1;
D_ADtimes=18;
C_ADerr=20;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -