Использование условной конструкции if
Приведенный ниже пример проверяет условие и выполняет <код1>, если условие выполнено и <код2>, если условие не выполнено:
if (<условие>)
{
<код1>;
}
else
{
<код2>;
}
Условием может быть любое логическое выражение, например
(Button_state == 1)
<код1> и <код2> – одна или несколько строк кода. Допустимо использование вложенных конструкций, т.е. в качестве <код1> или <код2> может быть еще одна условная конструкция, например:
if (<условие1>)
{
if (<условие2>)
{
<код3>;
}
}
Например, условие неравенства переменных Button_state_old и Button_state будет записано так:
if (Button_state_old != Button_state)
{
}
Знак != обозначает «Не равно».
А условие проверки Button_state на равенство 1 при неравенстве Button_state_old и Button_state будет выглядеть так:
if (Button_state_old != Button_state)
{
if (Button_state = 1)
{
//Тут описывается, что происходит, если кнопка нажата
} else
{
//Тут описывается, что происходит, если кнопка отжата
}
}
Задание.
1) Реализовать программу, включающую светодиод при зажатой кнопке.
2) Написать программу, включающую светодиод при нажатии на кнопку и выключающую при повторном нажатии.
Порядок выполнения задания.
1. Выяснить номера выводов, к которым подключены кнопка и светодиод, как описано в пункте «Определение подключения кнопки и светодиодов».
2. Запустить файл lab1_1.uvproj в папке lab1 с кодом из лабораторных 1 и 2.
3. Следующий код написать в функции main() до начала цикла while(1).
a. Включается тактирование портов, к которому подключены кнопка, как описано в пункте «Включение тактирования».
b. Заполняется структура, как описано в пункте «Настройка порта ввода-вывода». Помните, что определение переменных производится в начале функции до использования первого оператора.
4. Задание 1). Код программы (за исключением объявления переменных) пишется в цикле while(1).
a. Объявить переменную Button_state (в самом начале функции main()) с типом uint8_t. Присвоить переменной значение 0. Переменная Button_state будет хранить состояние кнопки: если нажата, значение переменной равно 1, если отжата, то 0.
b. В цикле while(1) записать в переменную Button_state состояние кнопки, как описано в пункте «Проверка состояния кнопки».
c. Включить светодиод, если кнопка нажата, и выключить светодиод, если кнопка отжата (см. пункт «Использование условной конструкции if»).
d. Проверить работу программы.
5. Задание 2). Код программы (за исключением объявления переменных) пишется в цикле while(1).
a. Объявить переменные Button_state и Button_state_old (в самом начале функции main()) с типом uint8_t. Присвоить переменным значение 0. Переменная Button_state будет хранить текущее состояние кнопки: если уже была нажата, значение переменной равно 1, если была отжата, то 0.
b. В цикле while(1) записать в переменную Button_state состояние кнопки, как описано в пункте «Проверка состояния кнопки».
c. Проверить условие, совпадают ли значения переменных Button_state и Button_state_old, применив условную конструкцию if.
d. Если условие не выполняется, необходимо проверить еще одно условие: нажата ли кнопка в данный момент (равна ли переменная Button_state единице).
e. Если Button_state == 1, программа должна выполнить следующие действия: изменить состояние светодиода (см. пункт «Изменение состояния светодиода») и организовать задержку программы на время дребезга кнопки (порядка 10 мс).
f. После кода, написанного согласно пунктам а…е, необходимо записать текущее состояние кнопки в переменную Button_state_old при помощи строчки:
Button_state_old = Button_state;
После описанных действий кнопка будет работать, как требуется в задании.
Содержание отчёта:
1) Исследуемая схема.
2) Блок-схемы программ.
3) Описание программ.
4) Программы.
5) Выводы.