Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 185; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.79.70 (0.017 с.) |