-
Notifications
You must be signed in to change notification settings - Fork 1
/
BS.C
89 lines (86 loc) · 1.59 KB
/
BS.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "define.h"
bank2 volatile _bsInfo bsInfo;
bank2 volatile unsigned char bsvalueH[2]={0,0};
bank2 volatile unsigned char bsvalueL[2]={0,0};
bank2 volatile unsigned char bsindex=0;
void BS_Init(void);
void BS_Handle(void);
void BS_Init(void)
{
TRISC1=1;
TRISC2=1;//预置为输入模式
PR2=0xff;//设置周期
CCP1CON=0x0c;//设置为PWM模式
CCP2CON=0x0c;
CCPR2L=0;
CCPR1L=0;
GIE=0;
PEIE=1;
T2CON=0x0;//无分频
TMR2ON=1;
TRISC1=0;
TRISC2=0;//设置为输出模式
}
void BS_Handle(void)
{
unsigned char i=0;
long bstmp=0;
long inttmp=0;
if(configItem.jzflag==0 && menuInfo.parType!=parbiansongindex)
{
for(i=0;i<CH_MAX;i++)
{
if(configItem.outflag == 1)
{
inttmp=parItem[i].bslvalue;
}
else
{
inttmp=parItem[i].bslvalue*5-parItem[i].bshvalue;
inttmp/=4;
}
if(adInfo.pv[i]<=parItem[i].bsl)
{
bstmp=inttmp;
}
else if(adInfo.pv[i]>=parItem[i].bsh)
{
bstmp=parItem[i].bshvalue;
}
else
{
bstmp=adInfo.pv[i]-parItem[i].bsl;
bstmp*=(parItem[i].bshvalue-inttmp);
bstmp/=(parItem[i].bsh-parItem[i].bsl);
bstmp+=inttmp;
}
if(bstmp-1<0)bstmp=1;
bsInfo.pv[i]=(int)bstmp;
}
}
else
{
switch(configItem.jzflag)
{
case 1:
bsInfo.pv[0]=parItem[0].bslvalue;
break;
case 2:
bsInfo.pv[0]=parItem[0].bshvalue;
break;
case 3:
bsInfo.pv[1]=parItem[1].bslvalue;
break;
case 4:
bsInfo.pv[1]=parItem[1].bshvalue;
break;
}
}
TMR1IE=0;
for(i=0;i<CH_MAX;i++)
{
bsvalueH[i]=(unsigned char)(bsInfo.pv[i]>>3);
bsvalueL[i]=(unsigned char)(bsInfo.pv[i]&0x07);
}
TMR1IE=1;
}