Перейти к содержанию
    

Работа с Таймерами

Народ помогите!

Как в асме работать с прерываниями и их обработкой для таймера. Если можно то ссылку, где есть комментарии. А лучше небольшой пример прям тут, чтобы можно было вопросы задать если что не понятно будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот исходник с timer 0 overflow:

http://www.ustr.net/avrfiles/avr304.asm

 

А вот исходник Timer/Counter1 Compare:

http://www.avr-asm-tutorial.net/avr_en/source/Lcd4IncCE.asm

 

А вообще посмотрите сами тут:

http://www.google.com/search?hl=en&lr=&saf...+interrupt+reti

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.device at90s8515

.include "8515def.inc"

.include "ind.inc"

 

.org 0

rjmp start

 

.org 7 ; адрес вектора смотри в datasheet на кристалл

rjmp timer0

 

start: ........... ; основной кусок, в т.ч. инициализация стека,

; таймера и разрешение прерываний

...........

 

timer0: ; прерывание от переполнения т/с0

; частота прерываний около 1 кГц (1 МГц/1024)

push rin

 

lds rin,c_time0

inc rin

sbrc rin,6

ldi rin,0b01000000 ; увеличить программный счетчик

sts c_time0,rin ; числа переполнений

pop rin

reti

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

timer0: ; прерывание от переполнения т/с0

  ; частота прерываний около 1 кГц (1 МГц/1024)

  push rin

 

  lds rin,c_time0

  inc rin 

 

А SREG кто сохранять будет, а? Команда INC флаги модифицирует!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.org 7  ;      адрес вектора смотри в datasheet на кристалл

rjmp timer0

 

?? адресация побайтовая или пословная?

при побайтовой - косяк нечетный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Виноват насчет сохранения статуса, необходимо

 

push rin

in rin,SREG

push rin

.................

.................

pop rin

out SREG,rin

pop rin

reti

 

Что касается адресации, то директива .org в данном случае работает с памятью программ - со словами. Побайтная адресация памяти программ вроде бы работает через регистры в команде LPM (в новых кристаллах команд больше, но сути это не меняет).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...