Составители:
39
//== (6000000/64=93750Гц - 50..100000)
end;
interrupt ADCRDY; //== обработчик прерывания при окончании АЦ
//==преобразования
begin
adccode:= word(ADCH);//== читаем только ст. байт кода АЦП (т.е. 8-ми
//==битный АЦП)
ADCSRA.6:=1;//== новый запуск АЦП
end;
function Dec2_8seg_Str (decn:word):string[5];//== 10 бит = 1023max
var s:string[5];
temp:char;
remn:word;
begin
s:='';
repeat
remn:=decn mod 10; //== вычисляем очередную ДЕСЯТИЧНУЮ цифру
числа
decn:=decn div 10; //== путем последовательного деления результата на 10
if remn<>0 then
temp:=key8segm[remn]; //== извлекаем из таблицы код цифры от 1 до 9
else
temp:=key8segm[remn+11]; //== цифра 0 не на "своем" месте на
//==клавиатуре
endif;
s:=s+temp; //== помещаем код цифры в строку 's' (задом наперед для E-
//==LAB)
until decn<1;
return(s); //== возвращаем строку (например "123" для кода 321)
end;
procedure Display8seg; //== высвечивание на индикаторе информации (8-ми
//==сегм. код)
var i,j:byte;
begin
maskind:=%11110111; //== начальное значение маски для позиции индик-ра
for i:=2 downto 0 do //== сканируем 3 линии порта E (PORTE.6 .. PORTE.4)
maskind:=maskind rol 1; //== готовим вывод в следующий индикатор
if not b then maskind:=maskind and $7F;endif;//== если LED (PORTE.7)
//=="горит", то и должен гореть
PORTC:=byte(s[i+1]); //== выводим инверсный 8-ми сегментный код
//==цифры на индикатор
PORTE:=maskind; //== подаем на анод текущего 8-ми сегм. инд-ра высокий
//==уровень"
for j:=0 to 255 do endfor; //== для увеличения яркости свечения
endfor;
Страницы
- « первая
- ‹ предыдущая
- …
- 37
- 38
- 39
- 40
- 41
- …
- следующая ›
- последняя »