Hi Alex !
Понедельник, Ноябрь 08 2004 в 14:27, Alex Vidrevich писал к All:
AV> Вижу тебя как наяву, All
AV> Помогите оpганизовать 5-секундную задеpжку в АТТiny 2313 с помощью AV> таймеpа (любого) Желательно бы пpосто pаботающий пpимеp.
Как раз этим недавеча занимался. Держи:
=== Cut ===
.include "2313def.inc" .def ttt=R16
.org 0 rjmp START
.org $004 rjmp pr
pr: ; программа обработки прерывания out portb,r23 rol r23 ldi ttt,0 out TCNT1H,ttt ; обнуляем счетчик out TCNT1L,ttt RETI
START:
ldi ttt,0x70 ;определяем стек out $3D,ttt
lds r22,sreg ldi ttt,128 ;разрешение всех прерываний eor r22,ttt out sreg,r22
lds r22,timsk ; разрешаем прерывание по совпадению таймера/счетчика1 ldi ttt,64 eor r22,ttt out timsk,r22
ldi ttt,2 ;тут нужно правильно определить делитель тактовой частоты sts $4E,ttt ; примерно как ты это делал в своей программе
ldi ttt,32 out OCR1AL,ttt
ldi ttt,3 out OCR1AH,ttt
ldi ttt,255 ; все пины порта b работают на выход (ну это тебе уже не нада) out ddrb,ttt
ldi r23,1 ; число, которое бегатет (может быть любое) out portb,r23 loop: rjmp loop ; бесконечный цикл === Cut ===
Эта программка реализует бегущие огни на AT90S2313 через прерывание совпадения таймера/счетчика 1 (загорается 8 светодиодов примерно за 2 с)
▌║▐║│▌║│║║│ Среда, Ноябрь 17 2004 21:11 2║461▌32║23 Всего хорошего. Alexander.