реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вопрос AVR AvrStudio 4.11 ASM и С, вопрос и проблемма
BlauTood
сообщение Mar 16 2005, 06:57
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 11-10-04
Пользователь №: 841



Вставил в рабочий ASM код сишную вставку, а в дебагере построчно нельзя его пройти. Он его пропускает. Вот и сам собственно вопрос - это глюк или так и должно быть?


--------------------
Сделать можно ВСЕ, но это нужно делать.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 16 2005, 11:41
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(BlauTood @ Mar 16 2005, 09:57)
Вставил в рабочий ASM код сишную вставку...
*

Что-то новенькое! Я раньше слышал об ASM вставках в C код.
Небольшой примерчик, если не сложно.
Кроме того есть вопросы:
- в какой среде это собиралось и с какими настройками;
- какой выходной формат был получен??
Go to the top of the page
 
+Quote Post
BlauTood
сообщение Mar 16 2005, 14:00
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 11-10-04
Пользователь №: 841



Выдержка из AVR studio HELP
This section introduces new features in AVRASM2 compared to AVRASM1.x.

C-style Preprocessor
Tightened Syntax
New assembler directives
Improved expression evaluation
Built-in "known place" for included files
Motorola hex for large files
Macro improvements
AVRASM2 Changelog

C-style preprocessor
AVRASM2 features directives modeled after the C preprocessor; see AVR Assembler 2 Preprocessor. Preprocessor symbols may be defined and undefined from the command line.


Все пишется в AVR Studio 4.11
Выходной HEЧ. ошибок при компиляции недает.


--------------------
Сделать можно ВСЕ, но это нужно делать.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 16 2005, 14:24
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



В указанном документе речь идёт о директивах препроцессора в стиле C, а не о коде на C, а именно:
#define, #elif, #else, #endif, #error, #if, #ifdef, #ifndef, #include, #message, #pragma, #undef, #warning, # (empty directive)
В AVR Studio проекты можно создавать и компилировать принципиально только на ассемблере.
Но, тем не менее, если собрать смешанный или чистый на С проект от другого производителя ПО (IAR, Keil, ...) и получить выходной файл подходящего формата (ubrof8, elf, ...), то отлаживать можно и в AVR Studio.
Go to the top of the page
 
+Quote Post
BlauTood
сообщение Mar 17 2005, 07:32
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 11-10-04
Пользователь №: 841



Спасибо. Теперь понятно. Жалко, что нельзя sad.gif(


--------------------
Сделать можно ВСЕ, но это нужно делать.
Go to the top of the page
 
+Quote Post
BlauTood
сообщение Mar 17 2005, 10:41
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 11-10-04
Пользователь №: 841



Видимо я не правильно понял и соответственно не правильно написал
Вот кусок примера моей программы

predscan:
.if PINA == 0 || PINC == 0 || PIND == 0
rjmp predscan
.else
rcall delay
rjmp scan
.endif

если все правильно написанно, то он ее компелирует, а если например точку не поставлю (.if), то пишит уже ошибку.


--------------------
Сделать можно ВСЕ, но это нужно делать.
Go to the top of the page
 
+Quote Post
vetal
сообщение Mar 17 2005, 10:50
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



А чего вы хотели добиться? Препроцессор это не исполняемый код. Он служит только для управления процессом компиляции.
И следовательно у вас останется :
либо rjmp predscan
либо rcall delay \n rjmp scan
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 17 2005, 12:16
Сообщение #8


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Под директивой .if должно стоять константное выражение, результат которого известен на момент КОМПИЛЯЦИИ.
В Вашем же случае Вы хотели осуществлять анализ содержимого регистров, а получили анализ их адресов, т. к. в файле *.inc, где описываются эти регистры, им присвоены значения типа
Код
.equ    PINA    = 0x19
.
Синтаксически у Вас написано правильно, но то ли это, что Вам нужно?
Означает это следующее:
если адрес одного из регистров равен нулю
оставить в программе rjmp predscan
иначе оставить в программе rcall delay \n rjmp scan.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016