Основы программирования микроконтроллеров ATMega128 и 68hc908. Китаев Ю.В. - 46 стр.

UptoLike

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

46
key:=byte(keyASCII[kn+1]);//== +1, т.к. в паскале в 0-м байте -длина
строки!
while ScanKeyOnce(kn) do endwhile;//== ожидаем отпускание клавишы
case key of //== выполняем действия в соотв-ии с нажатой клавишей
(#,*,0..9)
'#': //== (нажата клавиша #) подача звукового сигнала
PORTE:=%11101111; //== подаем на анод левого 8-ми сегм. инд-ра
напряж-е
PORTC:=byte(key8segm[11+1]);//== выводим 8-ми сегм. код клавиши '#'
//== на LED индикатор
loop //== бесконечный цикл
sound:=not sound; //== инвертируем "полуволну"
PORTD.7:=sound; //== выводим ее на динамик
for j:=0 to 255 do endfor;//== задает программно частоту звук. сигнала
if ScanKeyOnce(kn)then exitloop;endif; //== если нажата клавиша, выйти
endloop; //== из бесконечного цикла
| //== этот разделитель обязателен
'*': //== пуск АЦП (считывание кода по прерыванию от бита готовности)
ADCSRA.6:=1; //== первый инициализационный пуск АЦП (остальные
пуски ]
//== в обработчике прерывания)
loop //== бесконечный цикл
s:=Dec2_8seg_Str(adccode);//== 8 старших бит АЦП при ADLAR=1
s:=s+#$FF+#$FF+#$FF; //== FF - гасит неиспольз. индикаторы
//== например "__8" или "_48"
Display8seg; //== отображаем код АЦП
if ScanKeyOnce(kn)then //== если нажата клавиша,
ADCSRA.6:=0; //== то остановить АЦП
exitloop; //== и выйти из цикла измерения напряжения
endif;
endloop;
| //== этот разделитель обязателен
'0'..'9': //== нажата клавиша (0..9)
e2prom[key-'0']:=byte(key8segm[kn+1]); //== пишем в EEPROM
(E2PROM)
e2temp:=e2prom[key-'0'];//== читаем из EEPROM
//== теперь в AVRPROG можно прочитать EEPROM и убедиться, что коды
//== клавиш сохранены даже после выкл. напряжения питания стенда
PORTE:=%10111111;//== подаем на анод правого 8-ми сегм. инд-ра
напряж-е
PORTC:=e2temp;//== выводим 8-ми сегм. код нажатой клавиши на LED
индикатор
| //== этот разделитель обязателен
endcase;
endloop;