[an error occurred while processing this directive] [an error occurred while processing this directive]
Наберусь наглости повторить вопрос по IAR 1.40C
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Фомич 15 декабря 2001 г. 19:41

Уважаемые корифеи и просто знающие компилятор IAR 1.40C,
помогите разобраться начинающему...
Прога на Си имеет вставки на ассемблере,
как сделать правильно, чтобы ассемблер обращался к нужной
ячейке памяти , которая уже обявлена в Си, например как
символьная переменная...
Чтобы было совсем понятно и Вам и мне вот пример,
#include io8535.h
#include ina90.h
unsigned char a1, b1;
extern void out_pd(void);
void Init(void)
{
DDRC=0xff;
DDRD=0x0f;
}
void main(void)
{
Init();
a1=0x55;
b1=0x03;
while (1)
{ out_pd();
}
}

NAME out_pd
#include io8535.h ; подключаемый модуль
PUBLIC out_pd ; Объявление,что символы экспортированные в функцию C
RSEG CODE ; Этот код - переместимый,
out_pd: ; метка, старт выполнения здесь
clr r16 ; сброс R16
clr r17 ; сброс R17
lds R16,a1 ; Прочитать код из ячейки памяти "а1" объявленную
; в С программе в R16
out PORTC,R16
lds r17,b1 ; Прочитать код с ячейки памяти "b1" объявленную
; в С программе в R17
out PORTD,R17 ; Вывод данных в регистр порта
ret ;возврат
END


При компиляции ассемблерного куска появляется сообщение,
Error[50] Undefined symbol: 'a1' 'b1'

Вопрос: что я делаю неправильно?...


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru