![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
Кристиан |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.2.2007 Где: АР Крым. Севастоп оль. Репутация: нет Всего: нет |
Приветствую!
Появилось новое хобби - цифровая электроника. В частности микроконтроллеры. Начал изучение с книги "Мортон Д. - Микроконтроллеры AVR. Вводный курс." Впечатление от этой книги было крайне положительное, пока не остановился на одном простом месте, на котором окончательно запутался.. Собственно, причина: Во вложении простейшая схема(из книги), на которой вывод PB0 отвечает за включение/выключение светодиода, а вход PD0 - за проверку нажатия кнопки. На PD0 устанавливается подтяжка. С PB0 вроде бы все понятно: если подана лог.1, то светодиод не горит, если же на PB0 подать лог.0, то идет ток и светодиод загорается. А вот как быть с PD0 и кнопкой? В книге поданы, на мой взгляд, два абсолютно противоположных примера, хотя автор говорит, что они действуют одинаково. Вот ключевые фрагменты примеров. Первый: Start: sbis PinD, 0 ; Проверяем, нажата ли кнопка rjmp LEDoff sbi PortB, 0 ; Включаем СИД rjmp Start LEDoff: cbi PortB, 0 ; Выключаем СИД rjmp Start Прочтя этот код я уже несколько удивлен: почему СИД в этой программе включается и выключается с точностью до наоборот моим предположениям? Второй пример, по-моему, противоречит первому. Он делает то же самое, что и первый, но не использует блоки условий. Вот он: Start: in temp, PinD ; Считываем состояние кнопки out PortB, temp ; Изменяем состояние СИД rjmp Start Я не понимаю как отражается нажатие кнопки на вход PD0. Почему когда кнопка не нажата на входе PD0 должна быть лог.1, ведь в этот момент ножка ни к чему не подключена? Сначала думал, что это из-за подтяжки, но симулятор в AVR Studio показывает, что там 0. В общем, эта проблема не дает мне перейти к практике. Помогите разобраться. Заранее благодарен. Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Кристиан |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.2.2007 Где: АР Крым. Севастоп оль. Репутация: нет Всего: нет |
Нет, так как здесь в качестве условного блока используется sbis. Суть команды sbis - пропустить следующую инструкцию, если бит в регистре установлен. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
set bit - установка бита, но при установке сид потухнет clear bit - значит загорится, имхо коментарии местами перепутаны Добавлено @ 00:24 и еще я бы подтянул бы кнопку резюком к плюсу, а то не всегда может воспринимать лог 1 по обрыву.... имхо -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Кристиан |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.2.2007 Где: АР Крым. Севастоп оль. Репутация: нет Всего: нет |
Romikgy,
Неужели тогда автор напутал и при именовании метки LEDoff?
Подтяжка к входу PD0? Она включена(написано в первом посте). Но я не очень понимаю смысл этого действия, зачем она нужна? Чтобы при отсутствии тока на входе была лог.1, а при нажатии кнопки - лог.0 ? Объясни, если не сложно. |
||||
|
|||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
А вообще поконкретней название темы придумывать надо!
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Кристиан |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.2.2007 Где: АР Крым. Севастоп оль. Репутация: нет Всего: нет |
cardinal,
Название темы придумывал в расчете на то, что здесь буду задавать все свои вопросы по ходу продвижения в этой области. |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Модератор: Пожалуйста, один топик - один вопрос.
и соответственно Модератор: Название темы должно отражать ее суть! Вообще, перед началом неплохо бы и правила почитать ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
я не знаю, я этой книги не читал.... я сужу по логике вещей (если не забыл асм )
лог 1 == +5 вольт в идеале (ну или в зависимости от логики) так вот при высокоимпедансном состоянии входа, (по идее) должно определятся как лог 1, но в силу разных обстоятельств может стать нулем, и тогда буш долго искать косяк, дабы такого не было его специально подтягивают к лог 1 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Кристиан |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 2.2.2007 Где: АР Крым. Севастоп оль. Репутация: нет Всего: нет |
Вопрос решен.
Автор книги и переводчики немного перемудрили. |
|||
|
||||
Metal_Heart |
|
|||
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 1 Всего: 12 |
Светодиод будет гореть при: - лог.1: если он подключен анодом к порту, а катодом - на "землю" или - лог.0: если он подключен катодом к порту, а анодом - на "+Ep" судя по описанию, то подходит как раз второй случай:
Смотри схему Это сообщение отредактировал(а) Metal_Heart - 5.2.2007, 10:22 -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |