Составители:
34
loop//== начало бесконечного цикла
Wait4KeyPressed;//== ждем нажатия на клавишу
case key of //== выполняем действия в соотв-ии с нажатой клавишей
'0'..'9': //== key - ASCII код клавиши, kn - ее порядковый номер (0..11)
PORTE:=$BF;//==на аноды заданных. инд-ров подать напр-е (e.g. $40)
PORTC:=key8segm[kn];//== выводим 8-ми сегм. код нажатой клавиши
bzzz;//== подача короткого звукового сигнала
| //== этот разделитель обязателен
'#'://== если нажата '#"
ADCSRA.6:=1; //== подгот-ный пуск
АЦП (остальные в обраб-ке
прер-я)
loop
s:=Dec2seg(adccode);//== преобразуем код АЦП в 8-ми сегм код
Display8seg; //== отображаем 8-сегм. код на дисплее
if ScanKeyOnce(kn)then //== если нажата клавиша,
ADCSRA.6:=0; //== то остановить АЦП,
PORTC:=$FF;//== погасить дисплей
exitloop; //== и выйти из цикла
endif;
endloop;
| //== этот разделитель обязателен
endcase;//== конец оператора множественного выбора "case .. of"
endloop;//== возврат к началу бесконечного цикла
end atMega8888KLM.
2.2.7 Программирование EEPROM.
Следующая модификации программы дает возможность
записывать наши действия в ПЗУ (EEPROM). Сначала резервируем 10
байтов для хранения кодов нажатых клавиш “0..9” (наш “бортовой
журнал”) в EEPROM (наш “черный ящик”).
В следующем фрагменте фиксируем все действия оператора (только
для клавиш “0..9”). Для двух остальных клавиш можно предусмотреть
аналогичные действия, изменив верхнюю границу массива e2prom до 11-
ти. В следующем фрагменте записываем 8-ми сегментный код в EEPROM
(или E2PROM) в ячейку с номером равным разности ASCII кода клавиши
(key) и ASCII кода нуля ($30). Например, для клавиши “8”имеющей код
key=$38, разность равна $38-$30=8. То есть код клавиши “8” будет
отправлен на хранение в ячейку под номером 8 (e2prom[8]).И еще один
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »
