📄 sample.c
字号:
#include "MAIN.H"
#define MaxChannel 12
unsigned int Setaimadcdata[MaxChannel]={0};
unsigned int StartTimerPoint[MaxChannel]={0};
unsigned int EndTimerPoint[MaxChannel]={0};
unsigned int EvDelayTimer[MaxChannel][40]={0};
unsigned int AimEvDelayTimer[MaxChannel]={0};
unsigned int bdata EvDelayTimerOnOutPutBit[MaxChannel]={0};
unsigned int EvOutPutBitReal[MaxChannel]={0};
unsigned int EvDelayTimerOnSet[MaxChannel]={0};
unsigned int AimEvDelayTimerOnSet[MaxChannel]={0};
unsigned int AdcDataOnDelayTimer[MaxChannel]={0};
unsigned int AdcDataOnBit[MaxChannel]={0};
unsigned char i,j,k;
unsigned int testdata;
sbit OutPutBit_VE1 = EvDelayTimerOnOutPutBit[0] ^ 0;
sbit OutPutBit_VE2 = EvDelayTimerOnOutPutBit[1] ^ 0;
sbit OutPutBit_VE3 = EvDelayTimerOnOutPutBit[2] ^ 0;
sbit OutPutBit_VE4 = EvDelayTimerOnOutPutBit[3] ^ 0;
sbit OutPutBit_VE5 = EvDelayTimerOnOutPutBit[4] ^ 0;
sbit OutPutBit_VE6 = EvDelayTimerOnOutPutBit[5] ^ 0;
sbit OutPutBit_VE7 = EvDelayTimerOnOutPutBit[6] ^ 0;
sbit OutPutBit_VE8 = EvDelayTimerOnOutPutBit[7] ^ 0;
sbit OutPutBit_VE9 = EvDelayTimerOnOutPutBit[8] ^ 0;
sbit OutPutBit_VE10 = EvDelayTimerOnOutPutBit[9] ^ 0;
sbit OutPutBit_VE11 = EvDelayTimerOnOutPutBit[10] ^ 0;
sbit OutPutBit_VE12 = EvDelayTimerOnOutPutBit[11] ^ 0;
void InitSampleAllData()
{
for(i=0;i<MaxChannel;i++)
{
Setaimadcdata[i]=0;
StartTimerPoint[i]=0;
AimEvDelayTimer[i]=100;//20 ==1ms
EvOutPutBitReal[i]=0;
EvDelayTimerOnSet[i]=0;
AimEvDelayTimerOnSet[i]=20;//20 ==1ms
AdcDataOnDelayTimer[i]=0;
AdcDataOnBit[i]=0;
EvDelayTimerOnOutPutBit[i]=0;
for(j=0;j<40;j++)
EvDelayTimer[i][j]=0;
}
}
void SampleAllCH()
{
ALARMLED2=!ALARMLED2;
ADC_CIC_IR=0;
ADC_vConfConvSingleMode(0);
ADC_vStartConv();
for(i=0;i<8;i++)
{
while(!ADC_CIC_IR);
testdata=ADC_DAT;
ADC_CIC_IR=0;
ADC_vConfConvSingleMode(i+1);
ADC_vStartConv();
testdata=testdata&0x0ff0;
testdata=testdata>>4;
if(testdata>Setaimadcdata[i])
{
if(AdcDataOnBit[i]==0)
{
EvDelayTimer[i][EndTimerPoint[i]]=0;
EndTimerPoint[i]++;
AdcDataOnBit[i]=1;
if(EndTimerPoint[i]>30&&StartTimerPoint[i]>0)
{
PSW_IEN = 0; //关中断
EndTimerPoint[i]=EndTimerPoint[i]-StartTimerPoint[i];
for(k=0;k<EndTimerPoint[i];k++)
{
EvDelayTimer[i][k]=EvDelayTimer[i][StartTimerPoint[i]+k];
}
StartTimerPoint[i]=0;
PSW_IEN = 1;//开中断
}
}
}
else
AdcDataOnBit[i]=0;
}
ADC_CIC_IR=0;
ADC_vConfConvSingleMode(10);
ADC_vStartConv();
for(i=10;i<14;i++)
{
while(!ADC_CIC_IR);
testdata=ADC_DAT;
ADC_CIC_IR=0;
ADC_vConfConvSingleMode(i+1);
ADC_vStartConv();
testdata=testdata&0x0ff0;
testdata=testdata>>4;
j=i-2;
if(testdata>Setaimadcdata[j])
{
if(AdcDataOnBit[j]==0)
{
EvDelayTimer[j][EndTimerPoint[j]]=0;
EndTimerPoint[j]++;
AdcDataOnBit[j]=1;
if(EndTimerPoint[j]>30&&StartTimerPoint[j]>0)
{
PSW_IEN = 0; //关中断
EndTimerPoint[j]=EndTimerPoint[j]-StartTimerPoint[j];
for(k=0;k<EndTimerPoint[j];k++)
{
EvDelayTimer[j][k]=EvDelayTimer[i][StartTimerPoint[j]+k];
}
StartTimerPoint[j]=0;
PSW_IEN = 1;//开中断
}
}
}
else
AdcDataOnBit[j]=0;
}
}
unsigned int WhichCHannel=0;
unsigned int WhichCH_Timer=0;
unsigned int WhichCHannel_EvOn=0;
unsigned int WhichCHannel_AdcOn=0;
void GPT1_T3 (void) interrupt 0x23 {//using _FAST_ABANK1_/*S_RBANK*/ {
GPT12E_T3=0xfc18;
ALARMLED1=!ALARMLED1;
for(WhichCHannel_AdcOn=0;WhichCHannel_AdcOn<MaxChannel;WhichCHannel_AdcOn++)
if(AdcDataOnBit[WhichCHannel_AdcOn])
AdcDataOnDelayTimer[WhichCHannel_AdcOn]++;
for(WhichCHannel=0;WhichCHannel<MaxChannel;WhichCHannel++)
{
for(WhichCH_Timer= StartTimerPoint[WhichCHannel];
WhichCH_Timer<EndTimerPoint[WhichCHannel];WhichCH_Timer++)
EvDelayTimer[WhichCHannel][WhichCH_Timer]++;
if(EvDelayTimer[WhichCHannel][StartTimerPoint[WhichCHannel]]>=AimEvDelayTimer[StartTimerPoint[WhichCHannel]])
{
EvDelayTimerOnOutPutBit[WhichCHannel]=1;
EvDelayTimerOnSet[WhichCHannel]=0;
StartTimerPoint[WhichCHannel]++;
EvDelayTimer[WhichCHannel][StartTimerPoint[WhichCHannel]]=0;
}
}
for(WhichCHannel_EvOn=0;WhichCHannel_EvOn<MaxChannel;WhichCHannel_EvOn++)
if(EvDelayTimerOnOutPutBit[WhichCHannel_EvOn])
EvDelayTimerOnSet[WhichCHannel_EvOn]++;
if(EvDelayTimerOnSet[WhichCHannel_EvOn]>AimEvDelayTimerOnSet[WhichCHannel_EvOn]+AdcDataOnDelayTimer[WhichCHannel_EvOn])
{
EvDelayTimerOnOutPutBit[WhichCHannel_EvOn]=0;
EvDelayTimerOnSet[WhichCHannel_EvOn]=0;
AdcDataOnDelayTimer[WhichCHannel_EvOn]=0;
}
EV1 = OutPutBit_VE1;
EV2 = OutPutBit_VE2;
EV3 = OutPutBit_VE3;
EV4 = OutPutBit_VE4;
EV5 = OutPutBit_VE5;
EV6 = OutPutBit_VE6;
EV7 = OutPutBit_VE7;
EV8= OutPutBit_VE8;
EV9 = OutPutBit_VE9;
EV10 = OutPutBit_VE10;
EV11 = OutPutBit_VE11;
EV12 = OutPutBit_VE12;
}
void GPT1_T2 (void) interrupt 0x22 {//using _FAST_ABANK1_/*S_RBANK*/ {
GPT12E_T2=0xfc18;
}
void GPT1_T4 (void) interrupt 0x24 {//using _FAST_ABANK1_/*S_RBANK*/ {
GPT12E_T4=0xfc18;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -