Составители:
33
return(cifry); //== возвращаем массив трех цифр
end;
//===================================================
procedure Display8seg; //== однокр. высвечивание на индикаторе 8-ми
сегм. кода
var i,j:byte;running0:byte;//== i,j - вспом. переменные (счетчики циклов)
begin
running0:=%11110111; //== начальное значение "бегущего нуля"
for i:=2 downto 0 do //== сканируем 3 линии порта E (PORTE.6 ..
PORTE.4)
running0:=running0 rol 1; //== готовим вывод в следующий индикатор
if not b then running0:=running0 and $7F;endif; //== нельзя вмешиваться
//== в состояние LED (PORTE.7) - управляется обработчиком
TIMER0COMP !!
PORTC:=s[i]; //== выводим инверсный 8-ми сегментный код цифры на
индикатор
PORTE:=running0; //== подаем на
анод текущего 8-сегм. инд-ра высокий
уровень
for j:=0 to 255 do endfor; //== для увеличения яркости
endfor;
end;
//==================================================
procedure Init_ADC; begin //== настройка АЦП
ADCSRA:=$xx; //== уст. бит разрешения работы АЦП и Кпреддел = 64
(e.g. =$71)
ADMUX:=$xx;//== биты АЦП выровнены влево и читать можно один
ADCH (e.g. =$DF)
end;
//==================================================
interrupt ADCRDY;begin //== обработчик при окончании АЦ
преобразования
adccode:= word(ADCH);//== читаем только ст. байт кода АЦП (8-ми
битный АЦП
)
ADCSRA.6:=1;//== новый запуск АЦП
end;
//==================================================
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
EnableInts;//== снятие запрета с прерываний (уст. бита I регистра SREG)
Init_ports;//== настройка линий портов на ввод/вывод
Init_Timer0_Async;//== настройка таймера0 на асинхр. режим
Init_ADC;//== настройка АЦП (регистры ADCSRA и ADMUX)
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »
