- •Обучение : Программирование на Си для pic
- •Как работает мк. Программа в мк. Области памяти в мк.
- •Байты и биты.
- •Переменные и константы.
- •Как и какие микроконтроллеры будем программировать?
- •Установка mplab 8.30 и интеграция picc Compiler 9.50.
- •Создание проекта с помощью волшебника (wizard)
- •Программа №1. «Рыба».
- •Как работают функции. Комментарии.
- •Физиололгия работы программы в мк.
- •Программа №2. «Продолжение рыбы». Именование портов и линий
- •Регистры портов. Определение направлений работы линий.
- •Ифы, форы, вайлы или основы интеллекта. Истина не ложь
- •For (в течение)
- •While (пока)
- •Switch-case-break (выбрать набор и выйти)
- •Return (возврат)
- •Избыточный займ и переполнение
- •Составление проекта из нескольких файлов исходников
- •На что обратить внимание в примерах?
- •Массивы.
- •Void perebor void{ // начало функции «перебор»
- •Динамическая индикация. Прерывания. Структуры
For (в течение)
Синтаксис
for (выражение1; выражение2; выражение3) тело;
Оператор for – это наиболее общий способ организации цикла.
Выражение 1 обычно используется для установления начального значения параметра цикла. Выражение 2 – это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет закон изменения параметра цикла после каждого выполнения тела цикла.
При выполнении оператора for сначала вычисляется выражение1, затем выражение2. Если выражение2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение3, снова вычисляется выражение2, и если оно по-прежнему отлично от нуля, то цикл повторяется. Если выражение2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.
Важно то, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным.
Классический пример использования
for (tmp=0; tmp<10; tmp= tmp+1)
{
// тело цикла выполнится 10 раз, начиная
// со значения tmp=0 и закончится при tmp=9
}
Пример вычисления суммы чисел от 1 до 10
y = 0; // очищаем переменную под результат
for (x=1; x<=10; x=++)
{
y = y+x; // тело цикла
}
++ инкрементирование, т.е. увеличение на единицу
–– декрементирование, т.е. уменьшение на единицу
Другим вариантом использования оператора for является бесконечный цикл. Для организации такого цикла можно использовать пустое условное выражение. Если отсутствует проверка, т.е. выражение2, то считается, что оно всегда истинно.
Пример бесконечного цикла с оператором for
for (;;)
{
// тело бесконечного цикла
}
While (пока)
Синтаксис
while (выражение) тело;
Оператор цикла while называется циклом с предусловием. В качестве выражения допускается использовать любое выражение языка Си, а в качестве тела – любой оператор, в том числе пустой или группа операторов в фигурных скобках.
Сначала вычисляется выражение; если оно ложно (или значение выражения равно нулю), то выполнение оператора while заканчивает и выполняется следующий по порядку оператор. Если выражение истинно (значение выражения отлично от нуля), то выполняется тело оператора while и процесс повторяется с начала.
Пример бесконечного цикла
while (1)
{
// тело цикла
}
Пример организации задержки
tmp = 0xffff; // прописали некое число
while (tmp-->0); // декрементировать tmp и
// выполнить пустое тело цикла
// до тех пор пока >0
Пример цикла на 8 витков
tmp=0; // чистим переменную
while (tmp<8)
{
tmp++;
// тело цикла с некими операциями
}
do-while (делать пока)
Синтаксис
do тело while (выражение);
Оператор цикла do-while называется оператором циклом с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз.
Сначала выполняется тело цикла (которое может быть составным оператором), затем вычисляется выражение. Если оно истинно (значение выражение отлично от нуля), то тело цикла выполняется снова и т.д. Если выражение становится ложным (или равно нулю), то выполнение оператора do-while заканчивается и выполняется следующий по порядку оператор.
Пример цикла на 10 витков
tmp = 0; // чистим переменную
do{
tmp++; // инкрементируем
// еще что-нибудь делаем
} while (tmp<10); // проверяем условие
