Александр Микушин - Занимательно о микроконтроллерах стр 74.

Шрифт
Фон

2. Происходит присваивание значений фактических параметров соответствующим формальным параметрам.

3. Управление передается на первый оператор функции.

4. Выполнение оператора return в теле функции возвращает управление и, возможно, значение в вызывающую функцию. При отсутствии оператора return управление возвращается после выполнения последнего оператора тела функции, а возвращаемое значение не определено.

Адресное выражение, стоящее перед скобками, определяет адрес вызываемой функции. Это значит, что функция может быть вызвана через указатель на функцию.

Пример объявления переменной указателя на функцию:

int (*fun)(int x, int *y);

Здесь объявлена переменная fun как указатель на функцию с двумя параметрами типа int и указателем на int. Сама функция должна возвращать значение типа int. Круглые скобки, содержащие имя указателя fun и признак указателя *, обязательны, иначе запись

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 и кодировке символов

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Александр Микушин - Занимательно о микроконтроллерах

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке