[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Уважаемые корифеи и просто знающие компилятор 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