Задания олимпиады 2008 - Олимпиада по программированию

advertisement
Содержание
ОБЩИЕ ТРЕБОВАНИЯ
2
ОЦЕНКА ЗАДАЧ УЧАСТНИКОВ
2
III.
ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ АППАРАТНЫХ СРЕДСТВ
3
IV.
ЗАДАЧИ ДЛЯ ОЛИМПИАДЫ
4
Задача 1 «Управление яркостью светодиода»
Задача 2 «Секундомер»
Задача 3 «Опрос состояния клавиатуры»
Задача 4 «Контролер съема данных»
Задача 5 «Сортировка данных»
Задача 6 «Частотомер»
Задача 7 «Измерение уровня аналогового сигнала»
4
4
5
5
5
5
6
ПРИЛОЖЕНИЕ А
ПРИЛОЖЕНИЕ Б
ПРИЛОЖЕНИЕ В
ПРИЛОЖЕНИЕ Г
ПРИЛОЖЕНИЕ Д
7
8
8
9
9
I.
II.
-1-
I.
ОБЩИЕ ТРЕБОВАНИЯ
Для быстрой и качественной проверки программ участникам рекомендуется точно
выполнять требования по представлению результата программы, например, если в задании
указано, что результат выполнения программы необходимо сохранить в регистр R1, то при
проверке программы будет проверяться только состояние регистра R1.
В связи с особенностями построения внутрисхемного эмулятора к выполняемым
программам предъявляется ряд требований.
1. Программа должна начинаться с директивы .org 8000h
2. Порт P3 допускает обращение только с помощью команд работы с битами, например
Clr p3.2
Setb p3.3
3. Порт P1 допускает как побитовое обращение, так и обращение к порту в целом.
Например, если необходимо установить в единицу разряд порта p1.2 можно
использовать следующие команды
Mov p1, #00000100b
Setb p1.2
Необходимо отметить, что при использовании команды mov происходит изменение
всех разрядов порта, а при использовании команд работы с битами изменения касаются
только одного разряда.
4. Порты P0 и P2 допускает обращение к нему через регистр dptr, при этом младшая часть
регистра dptr соответствует порту P0, а старшая часть – порту P2. Например,
следующая последовательность команд соответствует установлению в единицу разряда
p2.2, остальные разряды портов P0 и P2 равны нулю
Mov dptr, #0400h
Movx @dptr, a
5. Не допускается использование и изменение настроек таймера T1.
Несмотря на то, что в ходе проведения Олимпиады участники могут пользоваться
любыми вспомогательными материалами, не допускается списывание, а также коллективное
выполнение работ. За абсолютно идентичные работы участники будут строго наказываться.
На проверку заданий участникам необходимо высылать исходные коды программ (ASMфайлы) – это связано с особенностями оценки задач участников.
II.
ОЦЕНКА ЗАДАЧ УЧАСТНИКОВ
Количество баллов, присуждаемое участникам за решение задач, будет состоять из двух
частей: баллы, присуждаемые за решение задачи (оценка по критериям работает/не работает и
выполнение всех требований условия задачи) и баллы, присуждаемые за творческий подход к
решению задач.
Во время проведения Олимпиады участникам будут проставлены баллы из первой части.
Участнику могут быть сняты баллы за невыполнение всех требований условия задачи.
После того так все участники закончат выполнение задач Олимпиады им будут
проставлены баллы. Баллы будут проставляться на основе анализа исходного кода программ
участников. Если участник высылал задание несколько раз, то оцениваться будет исходный
-2-
код последнего задания. На основе рассмотрения исходного кода участникам будут
проставлены места за каждое задание.
Итоговое место участника будет определяться по сумме баллов за все задание.
III.
ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ АППАРАТНЫХ СРЕДСТВ
В ходе проведения Олимпиады будет использоваться специально разработанный
лабораторный комплекс.
Лабораторный комплекс можно представить в виде трех блоков:

персональный компьютер (ПК), с установленным на него программным
обеспечением для внутрисхемного эмулятора;

внутрисхемный эмулятор;

подключенные к внутрисхемному эмулятору стенды для проведения
лабораторных работ.
Основным блоком лабораторного комплекса является внутрисхемный эмулятор,
который является связующим звеном между персональным компьютером и изучаемым
лабораторным стендом. Внутрисхемный эмулятор представляет собой устройство, которое
аппаратно эмулирует работу процессора, работой процессора при этом управляет
персональный компьютер.
С помощью специального программного обеспечения в эмулятор загружается
разработанная тестовая программа для конкретного лабораторного стенда.
Стенды для проведения лабораторных работ представляют собой набор отдельных
модулей, подключаемых к портам ввода-вывода эмулятора.
В качестве эмулируемого микропроцессора в лабораторном комплексе используется
микроконтроллер AT89C51, который относиться к семейству микроконтроллеров MCS-51.
Структура внутрисхемного эмулятора приведена на рисунке.
1 - микроконтроллер; 2 – память; 3 – блок связи с ПК; 4 - ПК
В состав внутрисхемного эмулятора помимо микроконтроллера AT89C51 входит
микросхема памяти объемом памяти 8кБ, которая предназначена для записи в нее программы
пользователя. Микросхема памяти подключается таким образом, что к ней можно обращаться
как к памяти программ, так и как к памяти данных. Связь эмулятора с ПК осуществляется
посредством последовательного порта (COM-порта). Для согласования уровней напряжений
последовательного интерфейса RS-232 и микросхем серии ТТЛ необходимо применение блока
связи с ПК, который может быть реализован, например, на микросхеме MAX 232. Критерием
выбора микросхемы MAX232 является то, что в типовой схеме включения, ее обвязка состоит
-3-
всего из четырех конденсаторов, и правильно собранная схема из исправных деталей работает
сразу и не требует наладки.
Схема внутрисхемного эмулятора приведена в ПРИЛОЖЕНИЕ А. На схеме:
DA1 – микросхема ADM232, выполняет функции согласования уровней ТТЛ-сигналов и
интерфейса RS-232.
DD1 – микроконтроллер AT89C51.
DD2 – регистр ИР33, необходим для подключения ОЗУ.
DD3 – микросхема ОЗУ, объем памяти 8кБ.
С1-С4 – конденсаторы, необходимые для корректной работы DA1.
C5, C6, ZQ1 – задающий генератор для микроконтроллера (ZQ: 18432кГц).
R1-R8 – подключены к порту P0 микроконтроллера, т.к. порт P0 имеет выходы с
открытым коллектором.
R9, C7 – цепь сброса микроконтроллера.
VD1-VD3, R10 – на этих компонентах собран элемент «И», необходимый для
обеспечения чтения/записи в ОЗУ эмулятора.
Описание стендов дается в соответствующих разделах описания задач.
IV.
ЗАДАЧИ ДЛЯ ОЛИМПИАДЫ
Задача 1 «Управление яркостью светодиода»
Максимальное количество баллов: 20.
Необходимо реализовать программу, обеспечивающую плавное зажигание и гашение
светодиода. Регулировка яркости свечения должна происходить путем изменения скважности.
Шаг градации яркости равен 1/8 от максимальной яркости светодиода. Схема подключения
диода приведена на рисунке.
Возможные ошибки и количество снимаемых за них баллов.
Не учтен заданный шаг градации яркости: -4балла.
Задача 2 «Секундомер»
Максимальное количество баллов: 30.
Используемый стенд: ПРИЛОЖЕНИЕ Б.
Необходимо разработать программу, реализующую работу секундомера. При работе
программы отображается время (минуты, секунды). Для отображения используется
динамический индикатор. Частота переключения индикаторов не менее 50Гц и более 100Гц.
Два левых знакоместа динамического индикатора отображают текущее значение счетчика
минут, два правых знакоместа – текущее значение счетчика секунд.
Возможные ошибки и количество снимаемых за них баллов.
Не работает один из индикаторов: -5баллов.
Задача 3 «Опрос состояния клавиатуры»
Максимальное количество баллов: 30.
Используемый стенд: ПРИЛОЖЕНИЕ В.
-4-
Имеется матрица кнопок 3×4. Необходимо разработать программное обеспечение,
реализующее обслуживание динамической клавиатуры. При разработке программы
необходимо учитывать дребезг контактов. Номер нажатой клавиши (1-12) необходимо
заносить в регистр микроконтроллера R1. В программном обеспечении должна учитываться
возможность пользователя нажатия более одной клавиши, при этом программа должна
выдавать сообщение об ошибке (в регистр R1 заноситься число «0»).
Возможные ошибки и количество снимаемых за них баллов.
Не реализована защита от дребезга контактов: -10баллов.
Задача 4 «Контролер съема данных»
Максимальное количество баллов: 50.
В последовательный порт эмулятор получает некоторый текст. Передаваться могут
любые символы (с кодами 0…255, кодировка ASCII, символ с кодом 12 означает конец
текста). Программа должна выделить из текста десятичные числа, и вычислить их сумму.
Числа отделены справа и слева как минимум одним разделительным символом.
Разделительные символы – символы с кодом меньше 33, кроме символа с кодом 12. Диапазон
чисел, встречающихся в тексте, а также их сумма находится в диапазоне: 0..65535. После
получения символа с кодом 12, программа должна вывести в последовательный порт сумму
полученных чисел, а также символы перевода строки (коды 13 и 10). Затем ждать новую
порцию текста. Для каждой порции текста начальная сумма равно 0.
Примечание. Коды символов-цифр в таблице ASCII: «0» = 48, «1» = 49 … «9» = 57
Задача 5 «Сортировка данных»
Максимальное количество баллов: 20.
В памяти эмулятора (адреса 8500h – 8550h) находиться массив чисел. Необходимо
произвести сортировку данных таким образом, чтобы сначала шли нечетные числа,
отсортированные по возрастанию, затем четные числа, отсортированные по убыванию. Метод
сортировки – произвольный. Отсортированные данные записываются также в память
эмулятора в тот же сегмент памяти.
Задача 6 «Частотомер»
Максимальное количество баллов: 30.
Используемый стенд: ПРИЛОЖЕНИЕ Г.
Для измерения частоты в стенде используется метод электронно-счетного частотомера.
Диапазон измеряемых частот – 200Гц-10кГц. В качестве опорной частоты выступает источник
частоты 10МГц, также реализованный на стенде. Результат измерения частоты необходимо
отсылать в последовательный порт в двоично-десятичном виде.
Примечание. Метод электронно-счетного частотомера основан на том, что для
измерения частоты f x периодического сигнала достаточно сосчитать число его периодов за
известный интервал времени T0 . Результат измерения определяется соотношением
T0  NTx ,
fx 
N
.
T0
-5-
Задача 7 «Измерение уровня аналогового сигнала»
Максимальное количество баллов: 60.
Используемый стенд: ПРИЛОЖЕНИЕ Д.
В стенде используется АЦП последовательного приближения. Измеренное значение
аналогового напряжения (код) необходимо записывать по адресу 8500(старшая часть) и 8501
(младшая часть).
Микросхема КР572ПВ1 является двенадцатиразрядным АЦП. Она имеет выходные
каскады с тремя состояниями (0, 1 и высокоимпедансное), благодаря чему может выдавать
информацию на системную шину контроллера. Более того, кодовые выводы АЦП могут
использоваться не только для вывода, но и для ввода дискретных сигналов, т. е. этот АЦП
имеет двунаправленный кодовый канал. Возможность записать внешний код в выходной
регистр позволяет использовать данную микросхему также в качестве цифро-аналогового
преобразователя. Переключение кодового канала на ввод или на вывод производится
сигналом, подаваемым на вход V (режим): если V=0, то осуществляется вывод кода, если V=l,
то ввод. Перевод кодового канала в высокоимпедансное состояние производится подачей
нулевого сигнала на входы LE (управление восемью младшими разрядами канала) и НЕ
(управление четырьмя старшими разрядами). Благодаря наличию этих входов информация с
АЦП может выводиться побайтно на восьмиразрядную шину данных.
Работа преобразователя синхронизируется тактовыми импульсами, подаваемыми на вход
С. Частота этих импульсов не должна быть более 250 кГц.
Для построения АЦП микросхему К572ПВ1 нужно дополнить источником опорного
напряжения UR, операционным усилителем DА2 (УД608) и компаратором DА1 (К554СА3).
ОУ DА2 используется для преобразования в напряжение выходного тока I1, входящего в
микросхему ЦАП. Выход дополняющего тока I2 и вывод последнего резистора (вывод I3)
ЦАП соединяются с общим проводом. В качестве резистора обратной связи усилителя DА2
используется один из резисторов, входящих в микросхему. В распоряжении пользователя
имеются четыре таких резистора, сопротивления которых соотносятся по двоичному закону:
2R, R, R/2, R/4 (R  10 кОм).
Компаратор DА1 сравнивает выходное напряжение ЦАП, снимаемое с выхода DА2, с
преобразуемым напряжением UR1. Результат сравнения подается на вход CI (сравнение) АЦП
и используется для управления внутренним регистром последовательного приближения.
Запуск АЦП производится положительным импульсом, подаваемым на вход ST (старт).
Весь цикл преобразования длится 28 периодов тактовых импульсов: 2 периода — сброс, 24
периода — реализация программы последовательного приближения и 2 периода —
формирование положительного импульса на выходе DR (готовность данных). Цикл
преобразования АЦП может быть закончен досрочно путем подачи повторного импульса
запуска на вход ST. Таким образом, сокращается время преобразования и соответственно
разрядность АЦП. Если требуется организовать циклическую работу АЦП, то соединяются
между собой выход ZO (выход цикла) и вход ZI (вход цикла).
-6-
ПРИЛОЖЕНИE А
-7-
ПРИЛОЖЕНИЕ Б
ПРИЛОЖЕНИE В
-8-
ПРИЛОЖЕНИE Г
ПРИЛОЖЕНИE Д
-9-
Download