Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Есть вопрос
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
mpavela2011
В одном файле есть вот это

?XD?f91x SEGMENT XDATA INPAGE ; define a SEGMENT of class XDATA
RSEG ?XD?f91x
PUBLIC U1_RAM,START_U1,TEST_U1
U1_RAM: DS 1
START_U1: DS 1 ;
T1U: DS 2 ;
T_U1: DS ;
IRTHU1: DS 2 ;
TEST_U1: DS 1

В другом файле вот это


$NOLIST
$INCLUDE(C8051F120.INC) ;
$INCLUDE(Conf_Prot.INC) ;
$LIST

PUBLIC FUNC
EXTRN DATA(AMPL1H,AMPL2H,AMPL3H,AMPL0H,I2)
EXTRN DATA(VOLTABH,VOLTACH,VOLTBCH,VOLT0H,U2)
EXTRN BIT(CONS_TIME,TST_SRAB)

EXTRN XDATA(INP_RAM_SPA,IN_SGC,LSH_RAM,LOGIC_RAM,U2_M_RAM,SGF6,U1_RAM)
;EXTRN XDATA (SGF6,U1_RAM)
EXTRN IDATA(Imax,Imin,INP_VAL)
;if F_FREQ ;-MPA
EXTRN DATA(FREQ)


Почему такая ошибка ????

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: U1_RAM
MODULE: A_FUNC.OBJ (A_FUNC)

Ведь Переменная U1_RAM в одном файле обьявлена как PUBLIC а в другом как EXTRN - все должно быть нормально


Пишу КОД для силикиносвского процессора С8051F120 в среде Silabs IDE
mpavela2011
Товарищи программисты, неужели мне ничем нельзя помочь ????

компилятор ругается на второй файл, где написано
EXTRN XDATA(INP_RAM_SPA,IN_SGC,LSH_RAM,LOGIC_RAM,U2_M_RAM,SGF6,U1_RAM)
XVR
А вы объектник от первого файла на линковку подать не забыли?
mpavela2011
if OVER_U2
EXTRN CODE(TRIP_U2_M)
EXTRN XDATA(U2_M_RAM)
CLR F1
LCALL TRIP_U2_M ;
;endif1

EXTRN XDATA (U2_M_RAM) ;
EXTRN XDATA (SGF6,U1_RAM) ;

MOV DPTR,#U1_RAM
MOVX A,@DPTR
;CLR ACC.1 ;
MOV C,ACC.1 ;
MOV DPTR,#SGF6
MOVX A,@DPTR
;CLR ACC.4 ;
ANL C,ACC.4 ;
MOV DPTR,#U2_M_RAM
MOVX A,@DPTR
ORL C,ACC.1 ;
MOV DPTR,#IN_SGC+1 ;
MOVX A,@DPTR
ORL C,ACC.5 ;
CPL C
MOV F1,C
;else
; CPL F1 ;
endif2


так все нормально, но мне нужно не так, мне нужно чтобы endif2 был закоментирован, а endif1 раскоменитрован - так появляются предупреждения !

XVR, первый файл на линковку подается - все нором проверил.

акцентирую внимание что компилятор ругается на переменную U1_RAM
XVR
С Silabs не работал, в том, что приведено криминала не вижу, увы sad.gif
mpavela2011
если в первом файле

XD?f91x SEGMENT XDATA INPAGE ; define a SEGMENT of class XDATA
RSEG ?XD?f91x
PUBLIC U1_RAM,START_U1,TEST_U1

может быть во втором файле после EXTRN надо писать другой тип - какой ?
Smoky
Уважаемые коллеги, есть ли ограничение на количество параметров передаваемых в функцию?
XVR
Цитата(дымок @ Jun 25 2011, 19:03) *
Уважаемые коллеги, есть ли ограничение на количество параметров передаваемых в функцию?
Это вы о чем? Какая функция? Какие параметры?

Smoky
Цитата(XVR @ Jun 26 2011, 00:37) *
Это вы о чем? Какая функция? Какие параметры?


Прошу прощения если я не внятно задал вопрос но в учебнике описано такое правило описания функций:

тип_возвращаемого_значения имя_функции(список_параметров,...,...)

есть ли ограничение в количестве аргументов в списке параметров?
XVR
Цитата(дымок @ Jun 26 2011, 15:25) *
тип_возвращаемого_значения имя_функции(список_параметров,...,...)
есть ли ограничение в количестве аргументов в списке параметров?

Стандарт языка С количество параметров не ограничивает. Конкретные реализации компиляторов на конкретные семейства МК могут иметь какие то ограничения (лично мне таковые неизвестны)
Smoky
Цитата(XVR @ Jun 26 2011, 21:51) *
Стандарт языка С количество параметров не ограничивает.


Спасибо, что развеяли мои сомнения.
demiurg_spb
Может не совсем в тему...
Если возникает такой вопрос, смею предположить, что у Вас недоработочка архитектуры программы.
Вы о структурах слыхали?sm.gif Объявляете структуру с любым кол-вом полей и передаёте в функцию указатель на неё.
На мой взгляд так симпатичнее и эффективнее.
Удачи!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.