Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер Выполнить арифметические операции над числами с памяти и записать результат обратно в память http://www.cyberforum.ru/avr/thread1830349.html
2.нужно выполнить арифметические операции над числами с памяти и записать результат обратно в память. Адреса в памяти избираются студентом. Значение чисел вводятся в окне Memory, вызывается в раздел...
Atmega AVR микроконтроллер Вычислить значение арифметического выражения Уважаемые форумчани ! Нужна ваша помощь в решение етих задачек 1 задания . Выражение, необходимо вычислить M0125 = M0123 + N – RN начальные значения RN = 0x10, M0123 = 0xaf Примечания: N -... http://www.cyberforum.ru/avr/thread1829257.html
Простейшая беспроводная сеть Atmega AVR микроконтроллер
Задумал сделать четыре девайса, управляемые одним пультом по радиоканалу. Вначале всё казалось просто: Мастер(пульт) в цикле по радиоканалу отправляет пакеты данных слейвам(девайсам), например,...
Atmega AVR микроконтроллер Работа с EEPROM
Здравствуйте. Подскажите пожалуйста, каким образом я могу адресоваться к EEPROM в CvAVR? Т.е. по определённому адресу получить значение ячейки? МК - AtMega8A. Заранее спасибо.
Atmega AVR микроконтроллер Atmel Studio,первый опыт http://www.cyberforum.ru/avr/thread1821615.html
Решил порвать с Arduino-й ...... надоела своей поверхностностью и легкомысленностью. Остановился на Assembler в качeстве IDE выбрал AVR Studio 7. в качестве подопытного хочу использовать плату...
Atmega AVR микроконтроллер Не работает таймер Здравствуйте. Нужно чтобы мигали 3 любых светодиода с интервалом времени , задержка от таймера 0 с прерываниями, режим0. Эти светодиоды загораются, а дальше ничего не происходит. attiny 2313 пишу в... подробнее
MrVadik
1 / 1 / 0
Регистрация: 20.10.2016
Сообщений: 27
0

Зажигание светодиодов AT90S2313

20.10.2016, 20:13. Просмотров 1049. Ответов 6
Метки (Все метки)

Доброго времени суток.
На AVR только начинающий
Вот написал программу для циклического зажигания светодиодов справа налево от 1 до 8 по очереди.
Вывод на порт B.
Но вот загвоздка,не могу зациклить процесс. (Зажигаются 8 диодов,но процесс не идет на круг,чтобы 1-2-...-8)
Помогите пожалуйста пустить его на круг
Какую команду использовать? Куда ее направить? Она должна быть перед rjmp ?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
; ***** 01_AVR_L.asm (Управление светодиодами)
.include "2313def.inc"
.device AT90S2313
.def Temp =r16 ;рабочий регистр
.def Delay1=r17 ;регистры для хранения задержек
.def Delay2=r18
.def Delay3=r19
;*****    Инициализация (настройка оборудования)
INIT:
     ser Temp ;установка всех бит регистра в единицу
     out DDRB,Temp ;PORTB ориентирован на вывод
     com Temp
;===============================================
;вывод на индикацию буфера отображения Temp 
loop:
     out PORTB,Temp ;вывод данных в  PORTB
     lsl  Temp ;увеличение на 1 отображаемого код
     inc temp
;===============================================
;**** Задержка перед очередной визуализацией.
;Состоит из трёх вложенных друг в друга циклов.
;Общее время задержки определяется выражением:
;Tdelay=((5xDelay1+5)xDelay2)+5)Delay3=(((5x210+5)x250)+5)4=1060000 тактов
;где 5  - количество тактов МК при выполнении команд входящих в тело цикла
DLY3:
     ldi Delay3,1 ;число повторов внешнего цикла
DLY2:
     ldi Delay2,1 ;число повторов среднего цикла
DLY1:
     ldi Delay1,1 ;число повторов внутреннего цикла
DLY:
;Внутренний цикл задержки повторяется Delay1 раз расходуя 5 тактов на каждое повторение
     dec Delay1;уменьшение счётчика внутреннего цикла
     nop ;две пустые команды увеличивают время
     nop ;выполнения внутреннего цикла
     brne DLY ;повторять до обнуления счётчика
;Средний цикл выполняется один раз, контролирует свой счётчик.
;если не обнулён, то перезагружает счётчик внутреннего цикла и запускает внутренний цикл на повторное исполнение.
     dec Delay2;уменьшение счётчика на единицу 
     nop
     nop
brne DLY1 ;на перезагрузку и повтор внутреннего цикла
;Внешний цикл повторно вызывает вложенный в него средний цикл до
;обнуления собственного счётчика. При его обнулении задержка завершается.
    dec Delay3 ;уменьшение на единицу счётчика внешнего цикла 
    nop
    nop
brne DLY2 ;переход на перезагрузку и повтор среднего цикла
;===============================================
  rjmp loop ;повторный цикл визуализации по завершении задержки


Вернуться к обсуждению:
Зажигание светодиодов AT90S2313
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2016, 20:13
Готовые ответы и решения:

Последовательное зажигание светодиодов
Собственно задание: при включении МК светодиоды не горят, через 2 с загораются 1-й, затем...

Зажигание полос светодиодов на мк AT90S8515
Здравствуйте! Задача такова:написать и отладить программу на ассемблер обрабатывающую прерывание...

Последовательное зажигание светодиодов по кнопке (ATtiny2313, Cи)
Здравствуйте.Есть такая проблема.Написал код для подпрограммы последовательного зажигания...

Последовательное зажигание светодиодов по кнопке (ATmega8515, ASM)
Добрый день. Требуется помощь для написания программы на ассемблере под AVR ATmega8515...

Замена AT90S2313 на ATtiny2313
Добрый день! Собираю адаптор UNIScan и в связи с тем что не могу найти AT90S2313 решил попробовать...

6
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru