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

Подпрограммы процедуры


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

... G_Per=56; PeredatByte(); ... G_Per=37; PeredatByte(); ... /********************************************** Подпрограмма передачи байта через последовательный порт **********************************************/ void PeredatByte(void) {do;while(TI==0)//Если предыдущий байт передан SBUF=G_Per //то передать очередной байт }

Рисунок 1. Пример подпрограммы - процедуры.

Часто подпрограмма должна выполнять действия над каким то числом, значение которого неизвестно в момент написания программы. Это число можно передать через глобальную переменную как показано на рисунке 1. Однако намного удобнее использовать подпрограмму с . На языке высокого уровня вызов такой подпрограммы будет выглядеть следующим образом:

... PeredatByte(56); ... PeredatByte(57); ... /******************************************************* Подпрограмма передачи байта через последовательный порт ********************************************************/ void PeredatByte(char byte) {do;while(TI==0) //Если предыдущий байт передан SBUF=byte; //то передать очередной байт }

Рисунок 2. Пример подпрограммы - процедуры с передачей данных через параметр подпрограммы.

Сравните с программой, приведённой на рисунке 1. Как по вашему, какая из программ более наглядная? В подпрограмму можно передавать и значительные объёмы данных, как например:

PeredatStroky("Напечатать строку");

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



Содержание раздела