Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
meowlazy
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 6
1

Бегущий огонь на ATMega8535

11.11.2014, 18:24. Просмотров 3121. Ответов 15
Метки нет (Все метки)

задача на Микроконтроллере mega8535. (фото прикрепил)

Фоновая программа реализует бегущий огонь на светодиодах VD4,VD5,VD6 слева направо, то есть поочередно загораются светодиоды VD4....VD6. По прерыванию INT0 скорость увеличивается, а по прерыванию INT1 - уменьшается.
0
Миниатюры
Бегущий огонь на ATMega8535  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2014, 18:24
Ответы с готовыми решениями:

Бегущий огонь (работа с прерываниями в Atmel Studio 6.1)
Всем привет, изучаю потихоньку программирование микроконтроллеров AVR в частности Atmega32. Изучаю...

Программа "бегущий огонь" на ATMEGA
Написать программу для отображения передвижения двух светодиодов подключенных к порту МК....

Программа "Бегущий огонь" на PIC16f84a
написать программу бегущий огонь на PIC контролере по алгоритму кнопками нажата огонь бежит слева...

Бегущий огонек
Я только начал изучать микроконтроллеры. Читал книгу и там разбирался пример Бегущий огонек....

ШИМ на Atmega8535
Доброго времени суток. MK Atmega8535. Необходимо калибровать яркость светодиода, подключенного к...

15
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
11.11.2014, 20:59 2
Это приказ?
Здесь помогают, а не за Вас пишут.
0
meowlazy
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 6
12.11.2014, 19:01  [ТС] 3
Задача: Фоновая программа реализует бегущий огонь на светодиодах VD4,VD5,VD6 слева направо, то есть поочередно загораются светодиоды VD4....VD6. По прерыванию INT0 скорость увеличивается, а по прерыванию INT1 - уменьшается.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
ПРОГРАММА:
;Подсчет количества прерываний INT0 
;Результат выводится в порт В
 
;Подключение файла обьявления имен регистров ATmega8535
.include "m8535def.inc"
 
.cseg
.org 0
 
;------------------ Вектора прерываний ---------------------------
jmp k: PROG              ;Вектор перехода на начало программы
jmp k: SUBI_INT0         ;Вектор перехода на подпрограмму прерывания INT0
 
;-----------------------------------------------------------------
 
.org $30
 
;Начало программы
PROG:                          ;PROG
   ldi  R16,high(RAMEND)       ;Инициализация стека
   out  SPH,R16
   ldi  R16,low(RAMEND)
   out  SPL,R16
;Инициализация INT0 
                               ;INT.SenseControl=FallingEdge
   ldi  R16,(0<<ISC00)|(1<<ISC01) ;Условие прерывания - спадающий фронт сигнала
   out  MCUCR,R16
   ldi  R16,(1<<INT0)          ;INT.Enable=1 Разрешаем прерывание INT0
   out  GICR,R16
;Обнуление регистра R20  и установка порта В на вывод
   ldi  R20,$00                ;R20=$00
   ldi  R16,$FF                ;DDRB=$FF
   out  DDRB,R16
   sei                         ;Разрешаем прерывания глобально I=1
;Конец программы (бесконечный цикл)
END_PROG:           ;END PROG
ldi r17,0b00001000
rcall zader
ldi r17,0b00000100
rcall zader
ldi r17,0b00000010
rcall zader
   rjmp  END_PROG
 
;-----------------------------------------------------------------
;Начало подпрограммы обработки прерывания от INT1
                               ;SUBI INT0
SUBI_INT0:                     ;Сохраняем регистры R16,SREG в стеке 
   push R16
   in   R16,SREG
   push R16
    ldi r17,0b00001000
    rcall zad
    ldi r17,0b00000100
    rcall zad
    ldi r17,0b00000010
    rcall zad
 
 
   pop  R16                    ;Востанавливаем регистры
   out  SREG,R16
   pop  R16
   reti                        ;END SUBI
;-----------------------------------------------------------------
zader:
ldi r21,0x01
k1:
ldi r22,0xff
m1:
ldi r23,0xff
n1:
dec r23
cpi r23,0x00
brne n1
 
dec r22
cpi r22,0x00
brne m1
 
dec r21
cpi r21,0x00
brne k1
ret
zad:
ldi r21,0x01
k0:
ldi r22,0x55
m0:
ldi r23,0xff
n0:
dec r23
cpi r23,0x00
brne n0
 
dec r22
cpi r22,0x00
brne m0
 
dec r21
cpi r21,0x00
brne k0
ret
Выдает ошибку в jmp k: PROG ;Вектор перехода на начало программы
jmp k: SUBI_INT0 ;Вектор перехода на подпрограмму прерывания INT0

Не знаю что делать ...надеюсь поможете

 Комментарий модератора 
Правила форума:

5.5. Запрещено размещать тему в нескольких подразделах одного раздела одновременно (кросспостинг), а также дублировать тему в одном разделе.
0
pyzhman
795 / 488 / 67
Регистрация: 15.05.2012
Сообщений: 2,768
12.11.2014, 19:34 4
Цитата Сообщение от meowlazy Посмотреть сообщение
программа реализует
Класс! И как? Намётки есть? Используется таймер или программная задержка?
0
pyzhman
795 / 488 / 67
Регистрация: 15.05.2012
Сообщений: 2,768
12.11.2014, 19:40 5
Assembler
1
jmp k
Команда перехода на метку k. У вас их две. Ну и двоеточие с последующим текстом ни в ..., ни в красную армию.

Добавлено через 1 минуту

Не по теме:

Assembler
1
zad:
:) Не, мне нравится этот парень с такими метками!!!

0
meowlazy
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 6
12.11.2014, 20:10  [ТС] 6
это я уже начудил...у меня и без метки "k:" не работало, выдает ошибку в jmp
0
pyzhman
795 / 488 / 67
Регистрация: 15.05.2012
Сообщений: 2,768
12.11.2014, 20:28 7
Да я тоже хорош, поспешил. На самом деле у вас и метки k нет в программе. Теперь по-взрослому, по-настоящему: команды
Assembler
1
jmp
в мк мега8534 не существует.
Как и самой меги8534.

Добавлено через 5 минут
Да и в меге8535 тоже нет такой команды.
0
meowlazy
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 6
12.11.2014, 22:34  [ТС] 8
а есть в меге альтернативная команда этой?

Добавлено через 2 минуты
где ты мега8534 увидел?)
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
12.11.2014, 23:03 9
Цитата Сообщение от meowlazy Посмотреть сообщение
а есть в меге альтернативная команда этой?
http://musmu.narod.ru/atmel/avrasm_rus.html
Цитата Сообщение от meowlazy Посмотреть сообщение
где ты мега8534 увидел?)
Если название поправили, то нечего улыбаться
1
meowlazy
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 6
13.11.2014, 00:45  [ТС] 10
дак там есть команда jmp
0
pyzhman
795 / 488 / 67
Регистрация: 15.05.2012
Сообщений: 2,768
13.11.2014, 05:50 11
Да, по ссылке есть такая команда в таблице. Только вот нет ссылки, что такая команда существует только для меги168 (читать даташит).

Добавлено через 1 минуту
Цитата Сообщение от meowlazy Посмотреть сообщение
где ты мега8534 увидел?
Палец на отсечение даю - вчера в заголовке темы было. Не, ну может мне померещилось, а?
0
raxp
10190 / 6573 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
13.11.2014, 07:52 12
Цитата Сообщение от meowlazy
где ты мега8534 увидел?)
я увидел и поправил.
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
13.11.2014, 08:03 13
Цитата Сообщение от meowlazy Посмотреть сообщение
дак там есть команда jmp
Вот как пользоваться переводной документацией, по моей ссылке дана система команд для всего семейства AVR, а вот для разных подсемейств могут быть и нюансы.
А нюанс в том, что для 8535 если смотреть её даташат команды jmp нет.
Если мне память не изменяет jmp нет для всего подсемейства mega
0
pyzhman
795 / 488 / 67
Регистрация: 15.05.2012
Сообщений: 2,768
13.11.2014, 09:17 14
Из даташита на меги48/88/168
JMP(1)
...
CALL(1)
Note: 1. These instructions are only available in Atmel ATmega168.
2
Voland_
1694 / 1038 / 98
Регистрация: 04.01.2010
Сообщений: 3,513
13.11.2014, 11:43 15
pyzhman, в 328й тоже имеется (посмотрел специально). Ну, это ж одна линейка.
ЗЫ: вообще, получается там ограничение в количество битов адреса команды rjmp, которая адресует только +-2к слов. Короче, если АВР чип объемом 16к и более - то в нем есть команды JMP и CALL.
ЗЫ2: спасибо, не знал.
0
meowlazy
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 6
13.11.2014, 17:55  [ТС] 16
Спасибо за помощь и нужные документации!!!)
0
13.11.2014, 17:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2014, 17:55

atmega8535 таймер
Здравствуйте. У меня всё то же устройство. Задача такая: на шине разные слова. Слова с моим...

Atmega8535. Симулятор
Вообщем столкнулся с микроконтроллером ATmega8535 и нужно сэмулировать выполнение этого кода. Нашел...

АЦП, Atmega8535
Задача. Код программы: .include&quot;m8535def.inc&quot; .cseg .org$0 ldi r16,low(RAMEND) ldi...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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