Программирование МК на ассемблере ASM-51 и AVR Pascal. Китаев Ю.В. - 24 стр.

UptoLike

Составители: 

24
for jj:=0 to 255 do endfor;//== jj=255 - высота звука (длит-сть
"полуволны")
ii:=ii+1;
if ii=50 then//== ii=50 - длительность звука
exitloop;//== заканчиваем подачу сигнала (выход из бескон. цикла)
endif;
endloop;//== возврат к началу бесконечного цикла
end;
//===================================================
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
EnableInts;//== снятие запрета с прерываний
Init_ports;//== настройка линий портов на ввод/вывод
Init_Timer0_Async;//== настройка таймера0 на асинхр. режим
loop//== начало бесконечного цикла
Wait4KeyPressed;//== ждем нажатия на клавишу
case key of //== выполняем действия в соотв-ии с нажатой клавишей
'0'..'9': //== key - ASCII код клавиши, kn - ее порядковый номер (0..11)
PORTx:=$xx;//==на анод(ы) заданных. инд-ров подать напр-е (e.g.
$40)
PORTx:=key8segm[kn];//== выводим 8-ми сегм. код нажатой клавиши
bzzz;//== подача звукового сигнала
| //== этот разделитель обязателен
endcase;//== конец оператора множественного выбора "case .. of"
endloop;//== возврат к началу бесконечного
цикла
end atMega8888KLM.
2.2.5 Вспомогательные подпрограммы.
Далее нам понадобятся две вспомогательные подпрограммы
функция “Dec2seg” и процедура “Display8seg”. Первая преобразует число
в 8-ми сегментный код, а вторая
отображает его на LED дисплее.
Как видно из рисунка через порт
“C” выводится 8-ми сегментный
код цифры одновременно на все
катоды светодиодов всех трех
индикаторов, а высветится
соответствующий символ
только
на том индикаторе, на общий
анод, которого подан высокий