![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Приоритеты выполнения операцийСодержание книги
Поиск на нашем сайте
В языке С‑51 операции с высшими приоритетами вычисляются первыми. Наивысшим приоритетом является приоритет равный 1. Приоритеты и порядок операций приведены в табл. 22.6. Порядок вычисления выражения следующий: сначала выполняются операторы в круглых скобках, в них от старшего приоритета к младшему, а среди равнозначных операторов — слева направо. Таблица 22.6.
Операторы языка программирования C-51 В языке программирования C‑51 используется два типа операторов: операторы объявления и выполняемые операторы. Все операторы C‑51 заканчиваются точкой с запятой. Операторы объявления Объявление является неисполняемым оператором, который объявляет некоторый объект или набор объектов, связывает с ним один или несколько идентификаторов и, если это необходимо, распределяет память микроконтроллера. В объявлении могут быть объявлены три типа объектов: переменные, метки и функции. В программе для каждого имени допустимо только одно объявление. Метка полностью объявлена, если она стоит перед выполняемым оператором и заканчивается с двоеточием ‘:’. Например: vfg: svGorit(); //Вызов подпрограммы с именем svGoritПеременные, константы, литералы и подпрограммы должны быть объявлены раньше, чем они будут использоваться в исполняемом операторе. Объявление переменной заключается в задании типа этой переменной и ее имени. Тип переменной записывается перед именем переменной. Например: char Rejim; //Переменная, хранящая номер режима размером в один байтint Schet; //Переменная, использующаяся как счётчик размером в два байта
В языке программирования C-51 нет необходимости знать конкретный адрес переменной, достаточно обратиться к ней по имени Rejim или Schet. Функция объявляется точно так же как и переменные. То есть перед именем подпрограммы-функции записывается тип переменной, которую возвращает подпрограмма после своего завершения. Так как в подпрограмму в свою очередь тоже могут передаваться переменные, которые называются параметрами подпрограммы, то эти переменные записываются в скобках после имени подпрограммы-функции. Перед каждой переменной обязательно указывается ее тип. Например: char PrinjatByte(void); //Подпрограмма, предназначенная для приёма одного байта. Так как подпрограмме приёма обычно не требуется никаких дополнительных переменных, то вместо переменной-параметра подпрограммы указано слово void, обозначающее, что у подпрограммы-функции нет параметров. Исполняемые операторы ú Оператор присваивания: ú Условный оператор. ú Структурный оператор. ú Оператор цикла for ú Оператор цикла с проверкой условия до тела цикла ú Оператор цикла с проверкой условия после тела цикла ú Оператор continue ú Оператор выбора ú Оператор безусловного перехода ú Оператор выражение ú Оператор возвращения из подпрограммы ú Пустой оператор При вычислении операторов используются выражения, в состав которых входят одноместные, двухместные и трёхместные операции. Оператор присваивания Оператор присваивания записывается в виде: Переменная=выражение; Выражение вычисляется, и полученное значение присваивается переменной. Например: P0=2; //Установить начальные потенциалы на ножках второго порта микроконтроллераa=cos(b*5); //Этот оператор присваивания осуществляет вызов подпрограммы-функции. Достаточно часто требуется изменять значение какой-либо переменной. То есть и источником и приёмником данных служит одна и та же переменная. В этом случае можно воспользоваться составным оператором присваивания. Использование составного оператора сокращает исходный текст программы. Например: sum+=3; //Оператор эквивалентен оператору sum=sum+3;Umensh-=5; //Оператор эквивалентен оператору Umensh=Umensh-5;a*=10; //Оператор эквивалентен оператору a=a*5;mask&=0x10;/* Оператор эквивалентен оператору mask=mask&5; Обычно используется для записи нулей в определённые биты переменной */ Условный оператор Оператор if обеспечивает условное выполнение операторов. Он записывается в следующей форме: if(<выражение>) <operator-1>; [else <operator-2>;] При этом ключевое слово else со следующим за ним исполняемым оператором представляют собой необязательную часть условного оператора. Если результат вычисления выражения равен 1 (истина), то выполняется operator-1. Если результат вычисления выражения равен 0 (ложь), то выполняется operator-2. Если выражение ложно и отсутствует оператор-2, то выполняется оператор, следующий за условным. Пример записи условного оператора: if(Wes<Min) /*Условная операция*/ Schetch=Schetch+1; /*Плечо 1*/ else Schetch=0; /*Плечо 2*/ В качестве условия могут быть использованы не только операции отношения. Напомню, что операции отношения вычисляют битовую величину. Поэтому в условном операторе могут быть использованы любые битовые переменные, в том числе ножки портов и подпрограммы-функции, возвращающие битовое значение. Использование битовых переменных и подпрограмм позволяет увеличить читаемость исходного текста программы. Примеры использования битовых переменных и подпрограмм-функций в условном операторе: if(P1.5)fnKn5Naj(); /* В этом примере предполагается, что к пятой ножке порта P1 подключена кнопка с надписью "5"*/ if(Kn5Naj)fnKn5Naj(); /* Этот пример эквивалентен предыдущему, но ножке P1.5 поставлена в соответствие переменная Kn5Naj*/ if(PrinjatByte())DecodCmd(); /* Предполагается, что функция PrinjatByte возвращает значение '1', если байт принят*/ В приведённом примере использована подпрограмма-функция, осуществляющая приём байта из последовательного порта. В названиях подпрограмм отображены действия, выполняемые этими подпрограммами. Структурный оператор {} Существует два основных способа использования структурного оператора: 48. Структурный оператор может рассматриваться в качестве отдельного оператора языка С-51 и использоваться в программе везде, где может встречаться отдельный исполняемый оператор. Это используется в операторах for, while, do while, switch of и if; 49. Структурный оператор ограничивает область действия локальных переменных. Каждый оператор внутри структурного оператора может являться любым оператором языка C‑51, в том числе и объявлением, при условии, что все объявления внутри структурного оператора должны быть выполнены до первого исполняемого оператора. Структурный оператор начинается с открывающей скобки ‘{‘ и записывается в следующем виде: {<operator-1>; //Здесь могут быть объявления переменных <operator-2>;... <operator-n>;} Заметим, что в конце составного оператора точка с запятой не ставится. Пример использования структурного оператора: if(Wes<Min) /*Условная операция*/ {incr=incr*2; /*Структурный оператор*/ Schetch=Schetch+1; /*Содержит два оператора*/ } Структурные операторы могут вкладываться друг в друга: {<operator-1>; <operator-2>; {<operator-A>; <operator-B> <operator-C>; } <operator-3>; <operator-4>;} Пример использования объявлений внутри вложенного структурного оператора: int main () {int q,b; float t,d;... if(...) {int e,g; float f,q;... }... return (0); } Переменные e, g, f, q будут уничтожены после выполнения составного оператора. Отметим, что переменная q является локальной в составном операторе, т.е. она никоим образом не связана с переменной q объявленной в начале функции main с типом int. Отметим также, что выражение стоящее после return может быть заключено в круглые скобки, хотя наличие последних необязательно. Оператор цикла for Оператор for — это наиболее общий способ организации цикла. Оператор цикла for записывается в следующей форме: for (выражение 1; выражение 2; выражение 3) тело цикла; Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 — это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла. В качестве тела цикла может служить любой исполняемый оператор языка C‑51, в том числе и составной оператор. Внутри составного оператора может быть заключено любое количество исполняемых операторов. Схема выполнения оператора for: 50. Вычисляется выражение 1. 51. Вычисляется выражение 2. 52. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.
Обратите внимание, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным. Пример использования оператора for: for(i=1;i<10;i++) //от i равного 1 до 10 с шагом 1 выполнить b=i*i; В этом примере вычисляются квадраты чисел от 1 до 9. Некоторые варианты использования оператора for повышают его гибкость за счет возможности использования нескольких переменных, управляющих циклом. Пример: int main() {int top,bot; char string[100],temp; for(top=0,bot=100;top<bot;top++,bot--) {temp=string[top]; string[bot]=temp; } return 0; } В этом примере, реализующем запись строки символов в обратном порядке, для управления циклом используются две переменные top и bot. Отметим, что на месте выражение 1 и выражение 3 здесь используются несколько выражений, записанных через запятую, и выполняемых последовательно. Так как согласно синтаксису языка С‑51 оператор может быть пустым, тело оператора for также может быть пустым. Такая форма оператора может быть использована для организации поиска. Пример: for(i=0;t[i]<10;i++); В данном примере переменная цикла i принимает значение номера первого элемента массива t, значение которого больше 10. При написании программ для микроконтроллеров достаточно часто требуется реализовать бесконечный цикл. В этом случае оператор цикла for принимает следующий вид: for(;;) //Постоянно {Knop=P2; //опрашивать порт P2 ObrabSobyt(); //и обрабатывать нажатие кнопок } Оператор цикла for — это универсальный оператор, поэтому его реализация в машинных командах достаточно сложна. Для написания программ часто достаточно более простых операторов цикла. Использование таких операторов обычно приводит к более компактным и быстродействующим программам, однако это не относится к языку программирования C‑51. В компиляторе языка программирования C‑51 именно этот оператор оптимизирован наилучшим образом.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 255; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.136 (0.008 с.) |