Составители:
45
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;
end;
{ Main Program }
{$IDATA}
begin //== начало основного блока программы
Init_Ports; //== инициализация портов ввода/вывода
Init_Timer0Async; //== инициализация таймера0
Init_ADC; //== инициализация АЦП
EnableInts; //== разрешение прерываний
loop //== бесконечный цикл
while not ScanKeyOnce(kn) do endwhile;//== ожидаем нажатия на клавишу
Страницы
- « первая
- ‹ предыдущая
- …
- 43
- 44
- 45
- 46
- 47
- …
- следующая ›
- последняя »