AVR studio в вопросах и ответах
10 можно откатить обратно, а так если новая ОС, то и нечего брезгать atmelstudio7 
- Реклама
Если это действительно необходимо и без этого никак, работайте с регистрами как с памятью через индексные регистры. Там можно обращаться к ним со смещением, но +1 такт на каждую операцию.
Вроде можно вот так, может сгодиться:emax писал(а):А как в макросе можно создать номер регистра, например хочу так:
Код: Выделить всё
.macro pushw
push @0L
push @0H
.endmacro
pushw z
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Kavka интересно бы взглянуть на фрагмент листинга откомпилированного этого чуда. Всамделе компил поймет, что R25 - это R24H ? Я до сих пор считал, что H и L относятся только к константам.
Не поймет никак, поскольку в стандартном инклуднике эти дефайны определены и связаны с конкретными регистрами, что можно сделать самостоятельно и для ДРУГИХ регистров!
- Реклама
так вот компилится
.def r16l = r16
.def r16h = r17
.macro ldwi
ldi @0l,low(@1)
ldi @0h,high(@1)
.endmacro
ldwi r16,0x1234
но это все регистры определить надо
.def r16l = r16
.def r16h = r17
.macro ldwi
ldi @0l,low(@1)
ldi @0h,high(@1)
.endmacro
ldwi r16,0x1234
но это все регистры определить надо
Так то оно конечно, но для других регистровых пар уже работать не будет. Придется их всех (регистровых пар) определять. Тогда какой смысл в макросе?
Может проще, таки, два регистра в макрос передать?
Во-первых, явно будет указано с чем работает макрос.
Во-вторых, регистры можно в разнобой передавать (в особо извращенских случаях
).
Во-первых, явно будет указано с чем работает макрос.
Во-вторых, регистры можно в разнобой передавать (в особо извращенских случаях
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Дык теряется главное преимущество макроса - ленивость
-- один символ накалякал, а он его раздраконил на два ( и более )
Так вынеси определения всех регистров в отдельный инклуд, подключи его в начале программы и делов. Место не занимает, дополнительный функционал радует.
Приветствую уважаемые радиокоты. Практическое изучение программирования начал с программы Atmel Studio 6,0 . Если не ошибаюсь это и есть AVR studio. По аналогии с видеоуроком попытался скомпилировать файл (кнопкой Build) На что выскочила ошибка (прилагаю). Подскажите пожалуйста, что не так делаю...
========
С этим вопросом уже разобрался. Все дело было в названиях папок. Они должны быть на латиннице. Теперь другая проблема: в протеусе МК почему-то не работает по прошивке... не могу найти косяк, помогите пожалуйста. При этом указанный путь в протеусе на МК почему-то сам выставляется по умолчанию на другой... Прошивку прилагаю (файл hex).
========
С этим вопросом уже разобрался. Все дело было в названиях папок. Они должны быть на латиннице. Теперь другая проблема: в протеусе МК почему-то не работает по прошивке... не могу найти косяк, помогите пожалуйста. При этом указанный путь в протеусе на МК почему-то сам выставляется по умолчанию на другой... Прошивку прилагаю (файл hex).
- Вложения
-
- GccApplication1.hex
- (447 байт) 143 скачивания
-
- сам код.c
- (601 байт) 264 скачивания
-
- Output-Build.txt
- (981 байт) 122 скачивания
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Ваша прошивка работает в Proteus. Да и код написан верно. Когда задаете вопрос указывайте какой микроконтроллер используете.
Скинте свой проект в Proteus-е.
Скинте свой проект в Proteus-е.
Все гениальное - просто
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
В цикле while должно быть так:
по ошибке - в путях видны крякозябры, уберите русские буквы из пути и имени файлов.
Код: Выделить всё
//Подать сигнал
PORTB = 0xFF
c717411, этот момент по крякозябрам я уже уяснил, все исправил. Спасибо.
Но почему на данный момент (все нормально без ошибок компилируется) эта прошивка не заряжается в протеусе в атмегу8? Проект протеуса выложил пару сообщений назад по имени "1"
Но у меня так и есть там. Или что именно вы имеете в виду, не ставить точку с запятой в конце?В цикле while должно быть так:
Код:
//Подать сигнал
PORTB = 0xFF
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
нет, у Вас тамОлегыч1 писал(а): Но у меня так и есть там.
Код: Выделить всё
//Подать сигнал
DDRB = 0xFF;- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Это я что то внимательно не посмотрел Ваш код. С717411 правильно заметил, вот ваш код, который вы скидывали раньше:
А должно быть
Какой версией протеуса Вы пользуетесь? Какие видеоуроки смотрите?
Код: Выделить всё
int main(void)
{
preset();
while(1)
{
//Подать сигнал
DDRB = 0xFF;
//Выдержать время
_delay_ms(1000);
//Убрать сигнал
PORTB = 0x00;
//Выдержать время
_delay_ms(1500);
}
} Код: Выделить всё
int main(void)
{
preset();
while(1)
{
//Подать сигнал
PORTB = 0xFF;
//Выдержать время
_delay_ms(1000);
//Убрать сигнал
PORTB = 0x00;
//Выдержать время
_delay_ms(1500);
}
} Все гениальное - просто
исправил. Все тоже самое
Видеоурок:
https://www.youtube.com/watch?v=u-iI6EDUtA4
Здесь кстати об этом упоминулось. Но у меня почему-то не получается запустить в протеусе свой МК по данному коду. Вернее видно, что код действует... Но светодиоды не горят. Не могу с землей понять как быть... Поставил батарейку, но светодиоды все равно не загораются...
Версия протеуса - 8
На всякий случай еще раз выложу конечный исправленный код
и проект протеуса по имени "2"
https://www.youtube.com/watch?v=u-iI6EDUtA4
Здесь кстати об этом упоминулось. Но у меня почему-то не получается запустить в протеусе свой МК по данному коду. Вернее видно, что код действует... Но светодиоды не горят. Не могу с землей понять как быть... Поставил батарейку, но светодиоды все равно не загораются...
Версия протеуса - 8
На всякий случай еще раз выложу конечный исправленный код
и проект протеуса по имени "2"
- Вложения
-
- 2.rar
- (15.92 КБ) 144 скачивания
-
- Исправленный код.c
- (561 байт) 262 скачивания
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
Все у Вас сделано теперь правильно и должно работать. Выкладывайте на будущее сразу в архиве проект протеуса, исходник и hex, ибо иногда лень или нечем компилировать.
При симуляции в протеусе резисторы в цепях диодов можно (даже нужно) не ставить, не надо загружать симулятор лишними деталями. Батарею тоже.
При симуляции в протеусе резисторы в цепях диодов можно (даже нужно) не ставить, не надо загружать симулятор лишними деталями. Батарею тоже.



