Ассемблер и c++, совместное использование.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Аватара пользователя
Сообщения: 5
Зарегистрирован: Вт апр 07, 2009 06:28:24

Сообщение warlock114 »

Возникла необходимость совместить язык программирования си++ и ассемблер для написания программы для мк. attiny2313, первой попыткой был avrstudio4.18 там доступны два компилятора: первый- AtmelAVRAssembler, второй-AVR GCC(WinAvr), асcемблер и си++ соответственно но их можно использовать только по отдельности, тоесь писать только на ассемблере в первом случае, и во втором только на си, знаю что можно интегрировать код асм
в код си++ командами #asm..код..#asmend(вроде...) но попытка не увенчалась успехом, вернее две попытки, вторая- я попытался интегрировать код на асме в среде CVAVR тоже, при настройке портов возникла ошибка-уже при линковке(Shift+f9) как я понял, компилятор не понял команду out Portd, R19;( предварительно в регистр записав значение) еще думал над тем как интегрировать код си++ непосредственно в асм. может быть прописав как функцию(си++) и вызывать в начале кода(асм), типа того.. .include "c++.h":) Если есть предложения пожалуйста дайте разъяснительный ответ. С большим уважением Алексей.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

warlock114 писал(а):как я понял, компилятор не понял команду out Portd, R19;
По тому что компилятор не понял, что такое PortD.
Попробуйте записать вместо PortD его физический адрес(значение). Адрес можно узнать из АСМовских заголовочников(например для тини 2313 будет файл tn2313def.inc) под конкретный контроллер. Мне пока не приходилось делать ассемблерных вставок с Сишных кодах, по этому не знаю, сработает или нет.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 136
Зарегистрирован: Сб авг 15, 2009 21:26:50
Откуда: Пенза

Сообщение andrey_artemov »

DX168B писал(а):Мне пока не приходилось делать ассемблерных вставок с Сишных кодах, по этому не знаю, сработает или нет.
Как это не приходилось - а как-же

Код: Выделить всё

 #asm("sei")
:)) :)) :))
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Ну это да, а вот работать с периферией и портами при помощи вставок не приходилось.
В Сях под AVR я ещё новенький, а вот АСМ уже как самого себя знаю. :)
C++ для ПК вроде знаю нормально. Писал всякую хрень под MFC и консольные приложения в Visual Studio. :)

Вот что я нарыл в заголовочнике тн2313й:
tn2313def.inc писал(а): .equ PORTB = 0x18
Значит попробуй записать так:

Код: Выделить всё

out 0x18, r19
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»