реклама на сайте
подробности

 
 
> Настройка портов в AVR, разжуйте пожалуйста
Zelepuk
сообщение Nov 5 2010, 13:46
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



есть две строчки кода

DDRD = (0<<PD1)|(1<<PD0);
PORTD = (1<<PD1)|(0<<PD0);

что они делают? желательно как можно подробнее.
Я понимаю так: что в регистр DDRD записываем число получающееся после сдвига числа ноль влево на PD1, а также числа 1 влево на PD0. А так же операции ИЛИ между результатами двух этих операций. Но чему равны PD1 и PD0 непонятно.
Наверное я совсем ничего не понимаю в этом, подскажите пожалуйста.

к PD1 подключен пьезик
к PD0 подключена кнопка.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zelepuk
сообщение Nov 5 2010, 16:52
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Спасибо большое!
Пример заработал. Вот только не совсем понятна фраза как таковая "здвигаем на PD0 единиц"...
Чему изначально равно PD0? Или дело обстоит так, сначала выставляем на PD0 единицу, а потом уже работаем с ним?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 5 2010, 17:31
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Zelepuk @ Nov 5 2010, 19:52) *
Чему изначально равно PD0? Или дело обстоит так, сначала выставляем на PD0 единицу, а потом уже работаем с ним?

Обычно пины портов у AVR определяются в одном из хидеров, как НОМЕP этого пина:
#define PD0 0
#define PD1 1
#define PD2 2
......................
#define PD7 7
Однако во многих командах пин порта соответствует определенному биту. В таких случаях порт выглядит при программировании, как байт, а пины этого порта выглядят, как биты внутри этого байта.
Запись типа 0<<PD2, хоть и численно равна нулю, но является наглядным способом указания того, что бит в маске порта, соответствующий пину PD2, равен нулю. Такая форма записи подразумевает, что определения пинов PD0-PD7 соответствуют номеру бита в байте. А чтобы запихнуть в данное место 0 или 1, их сдвигают влево операцией сдвига << на это же число двоичных разрядов.
Сама операция такого сдвига кода не порождает, т.к. операции над числовыми константами компилятор делает "в уме", подставляя на исполнение уже готовый результат.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 12:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016