Составители:
44
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 - разрешить прерывания при совпадении
текущего
end; //== значения таймера0 с кодом в регистре совпадения OCR0
var b: boolean;
var i,t0: byte;//== v.4.09 позволяет сделать эти переменные локальными !!
interrupt TIMER0COMP;//== обработчик прерывания при совпадении кодов
таймера0
//== ровно через 1 сек от TOSC=32768Гц в асинхронном режиме
begin
b:=not b; //== мигаем
PORTE.7:= b; //== светодиодом
for t0:=0 to 6 do //== "тикаем"
sound:=not sound; //== формируем меандр _|`|_|`|_|`|
PORTD.7:=sound;
for i:=0 to 255 do endfor; //== длительность полуволны "тика"
endfor;
end;
procedure Init_ADC; //== настройка АЦП
begin
ADCSRA:=$8E; //== настройка АЦП делитель (предделителя)прескалера =
64
//== (6000000/64=93750Гц - 50..100000)
ADMUX:=$20;//== бит ADLAR=1-биты АЦП выравнены влево и читать
можно один ADCH
end;
interrupt ADCRDY; //== обработчик прерывания при окончании АЦ
преобразования
begin
adccode:= word(ADCH);//== читаем только ст. байт кода АЦП (т.е. 8-ми
битный АЦП)
ADCSRA.6:=1;//== новый запуск АЦП
end;
function Dec2_8seg_Str (decn:word):string[5];//== 10 бит = 1023max
var s:string[5];
temp:char;
remn:word;
Страницы
- « первая
- ‹ предыдущая
- …
- 42
- 43
- 44
- 45
- 46
- …
- следующая ›
- последняя »