РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 1 из 1
  • 1
Архив - только для чтения
Использование таймера на микросхемах AVR (Ассемблер).
Сообщение # 1        
ELK
аватар
  Постов: 81   Друзья 
Приветствую всех форумчан.

Недавно начал осваивать AVR-ки, (пользую tiny2313A, программы пишу на Ассемблере),
сторлкнулся с такой проблемой - никак не могу научиться пользоваться таймерами/счетчиками,
может кто-нибудь написать команды (на примере 0-го таймера)?
-как выставить вектор прерываний?
-как разрешить прерывания по переполнению TIMER0?
-как запустить\остановить таймер (изначально он запущен?)?
-как обеспечить переход к метке по переполнению таймера?
-что еще нужно сделать?
Сообщение # 2        
ELK
аватар
  Постов: 81   Друзья 
Все-же сам разобрался, напишу пример для тех, у кого возникнет такая-же трудность.
Все связаное с портом D можно выкинуть.

.include "2313Adef.inc"
.equ K_div = 250
.def rK_div =r16
.def count = r17
.def temp = r18

;-------------------------------------------------------
rjmp Reset
.org $006
rjmp TIM0
;-------------------------------------------------------
.org $00C

TIM0:
inc count
sbrc count, 0
sbr temp, 0b01000000
sbrc count, 0

cbr temp, 0b01000000 ;можно выкинуть
out PortD, temp ;можно выкинуть

out TCNT0, rK_div
;********сюда можно вставить действие, выполняемое при переполнении таймера
reti

Reset:
;********сюда инициализацию
ldi temp, low(RAMEND)
out SPL, temp
ldi temp, 0b01000000 ;можно выкинуть
out DDRD, temp ;можно выкинуть
clr count
clr temp
ldi temp, (1<<TOIE0)
out TIMSK, temp
ldi rK_div, K_div
neg rK_div
out TCNT0, rK_div
ldi temp, 0b00000010
out TCCR0, temp

sei
Cykle:
;********основной цикл
rjmp Cykle

Файлы: 6826328.png (101.3 Kb)
  • Страница 1 из 1
  • 1
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA