Читать «Занимательно о микроконтроллерах» онлайн - страница 185

Александр Владимирович Микушин

int *fun (intx, int *y);

будет интерпретироваться как объявление функции fun, возвращающей указатель на int.

Вызов функции при помощи указателя fun возможен только после инициализации этого указателя. Вызов самой функции при этом будет выглядеть следующим образом:

(*fun)(i,&j);

В этом выражении для получения адреса функции, на которую ссылается указатель fun, используется операция *.

Указатель на функцию может быть передан в качестве параметра функции. При этом разадресация происходит во время вызова функции, на которую ссылается указатель на функцию. Присвоить значение указателю на функцию можно в операторе присваивания, употребив имя функции без списка параметров.

Пример:

double (*fun1)(int x, int y);

double fun2(int k, int l);

     fun1=fun2;        /* инициализация указателя на функцию */

     (*fun1) (2,7);    /* обращение к функции                         */ 

В рассмотренном примере указатель на функцию fun1 описан как указатель на функцию с двумя параметрами, возвращающую значение типа double, и также описана функция fun2. В противном случае т. е. когда указателю на функцию присваивается адрес функции, описание которой отличается от описания указателя, произойдет ошибка.

Рассмотрим пример использования указателя на функцию в качестве параметра функции, вычисляющей производную от cos(x).

Итак, подведем итоги

В данной главе было приведено краткое описание языка программирования С-51. Использование этого языка позволяет сократить время разработки программ для микроконтроллеров. В большинстве случаев ресурсов выбранного микроконтроллера более чем достаточно для реализации требуемого алгоритма. Это позволяет использовать для создания программы язык С-51. В главе показаны примеры использования С-51 для управления микроконтроллером. Этот язык позволяет создавать достаточно сложные программы при минимальных затратах времени.

Однако следует помнить, что ничего не бывает бесплатно. Избавляя от одних проблем, язык программирования С-51 приводит к другим. Как это неоднократно подчеркивалось в тексте главы, при программировании на языке С-51 необходимо чрезвычайно тщательно выбирать типы используемых переменных и следить за их правильным использованием.

При неправильном выборе типов можно значительно увеличить объем программы и снизить ее быстродействие по сравнению с программой, написанной на языке программирования ассемблер.

Ну, вот мы и закончили краткое рассмотрения принципов работы с микроконтроллерами. Надеюсь, что эта книга поможет вам начать работать с этими устройствами, получившими широчайшее распространение в настоящее время. Принципы работы с микроконтроллерами различных типов практически не отличаются от рассмотренного в данной книге MCS-51, поэтому, я думаю, вы легко сможете применить знания, полученные из этой книги, для разработки устройств на любых контроллерах.

Приложение

Справочные данные по системе команд микроконтроллера MCS-51 и кодировке символов