|
#include data unsigned long Rezult = 0L; sbit Pout0 = P0^2; data unsigned int k; void INT0_ISR(void) interrupt 0{ IE0 = 0; Pout0 = 0; period = (PCA0H << 8) | PCA0L; period /= 2; Usr = Rezult / k; temp = Vref; PCA0CPL2 = period; PCA0L = 0; CR = 1; if (CCF3) } if (CCF2) if (Usr < VOLTAGE ) Rezult = 0;k = 0; if (CCF4) } void ADC0_ISR (void) interrupt 15 ADC0L = 0; //Нафига ты делаеш эту операцию????????????? XBR1 = 0x04; OSCICN = 0x07; //АЦП пошло EIE1 = 0x08; EX0 = 1; CR = 1;
E-mail:
info@telesys.ru
#define VOLTAGE 255
#define STEP 10
data unsigned int Usr = 0;
data unsigned int Vref = 1;
data unsigned int period = 0;
data unsigned int temp = 0;
sbit Pout1 = P0^6;
EX0 = 0;
CR = 0;
Pout1 = 0;
if (Usr < VOLTAGE )
Vref -= STEP;
else Vref += STEP;
Rezult = 0;k = 0;
PCA0CPL3 = temp;
PCA0CPH3 = (temp >> 8);
PCA0CPM3 = 0x49;
PCA0CPH2 = (period >> 8);
PCA0CPM2 = 0x49;
PCA0H = 0;
EX0 = 1;
}
void PCA0_ISR (void) interrupt 9 {
{
CCF3 = 0;
Pout0 = 1;
Pout1 = 1;
PCA0CPM3 = 0;
{
CCF2 = 0;
Pout0 = 0;
Pout1 = 0;
CR = 0;
Usr = Rezult / k;
Vref -= STEP;
else Vref += STEP;
temp = Vref + ((PCA0H << 8) | PCA0L);
PCA0CPL4 = temp;
PCA0CPH4 = (temp >> 8);
PCA0CPM4 = 0x49;
CR = 1;
PCA0CPM2 = 0;
}
{
CCF4 = 0;
Pout0 = 1;
Pout1 = 1;
PCA0CPM4 = 0;
}
if (CF)
{
CF = 0;
CR = 0;
PCA0H = 0;
PCA0L = 0;
}
{
ADCINT = 0;
Rezult += ADC0H;
k++;
ADBUSY = 1;
}
void main (void)
{
Pout0 = 0;
Pout1 = 0;
WDTCN = 0xDE;
WDTCN = 0xAD;
XBR2 = 0x40;
PRT0CF = 0x44;
REF0CN = 0x03;
AMX0CF = 0x01;
AMX0SL = 0x00;
ADC0CF = 0x80;
ADC0CN = 0xD0;
EIE2 = 0x02;
EIP2 = 0x02;
IT0 = 1;
EA = 1;
while(1);
}
Ответы