Table of Contents

Упражнения

Целью является создание программы, которое выполняет описанное задание.

Упражнение для разминки

Для начинающих

  1. Имитация работы светофора на пешеходном переходе. Если ни одна кнопка не нажата, то для автомобилей горит зеленый LED. После нажатия на любую кнопку, начинает мигать зеленый свет в течении трех секунд, затем на три секунды загорается желтый и на десять секунд красный и в конце начинает снова гореть зеленый LED.
  2. Считает нажатие кнопок. Нажатие считается законченым только тогда, когда кнопка освобождается. Результат выводится в двоичном коде на LED-ах. Максимальный результат на трех LED-ах 23-1. Зеленый LED обозначает 1. бит, желтый 2. бита, красный 3. бита.
  3. Нажимая на кнопку S1, загорается разом LED1 и LED3, нажимая на кнопку S2, загорается LED2, нажимая на кнопку S3, потухают все LED-ы. Операции нужно осуществлять в соответствии с изменением значений регистров (без библиотеки Домашней Лаборатории)
  4. Считает нажатие кнопок. Результат появляется в виде мигающего LED-а. После каждого нажатия кнопки число миганий возрастает на одно. Выбрать можно любую кнопку. Для мигания LED-а использовать нижнию функцию, параметром которой является число миганий.
  5. Нажимая на кнопку S1, мигает красный LED в коде Морзе „SOS“, нажимая на кнопку S2, мигает желтый LED „CQD“ и нажимая S3, мигает зеленый LED „OK“.

Для успевающих

  1. Каждой из трех кнопок соответствует один LED, которая загорается при нажатой кнопке. Для зажигания или гашения нужно использовать регистры и это можно сделать только с одним присвоением (намёк: использовать сдвиг разряда).
  2. При нажатие на кнопки в порядке S3 – S2 - S1, загорается зеленый LED. При любых других комбинациях загорается красный LED. При нажатие на каждую кнопку мигает желтый LED, что потверждает нажатие на кнопку.
  3. Каждому LED-у соответствует одна кнопка. Контроллер мигает LED-ом в случайном порядке и пользователь должен повторить ту же последовательность, нажимая на кнопку. Последовательность миганий с каждым разом более длинне, добавляя к предыдущей последовательности новый случайный LED. После каждого набора пользователем контролируется был ли набор правильным. Разница между наборами 2 секунды. При неправильном наборе разом мигают все LED-ы три раза. (Количество правильных наборов игрока можно вывести на LCD экран.)
  4. Программа измеряет время реакции. При загарании случайного LED-а пользователь должен как можно быстрее нажать кнопку под LED-ом. Время, когда загорается LED, случайное, но не менее 100 мс. Время реакции показывается в миллисекундах на LCD экране. Значение кнопок нельзя cчитать функцией фильтрации дребезга контактов, т.к. это создает лишнию задержку.

 

Вопросы

  1. В чем отличие знаков “=“ и “==“? Предоставьте два примера для доказательства отличий.
  2. В чем разница знаков „|“ и „||“? Предоставьте два примера для доказательства отличий.
  3. Напишите выражение, в котором используете уравнениe „x = x + 1“ двенадцать раз.
  4. Как пишите в языке Си бесконечный цикл? Предоставьте два разных варианта.
  5. Какого типа переменные выбираете в языке Си, чтобы представить позитивное число в пределах от 7 до 154?
  6. Какой регистр обозначает направление порта? Приведите пример настраивания порта входа и выхода.
  7. Какими методами можно ликвидировать ложные срабатывания, возникающие при дребезге контактов? Приведите пример аппаратного и программного варианта.
  8. Что означает термин сдвиг разряда? Приведите практический пример с пояснением.
  9. Почему используется у переключателя pull-up сопротивление? Следуя чему обозначается это сопротивление?
  10. Расчитайте значение сопротивления ограничивающего ток LED-а, если питание 5 В, прямое напряжение LED-а 2,7 В и ток 30 мА.