Я основной разработчик и концептор сайта
http://www.swordgreenline.narod.ru/До этого я разрабатывал некоммерческий софт для нашего сайта на асме.
По просьбам пользователей сейчас пробую прикрутить коммуникационный драйвер на СИ.
Т.е.
1 есть рабочий драйвер на СИ
2 есть отлаженная программа на асме
и я хочу объединить их.
на СИ всё переписать нереально - элементарно не влезет...
пишу под ATMega8с вопросом сборки проекта на си я разобрался...
поставил avr-gcc. Пакет avr-gcc на платформе Windows входит в состав пакета WinAVR.
собираю через Makefile и получаю рабочий хэкс.
Теперь подходим к вопросу как делать вставки на асме в программу СИ
мне нужен массив.
как я понял на СИ массив и переменная его заполненности объявляются так:
#define My_BUFLEN 254
static unsigned short My_buf[My_BUFLEN];
static uchar My_head = 0;
теперь вопрос
1) как правильно объявить асм вставку?
2) из асма обратиться к массиву?
3) можно ли создать процедуру на асме вызываемую с СИ?
на Си в коде есть ещё одна структура
static uchar Buffinput[6] = { 1, 0,0,0,0,0, }
как обратиться к ней на асме?
Как на си объявить обработчик прерывания по переполнению таймера
на асме это выглядит так
.org OVF0addr ; Overflow0 Interrupt Vector adres
rjmp OVF0handler ; Прерывание по переполнению
ниже
OVF0handler:
действие
reti
Сообщение отредактировал QuickWitted - Dec 2 2008, 14:36