Курс лекций - Микропроцессоры


Многомодульные программы - часть 3


 Наименьшая вероятность ошибиться при описании переменных и подпрограмм у программиста, который писал исходный текст модуля, к подпрограммам и переменным которого нужно обращаться из других модулей. Поэтому правила хорошего тона предполагают, что этот программист будет поставлять не только объектный модуль, но и файл описания своих переменных с атрибутом EXTERNAL. Такие файлы называются файлами заголовками и обычно записываются с расширением *.h. Пример исходного текста модуля приведён ниже:

/*Исходный текст модуля comm.plm*/ $CODE $NOLIST Kommand: do; $INCLUDE (C:\COMP\PLM51\BIN\Rg51FA.Dcl) $INCLUDE (stdio.h) /*Подключение других файлов заголовков*/ $INCLUDE (dcl.h) $LIST declare NomPult byte external, Bufer(7) byte external, RejRab byte public, NomKan word public, PrmSoob: procedure using 2; declare i byte; for i=0 to KolBytes; do while not RI;end; BufInd(i)=SBuf; RI=0; end; Soob=true; end PrmSoob; PriemKom: procedure interrupt 4 using 2; KodKom=(SBuf and 0f0h)/16; KolBytes=SBuf and 0fh; RI=0; If KodKom=KomSoob then call PrmSoob; If KodKom=KomSost then call PrmSost; end PriemKom; /*------- Конец модуля ---------*/

Исходный текст файла-заголовка этого модуля:

/*Начало файла заголовка comm.h*/ declare RejRab byte external, NomKan word external, PriemKom:procedure external;end PriemKom; /*------- Конец файла заголовка---------*/

Теперь для того, чтобы воспользоваться приведённым выше модулем достаточно записать строку:

$INCLUDE (comm.h)

Естественно, так как процесс трансляции разбит на два этапа, то ошибки могут возникать не только на этапе трансляции модулей, но и при связывании модулей в исполняемую программу. Наиболее распространённые ошибки - это забыть включить имя объектного модуля в строку вызова редактора связей, забыть объявить переменную или подпрограмму как PUBLIC или использовать одни и те же адреса для переменных или констант в различных модулях. Сообщения об этих ошибках выводятся в файл с расширением *.m51.

Полный путь написания программ на языке программирования plm51 показан на рисунке 1 файла .

[] []




Начало  Назад  Вперед