Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Четырехразрядный Регистр Сдвига Для Atmega8535

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

saintgosugod

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, люди Добрые. Нужна помощь.
 
Мне нужно написать на моем контроллере avr atmega8535 четырехразрядный регистр прямого сдвига, то есть параллельный код он преобразует в последовательный и сдвигает его нажатием кнопки вправо( https://youtu.be/93JLAVZWoP4?t=2m50s вот видео, начинать смотреть с 2:50)
 
http://ideone.com/RzAt9G вот сам код, все вроде правильно, ошибок не вижу, но на контроллере не работает.
 
Программа задержки нужна для устранения дребезга кнопки.
 
Пожалуйста, найдите ошибку, будьте добры. Схему попытался нарисовать с протеусе, на ней тоже, как и на настоящем контроллере, ничего не работает, хотя в авр студио все летает.
 
   
 

Всего записей: 3 | Зарегистр. 21-11-2012 | Отправлено: 14:59 26-05-2016
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А что под отладкой в эмуляторе видно? По-моему порт A неправильно сконфигурирован, зачем единицы в порту при нормально разомкнутых кнопках на входе? У тебя получаются всегда единицы на входе, поэтому должны быть всегда единицы на выходе.

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 08:50 27-05-2016 | Исправлено: NeoAnomaly, 11:30 27-05-2016
saintgosugod

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нет, в инициализации портов ввода вывода все правильно

Всего записей: 3 | Зарегистр. 21-11-2012 | Отправлено: 18:16 27-05-2016
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
нет, в инициализации портов ввода вывода все правильно

saintgosugod, согласно

Цитата:
 
When you set bits in DDRx to 0, i.e. make port pins as inputs, then corresponding bits in PORTx register are used to activate/deactivate pull-up registers associated with that pin. In order to activate pull-up resister, set bit in PORTx to 1, and to deactivate (i.e to make port pin tri stated) set it to 0.
 
In input mode, when pull-up is enabled, default state of pin becomes ‘1’. So even if you don’t connect anything to pin and if you try to read it, it will read as 1. Now, when you externally drive that pin to zero(i.e. connect to ground / or pull-down), only then it will be read as 0.
 

Ссылка
 
и коду

Код:
 
PORTA=0xF1; //na vhod
DDRA=0x00;

 
Пины А сконфигурированы на вход и для 0, 4-7 пинов А включена подтяжка к единице, не?

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 19:47 27-05-2016 | Исправлено: NeoAnomaly, 19:54 27-05-2016
saintgosugod

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо большое, не знал, что так
 
Добавлено:
при нажатии кнопки в протеусе не работает сдвиг(

Всего записей: 3 | Зарегистр. 21-11-2012 | Отправлено: 19:54 27-05-2016
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Он и не будет работать, так как при нажатии кнопки вход PA0 подключается к VDD, а не VSS. На вход, на котором единица, подаётся единица. То же самое и с PA4-PA7.
И вообще такое лучше с прерываниями делать примерно так Подробнее...

Всего записей: 1570 | Зарегистр. 01-11-2004 | Отправлено: 14:58 28-05-2016 | Исправлено: ne_viens, 15:00 28-05-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Четырехразрядный Регистр Сдвига Для Atmega8535


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru