РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

ФОРУМ НА ЭЛВО

РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ
  • БЛОГИ
  • НОВОЕ
  • СХЕМЫ
  • РАЗНОЕ
  • ТЕОРИЯ
  • ТЕЛЕВИДЕО
  • СВЕТОДИОД
  • МЕДТЕХНИКА
  • БЫТТЕХНИКА
  • ИЗМЕРИТЕЛИ
  • СПРАВОЧНИК
  • ТЕХНОЛОГИИ
  • РЕМОНТ СХЕМ
  • МОБИЛЬНИКИ
  • КОМПЬЮТЕРЫ
  • НАЧИНАЮЩИМ
  • ЗАРЯДКИ И АКБ
  • СИГНАЛИЗАЦИИ
  • АУДИОТЕХНИКА
  • АВТОВЕЛОМОТО
  • БЛОКИ ПИТАНИЯ
  • РАДИОПРИЁМНИКИ
  • МЕТАЛЛОИСКАТЕЛИ
  • МИКРОКОНТРОЛЛЕР
  • РАДИОПЕРЕДАТЧИКИ


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

    Недавно начал осваивать AVR-ки, (пользую tiny2313A, программы пишу на Ассемблере),
    сторлкнулся с такой проблемой - никак не могу научиться пользоваться таймерами/счетчиками,
    может кто-нибудь написать команды (на примере 0-го таймера)?
    -как выставить вектор прерываний?
    -как разрешить прерывания по переполнению TIMER0?
    -как запустить\остановить таймер (изначально он запущен?)?
    -как обеспечить переход к метке по переполнению таймера?
    -что еще нужно сделать?
    Сб, 06.12.2014, 18:02 | Сообщение # 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