Цитата(Stepan576 @ May 31 2011, 09:10)

Кажется нашел...P3.6 - есть результат савнения)) Может кто нибудь работал с ним раньше?? Подскажите результат получается непрерывным? Ну то есть не надо программно ничего делать? Что происходит когда сигналы одинаковы?
давным давно было дело , AOUT определен как P3.6
Код
#include <AT892051.H>
uchar Measur(void) // ADC; возвращает проценты от Vcc
// выполняется от 0.5 до 1.1 mS
{register unsigned char R,Rm,Rp;
uchar code Tabl[47] = {0,2,4,6,8,11,13,15,17,20,22,25,27,30,33,36,39,42,45,48,
51,54,58,62,65,69,73,78,82,87,92,97,102,108,114,120,127,135, 143,151,
161,171,183,197,212,230,253}; // массив счетчика циклов, индекс=2%напруги
// индекс от 0 до 46 , всего 47 штук, от 0 до 92%
AIN0=0; //разрядим конденсатор
for(R=16;R>0;R--) A=A*B; // подождем разряда 100 мкс
// к AIN1 подключим вход измеряемого внешнего напряжения
for(R=255,AIN0=1;R>0;--R) // AIN0 это P1.0 пуск заряда и + вход компаратора
{if (AOUT) goto m1; /* P3_6 Hardwired as AOUT */ //_nop_();_nop_();
} //4 мкс на тело цикла /JB AOUT,m1 ; DJNZ R7,?C0021
m1:
R=255-R; // пройдено циклов
if (R>=Tabl[sizeof(Tabl)-1]) Rp=(sizeof(Tabl)-1)*2; //92% если >=
else for(Rm=sizeof(Tabl)-1; Rm>0; --Rm) // с последнего индекса
{Rp=Tabl[Rm-1];
if (R<Rp) continue; //иначе от Rm до Rm+1 наприм 230,253
Rp=(Rm-1)*2+( (R-Rp)*2/(Tabl[Rm]-Rp) ); //0 или 1 добав для интерполяции
break;
}
return Rp;
}