С удивлением недавно узнал, что оказывается, если создать файл с расширением .S (именно с большой S) и покласть его в директорию с .ino, то в этом файле можно невозбранно писать текст не на встроенном в Си ассемблере, а на "чистом", без всяких кавычек и прочей х-ни. Создайте какой нить простенький проект в Arduino IDE. Потом в любом текстовом редакторе наберите Код (C++): #include <avr\io.h> .global MyAsmFunc MyAsmFunc: ldi r24,lo8(str_01) ; пхаем в возвращаемые регистры ldi r25,hi8(str_01) ; адрес строки лежащей по метке str_01 ret ; Эта строка валяеца в PROGMEM str_01: .asciz "My unique string in PROGMEM" и сохраните его как AsmTest.S в той же директории, что и файл проекта .ino В самом проекте напишите Код (C++): /* Name: AsmTest.ino Created: 23.01.2020 14:36:10 Author: DtS */ #include <Arduino.h> // Функции из ассемблера не подвергаюца "маскарадингу" лжывого С++ // поэтому они мало того, что "extern", дак еще и "extern "C"" // extern "C" { extern __FlashStringHelper *MyAsmFunc(void); // функция должна возвратить указатель на строку в PROGMEM } void setup() { Serial.begin(115200); delay(250); Serial.println(F("AsmTest started...\n")); // печатаем нашу нещасную строку // Serial.println(MyAsmFunc()); // печать строки из PROGMEM } void loop() { } ничего никуда подключать не надо, компилятор как-то сам понимает, что AsmTest.S тоже надо транслировать. Запустите и посмотрите что получица. Мне счас приходится ковыряться с AVR ассемблером, поэтому буду разбираться, если интересно, буду писать заметки.
у мня таких нет, но срочно надо в Тини85 утолкать то, что в 328 не влазит, да еще с Pico Power. Вот и потянуло на прекрасное.