Слайд 2
![Очередность этапов разработки 1. Постановка задачи 2. Разработка структурной схемы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-1.jpg)
Очередность этапов разработки
1. Постановка задачи
2. Разработка структурной схемы
3. Разработка программного обеспечения
4.
Разработка электрической принципиальной схемы
5. Комплексная отладка
Слайд 3
![1. Постановка задачи](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-2.jpg)
Слайд 4
![Описание устройства Кодовый замок должен иметь защиту от неправильно введенного](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-3.jpg)
Описание устройства
Кодовый замок должен иметь защиту от неправильно введенного кода.
В случае
если неправильный код водится три раза должна срабатывать сигнализация.
Предусмотреть индикацию введенного кода и режимы работы кодового замка.
Слайд 5
![Предварительный выбор оборудования: Выбираем микроконтроллер AVR имеющий четыре порта Клавиатура Усилитель мощности Электромагнит замка Индикатор](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-4.jpg)
Предварительный выбор оборудования:
Выбираем микроконтроллер AVR имеющий четыре порта
Клавиатура
Усилитель мощности
Электромагнит замка
Индикатор
Слайд 6
![Состав оборудования кодового замка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-5.jpg)
Состав оборудования кодового
замка
Слайд 7
![Исходные данные Тип кода – двоичный; Количество комбинаций – 256;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-6.jpg)
Исходные данные
Тип кода – двоичный;
Количество комбинаций – 256;
Количество попыток ввода кода
– 3;
Сигнализация неправильно набранного кода.
Слайд 8
![2. Разработка структурной схемы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-7.jpg)
2. Разработка структурной схемы
Слайд 9
![Подготовка к разработке структурной схемы Требуется выбрать конкретное оборудование (пока](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-8.jpg)
Подготовка к разработке структурной схемы
Требуется выбрать конкретное оборудование (пока не
выбирая микроконтроллер)
Затем выбрать конкретный микроконтроллер
Выполнить распределение ресурсов микроконтроллера
Слайд 10
![Распределение ресурсов микроконтроллера В данной разработке распределение ресурсов сводится к распределению портов ввода - вывода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-9.jpg)
Распределение ресурсов микроконтроллера
В данной разработке распределение ресурсов сводится к распределению портов
ввода - вывода
Слайд 11
![Разделение системы на подсистемы Для удобства проектирования разделим все устройство](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-10.jpg)
Разделение системы на подсистемы
Для удобства проектирования разделим все устройство на две
системы:
Система ввода
Система вывода
Слайд 12
![Система ввода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-11.jpg)
Слайд 13
![Требования к системе ввода Требуется: 1. Ввести код доступа 2.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-12.jpg)
Требования к системе ввода
Требуется:
1. Ввести код доступа
2. Подтвердить, что код
набран верно
3. В случае неправильно набранного кода
выполнить сброс кода
Слайд 14
![Выбор клавиатуры Выбираем двоичную клавиатуру В качестве кнопок ввода кода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-13.jpg)
Выбор клавиатуры
Выбираем двоичную клавиатуру
В качестве кнопок ввода кода – 8 тумблеров
с фиксацией
Кнопки подтверждения и сброса без фиксации
Слайд 15
![КЛАВИАТУРА](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-14.jpg)
Слайд 16
![Схема включения кнопки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-15.jpg)
Слайд 17
![Эквивалентная схема линии порта](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-16.jpg)
Эквивалентная схема линии порта
Слайд 18
![Схема включения кнопки к порту MK с Pull-up резистором](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-17.jpg)
Схема включения кнопки к порту MK с Pull-up резистором
Слайд 19
![Система вывода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-18.jpg)
Слайд 20
![Требования к системе вывода Требуется: 1. Отображать на индикаторе набранный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-19.jpg)
Требования к системе вывода
Требуется:
1. Отображать на индикаторе набранный код доступа
2. Управлять
электромагнитом замка
3. Возможно подключение звукового сигнала
Слайд 21
![Выбор устройства индикации Выберем двоичный индикатор отображения набранного кода на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-20.jpg)
Выбор устройства индикации
Выберем двоичный индикатор отображения набранного кода на основе 8
светодиодов (LED)
Добавим еще 2 светодиода:
индикатор правильно набранного кода и индикатор неправильно набранного кода
Слайд 22
![Управление электромагнитом замка Требуется только открывать и закрывать замок Выберем](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-21.jpg)
Управление электромагнитом замка
Требуется только открывать и закрывать замок
Выберем схему с усилителем
релейного типа
Таким образом нам требуется одна линия вывода для управления электромагнитом замка
Слайд 23
![Настройка линий порта на ввод Порт А – ввод кода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-22.jpg)
Настройка линий порта на ввод
Порт А – ввод кода доступа
Линия D0
– подтверждение правильно набранного кода
Слайд 24
![Настройка линий порта на вывод Порт С – отображение введенного](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-23.jpg)
Настройка линий порта на вывод
Порт С – отображение введенного кода
Линия
В0 – подтверждение правильно набранного кода
Линия В1 – набран неправильный код
Линия В2 – управление замком
Линия В3 – управление звуковым сигналом
Слайд 25
![Структурная схема](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-24.jpg)
Слайд 26
![Активный уровень сигнала В качестве активного уровня сигнала управления внешними устройствами выбираем ЛОГИЧЕСКИЙ НОЛЬ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-25.jpg)
Активный уровень сигнала
В качестве активного уровня сигнала управления внешними устройствами выбираем
ЛОГИЧЕСКИЙ НОЛЬ
Слайд 27
![3. Разработка программного обеспечения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-26.jpg)
3. Разработка программного обеспечения
Слайд 28
![Разработка алгоритма Требуется разработать алгоритм работы кодового замка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-27.jpg)
Разработка алгоритма
Требуется разработать алгоритм работы кодового замка
Слайд 29
![Настройка портов ввода - вывода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-28.jpg)
Настройка портов ввода - вывода
Слайд 30
![Распределение линий портов Ввод: Порт А Порт D Вывод: Порт В Порт С](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-29.jpg)
Распределение линий портов
Ввод:
Порт А
Порт D
Вывод:
Порт В
Порт С
Слайд 31
![Регистры портов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-30.jpg)
Слайд 32
![Настройка порта](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-31.jpg)
Слайд 33
![Выбор микроконтроллера На этом этапе выбираем микроконтроллер семейства AVR, имеющий](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-32.jpg)
Выбор микроконтроллера
На этом этапе выбираем микроконтроллер семейства AVR, имеющий четыре порта
ввода-вывода.
Предположим мы выбрали микроконтроллер
ATmega32.
Слайд 34
![Написание текста программы на языке ассемблера: В соответствии с ранее](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-33.jpg)
Написание текста программы
на языке ассемблера:
В соответствии с ранее разработанным алгоритмом пишется
программа работы микроконтроллера
Ниже будут приведены примеры типовых программных модулей
Слайд 35
![Типовые программные модули инициализации микроконтроллера: Подключение стандартной библиотеки описания имен Настройка портов ввода-вывода Настройка указателя стека](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-34.jpg)
Типовые программные модули инициализации микроконтроллера:
Подключение стандартной библиотеки описания имен
Настройка портов
ввода-вывода
Настройка указателя стека
Слайд 36
![Подключение библиотеки: «Описание имен для ATmega32» .NOLIST .include "m32def.inc" .LIST](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-35.jpg)
Подключение библиотеки:
«Описание имен для ATmega32»
.NOLIST
.include "m32def.inc"
.LIST
Слайд 37
![Настройка портов ввода-вывода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-36.jpg)
Настройка портов ввода-вывода
Слайд 38
![Настройка порта А на ввод ldi r16, $FF ; загрузка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-37.jpg)
Настройка порта А на ввод
ldi r16, $FF ; загрузка константы FFH
в ; регистр R16
out PORTA, r16; Загрузка содержимого R16 в
; регистр данных порта А)
Слайд 39
![Настройка порта D на ввод ldi r16, $FF ; загрузка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-38.jpg)
Настройка порта D на ввод
ldi r16, $FF ; загрузка константы FFH
в ; регистр R16
out PORTD, r16; Загрузка содержимого R16 в
; регистр данных порта D)
Слайд 40
![Настройка порта B на вывод ldi r16, $FF ; загрузка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-39.jpg)
Настройка порта B на вывод
ldi r16, $FF ; загрузка константы FFH
в ; регистр R16
out PORTB, r16 ; Загрузка содержимого R16 в ;регистр данных порта B
ldi r16, $FF ; загрузка константы FFH в ; регистр R16
out DDRB, r16 ; Загрузка содержимого R16 в ;регистр направления порта В
Слайд 41
![Настройка порта C на вывод ldi r16, $FF ; загрузка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-40.jpg)
Настройка порта C на вывод
ldi r16, $FF ; загрузка константы FFH
в ; регистр R16
out PORTC, r16 ; Загрузка содержимого R16 в ;регистр данных порта C
ldi r16, $FF ; загрузка константы FFH в ; регистр R16
out DDRC, r16 ; Загрузка содержимого R16 в ;регистр направления порта C
Слайд 42
![Настройка стека Например, определяем адрес указателя стека SP на ячейку](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-41.jpg)
Настройка стека
Например, определяем адрес указателя стека SP на ячейку 085FH (последняя
ячейка IRAM ATmega32)
Содержимое регистра указателя стека определяется:
Регистр Н-адрес Н-код
SPH 3EH 08H
SPL 3DH 5FH
Слайд 43
![Настройка указателя стека ldi R16, low (RAMEND) out SPL, R16](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-42.jpg)
Настройка указателя стека
ldi R16, low (RAMEND)
out SPL, R16
ldi R16,
high (RAMEND)
out SPH, R16
START: wdr
Слайд 44
![Примеры рабочих программных модулей](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-43.jpg)
Примеры рабочих программных модулей
Слайд 45
![Ожидание нажатия кнопки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-44.jpg)
Слайд 46
![Команды «Скип» sbic PINx, n – переход через следующую команду](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-45.jpg)
Команды «Скип»
sbic PINx, n – переход через следующую команду (скип) если
бит порта ввода сброшен
sbis PINx, n – переход через следующую команду (скип) если бит порта ввода установлен
Слайд 47
![Ожидание нажатия кнопки (sbic) WAIT_KEY: wdr sbic PIND, 0 rjmp WAIT_KEY nop](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-46.jpg)
Ожидание нажатия кнопки (sbic)
WAIT_KEY: wdr
sbic PIND, 0
rjmp WAIT_KEY
nop
Слайд 48
![Ожидание отпускания кнопки (sbis) WAIT_KEY: wdr sbis PIND, 0 rjmp WAIT_KEY nop](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-47.jpg)
Ожидание отпускания кнопки (sbis)
WAIT_KEY: wdr
sbis PIND, 0
rjmp WAIT_KEY
nop
Слайд 49
![Использование команд ввода/вывода В командах ввода-вывода могут быть использованы любые](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-48.jpg)
Использование команд ввода/вывода
В командах ввода-вывода могут быть использованы любые регистры с
именами от R0 до R31
В примерах приведенных далее в качестве регистра будет использован только регистр R16
Слайд 50
![Чтение порта in r16, PINA ; ввод информации из порта](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-49.jpg)
Чтение порта
in r16, PINA ; ввод информации из порта A
; в регистр r16
in r16, PIND ; ввод информации из порта D в ;регистр r16
Слайд 51
![Запись в порт out PORTC, r16 ; вывод информации из](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-50.jpg)
Запись в порт
out PORTC, r16 ; вывод информации из
; регистра r16 в порт C
out PORTD, r16 ; вывод информации из ; регистра r16 в порт D
Слайд 52
![Включить или выключить устройство Для управления некоторым устройством требуется она](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-51.jpg)
Включить или выключить устройство
Для управления некоторым устройством требуется она линия вывода
Рекомендуется
использовать команды операций с отдельными битами порта
cbi – сбросить (в ноль) линию порта
sbi – установить (е единицу) линию порта
Слайд 53
![Пример команды cbi cbi PORTC, 2 ;Сбросить линию порта C ; с номером 2](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-52.jpg)
Пример команды cbi
cbi PORTC, 2 ;Сбросить линию порта C ; с
номером 2
Слайд 54
![Пример команды sbi sbi PORTC, 2 ;Установить линию порта C ;с номером 2](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-53.jpg)
Пример команды sbi
sbi PORTC, 2 ;Установить линию порта C
;с номером 2
Слайд 55
![Пример сравнения содержимого регистров Сравним содержимое двух регистров R18 и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-54.jpg)
Пример сравнения содержимого регистров
Сравним содержимое двух регистров R18 и R20
R18 –
заданная величина
R20 – неизвестная величина
Требуется определить равны они или нет
Слайд 56
![Используем команду вычитания mov r19, r18 ; копирование заданного ;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-55.jpg)
Используем команду вычитания
mov r19, r18 ; копирование заданного ; значения
sub r19,
r20 ; вычитание неизвестной ; величины из копии заданного
После операции вычитания в r19 помещается разность и устанавливаются флаги (С, Z и т.д.)
Слайд 57
![Реализация ветвлений в программе В зависимости от того, что были](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390603/slide-56.jpg)
Реализация ветвлений в программе
В зависимости от того, что были равны
или не равны значения в регистрах, требуется организовать ветвления в программе.
Используем команды условных переходов