Max_Fly and BILL ПРИНЕС ГОЛОВОЛОМКУ ЧУР НЕ ПИНАТЬ Я НЕ АСС !!!! ВОПРОСЫ ?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Дима 10 ноября 2003 г. 13:18

include
#include

#define VOLTAGE_SET 116

data union{
unsigned int w;
unsigned char b[2];
}period;

data union{
unsigned int w;
unsigned char b[2];
}temp;

sbit Pout0 = P0^2;
sbit Pout1 = P0^6;


unsigned long accumulator = 0;
unsigned int phase = 0;
unsigned int int_dec = 0;
unsigned char voltage = 0;

void INT0_ISR (void) interrupt 0 {


IE0 = 0;
EX0 = 0;
Pout0 = 0;
Pout1 = 0;
CR = 0;
period.b[1] = PCA0L;
period.b[0] = PCA0H;

period.w /= 2;

PCA0CPL0 = period.b[1];
PCA0CPH0 = period.b[0];
PCA0CPM0 = 0x49;

temp.w = phase;

PCA0CPL1 = temp.b[1];
PCA0CPH1 = temp.b[0];
PCA0CPM1 = 0x49;


PCA0L = 0;
PCA0H = 0;

CR = 1;
EX0 = 1;

}


void PCA_ISR (void) interrupt 9 {


if (CCF0)
{


CCF0 = 0;

Pout0 = 0;
Pout1 = 0;

CR = 0;
temp.b[1] = PCA0L;
temp.b[0] = PCA0H;

temp.w += phase;
PCA0CPL1 = temp.b[1];
PCA0CPH1 = temp.b[0];
PCA0CPM1 = 0x49;


voltage = accumulator /int_dec ;


accumulator = 0;
int_dec = 0;

CR = 1;

PCA0CPM0 = 0;
}

if (CCF1)
{
CCF1 = 0;
Pout0 = 1;
Pout1 = 1;
PCA0CPM1 = 0;
}

if(CF)
{
CF = 0;
CR = 0;
PCA0L = 0;
PCA0H = 0;
}


}



void ADC0_ISR (void) interrupt 15 {
ADCINT = 0;
accumulator += ADC0H;
++int_dec;
ADBUSY = 1;

}


void main (void)
{
data unsigned int n;
WDTCN = 0xDE;
WDTCN = 0xAD;

XBR1 = 0x04;
XBR2 = 0x40;
PRT0CF = 0x44;

OSCXCN = 0x67;
for (n = 0; n < 255; n++) ;
while ( (OSCXCN & 0x80) == 0 );
OSCICN = 0x88;

REF0CN = 0x03;

PCA0MD = 0x02;


AMX0SL = 0x01;
AMX0CF = 0x00;
ADC0CF = 0x60;
ADC0CN = 0x91;

EX0 = 1;
IT0 = 1;
EIE1 = 0x08;
EIE2 = 0x02;


CR = 1;
EA = 1;

while (1)
{
if ((voltage > VOLTAGE_SET) && (phase < 65535))
++phase;
if ((voltage < VOLTAGE_SET) && (phase > 1))
--phase;
}

}





Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru