roboforum.ru

Технический форум по робототехнике.

Вопросы по Line Tracer

Re: Вопросы по Line Tracer

Master » 01 апр 2008, 00:08

Терм, я конешно понимаю что на форуме ты самый молодой, но ты ведь не первый день на форуме? Это типа я скажу, собрал робота, а он не шивелится что делать?
Давай сюда:
1. Что должно получится в итоге?
2. Файлик проекта ВМлаба.
3. Текст программы.
4. и т. д.

Re: Вопросы по Line Tracer

Vooon » 01 апр 2008, 14:38

Myp писал(а):1.
Код: Выделить всёРазвернуть
if (!(PIND & (1<<PIND.1))) // проверить "0" на линии 1 порта D

2.
Код: Выделить всёРазвернуть
if PIND.1 == 0 // проверить "0" на линии 1 порта D


1.
наверное всеже не PIND.1, а PD1
ибо PINx.y, на сколько помню, понимает только CV

в avrlibc определены позиции всех битов всех регистров как номер бита
те PD1 == 0x01

пользоваться _BV() я не люблю, т.к. писать нифига не меньше
это всего лишь макрос:
Код: Выделить всёРазвернуть
#define _BV(x) (1<<x)


а операция достаточно проста:
предположим что PIND = 0b00001010,
тогда:
msk = 0b00000001 << 1 => 0b00000010
PIND & msk => 0b00001010 & 0b00000010 => 0b00000010 > 0 == True
а если PIND = 0b01101000, то
PIND & msk => 0b01101000 & 0b00000010 => 0b00000000 == 0 == False

кстати чтобы не писать это есть макрос bit_is_set() (изучать хедеры avrlibc)

2.
код становится непереносим на другие компиляторы


Rambler\'s Top100 Mail.ru counter