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

UptoLike

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

38
endif;
endfor;
endfor;
return (false); //== возвращаем бит "ни одна из клавиш не нажата"
end;
procedure Init_Ports; //== задаем направления передачи данных через порты,
begin //== а также начальные значения
DDRD:=%10001111;//== PD0..PD3 выводим "бегущий 0", PD4..PD6 Ъ
//== считываем код возврата
//== линия PORTD.7 подключена к пъезодинамику, поэтому настроим ее
//== на вывод
DDRC:=$FF; //== порт C на вывод 8-ми сегментного кода
DDRE:=%11110000;//== бит7 порта E (LED) на вывод(по RESET'у все
//== порты настроены на ввод)
//== 6,5,4 биты на базы транзисторов, коллекторы к общим анодам
//== индикаторов
PORTE:=%11111111;//== гасим индикаторы, подавая на их аноды нули
//== через инверторы
end;
procedure Init_Timer0Async;//== настройка Таймера0 для работы от кварца
32768Гц
begin
TCCR0:=$0D;//== бит CS00=CS02=1(предделитель=128),WGM01=1(сброс
//== счетчика при совп.)
OCR0:=$FF; //== регистр кода совпадения (256-1): 32768/128/256=ровно 1Гц
//== режим совпадения предпочтит. режима переполнения, т.к. вместо FF
//== можно выбирать другие значения
ASSR.3:=1; //== бит AS0=1 - переходим в асинхронный режим Timer0 от
//== кварца 32768Гц
TIMSK.1:=1;//== бит OСIE0:=1 - разрешить прерывания при совпадении
//== текущегозначения таймера0 с кодом в регистре совпадения OCR0
end; var b: boolean;
interrupt TIMER0COMP;//== обработчик прерывания при переполнении
//== таймера0, ровно через 1 сек от TOSC=32768Гц в
//==асинхронном режиме
begin
b:=not b; //== мигаем
PORTE.7:= b; //== светодиодом
end;
procedure Init_ADC; //== настройка АЦП
begin
ADMUX:=$20;//== бит ADLAR=1-биты АЦП выравнены влево и читать
//==можно один ADCH
ADCSRA:=$8E; //== настройка АЦП делитель прескалера = 64