Упражнения

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

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

  • • При нажатие на кнопку S1 загорается один LED, при нажатии на S2 два LED-а, при нажатии на S3 три LED-а.

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

  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 мА.
ru/exercises/digi.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0