Сб апр 12, 2014 16:38:45
while ((PIND& (1<<PD0))==1){}
Сб апр 12, 2014 17:34:19
Сб апр 12, 2014 18:27:15
Vova777 писал(а):Почему бы не написать по-русски: (PIND(PD0) == 1)
Сб апр 12, 2014 18:46:35
Вс апр 13, 2014 10:57:49
PORTC &= ~(1 << RS); // RS = 0
PORTC |= (1 << EN); // EN = 1
Вс апр 13, 2014 15:13:35
#define _BV(x) (1<<(x))
PORTC &= ~_BV(RS);
PORTC |= _BV(RS);
Вс апр 13, 2014 20:09:50
ARV писал(а):вы все интерпретировали правильно.
ARV писал(а):первая запись служит для сброса в порту (переменной) бита RS
Vova777 писал(а):Я все правильно интерпретировал?
.equ RS=4
ori R16,(1<<RS)
.equ RS=6
andi R16,~(1<<RS)
ori R16,(1<<RS)
andii R16,(1<<RS)
ori R16,(1<<RS)|(1<<EN)
.equ
Vova777 писал(а):Я только изучаю язык Си для микроконтроллеров AVR.
Вс апр 13, 2014 20:28:42
Вс апр 13, 2014 20:41:54
Здрасте, приехали..., а что тогда означают стрелки ">>" и "<<", если подумать логически? Это и есть сдвиг, и двигает это все препроцессор, в результате всех логических операций в выражении, согласно приоритетам, получается некое число, которое и присваивается в конечном итоге операнду.Не происходит в этих операциях никаких сдвигов.
Интересно, что произойдет, если записать так (0b101<<RS)?, получается, что в бит RS Я могу запихать такое число? Как раз эта запись означает сдвинуть число 0b101 влево на RS бит.Запись (1 << RS) означает, что в бит RS (который должен быть определен заранее) заносится лог.1
Вс апр 13, 2014 21:19:15
zero648 писал(а):Интересно, что произойдет, если записать так (0b101<<RS)?, получается, что в бит RS Я могу запихать такое число? Как раз эта запись означает сдвинуть число 0b101 влево на RS бит.
ldi R16,(0b101<<2)
Вс апр 13, 2014 21:28:10
Вс апр 13, 2014 21:35:35
Flasher писал(а):Последний пункт тоже не верен.
Вс апр 13, 2014 22:54:24
то я могу обосновать его "спорность"Flasher писал(а):Я рекомендовал бы Вам обратить свой взгляд на ассемблер. Для 8-ми разрядных контроллеров применение Си не оправдано.
Чт май 01, 2014 13:38:31
Пт май 02, 2014 10:43:07
AIpp писал(а): Какие-то глобальные изменения в этом шедевре (особенно когда не прикасался полгода-год) - это стон и слёзы
Пт май 02, 2014 10:56:28
Vova777 писал(а):
- Код:
while ((PIND& (1<<PD0))==1){}
while (PIND & (1 << PD0)) {}
Пт май 02, 2014 12:40:38
Jack_A писал(а): Думается, дело не только в языке программирования. На Си тоже можно наворотить дикие конструкции, которые 7 мудрецов не разберут.
Структурировать прогу ( уж не 10-метровую простыню листинга без единого call ), не скупиться на комментарии ( "Ну здесь все и так понятно" - это сегодня, а завтра ? ), применять интуитвно понятные макросы - и АСМовый текст будет так же легко ( или почти так же ) читаем человеком, знающим данную архитектуру. А уж если не полениться, отмазываясь нехваткой времени, нарисовать схемы алгоритмов - то солнышко и благодать .
Пт май 02, 2014 12:44:10
while ((PIND&(1<<PD0))!=0){}
Чт май 22, 2014 11:03:09
Чт май 22, 2014 11:13:11