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

UptoLike

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

end;
{ Main Program }
{$IDATA}
begin
Init_Ports; //== инициализация портов ввода/вывода
Init_Timer0Async; //== инициализация таймера0
Init_ADC; //== инициализация АЦП
EnableInts; //== разрешение прерываний
loop //== бесконечный цикл
while not ScanKeyOnce(kn) do endwhile;//== ожидаем нажатия на клавишу
key:=byte(keyASCII[kn+1]);//== +1, т.к. в паскале в 0-м байте -длина
//==строки!
while ScanKeyOnce(kn) do endwhile;//== ожидаем отпускание клавишы
case key of //== выполняем действия в соотв-ии с нажатой клавишей (*,0..9)
'*': //== пуск АЦП (считывание кода по прерыванию от бита готовности)
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':
PORTE:=%10111111;//== подаем на анод правого 8-ми сегм. инд-ра
//==напряж-е
PORTC:=byte(key8segm[kn+1]);//== выводим 8-ми сегм. код нажатой
//==клавиши на LED индикатор
| //== этот разделитель обязателен
endcase;
endloop;
end myATMega128.
Снова запустите на выполнение программу
и кнопкой “Flash ->
Program” запишите усовершенствованный код программы в ПЗУ
микрокронтроллера. Затем, нажмите на клавишу “*” и вращая ручку
потенциометра удостовертесь в том, что код соответствующий напряжению
отображается на светодиодном дисплее. Результат покажите преподавателю.
40