Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
А это не только на Сях - на АСМ то же самое. Вкратце - для твоего же удобства, развернуто - внутри(+)
Отправлено
MBedder 25 апреля 2008 г. 15:08
В ответ на:
Уважаемые! Вы знаете ,как я к вам хорошо отношусь... отправлено
<font color=gray>Гарин</font> 25 апреля 2008 г. 14:34
Давай сначала переведем выражение к численному виду, предварительно подсмотрев в iom48.h или в другом аналогичном хедере численные значения битовых "операндов":
(1<<7)|(1<<5)|(1<<2) = 0x80|0x20|0x04 = 0xA4
Это даст присвоение в виде TWCR = 0xA4. Тебе что-нибудь говорит это 0xA4? Нет? И мне тоже. Зато запись TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN) говорит "Установить в 1 биты TWINT, TWSTA и TWEN регистра TWCR". Мало того, имена управляющих регистров и отдельных бит в них являются сокращениями их функциональныз назначений, поэтому легко догадаться, что эти регистры и их биты из себя представляют, даже не глядя в ДШ - Two Wire [interface] Control Register = Two Wire [interface] Interrupt, Two Wire [interface] Status, Two Wire [interface] Enable. Так понятнее, чем 0xA4 - не правда ли?
Мало того, если бы ты сам корячился и рожал в уме эту несчастную 0xA4, глядя то в ДШ, то на экран, и попутно вычисляя НЕХ-значение, то запросто мог бы и допустить механическую ошибку, написав бы в итоге нечто типа 0xB8, и застрелился бы потом эту ошибку вылавливать в неработающем коде. А вот символьные присвоения с использованием ТОЛЬКО предопределенных производителем компилятора/МК дефайнов будут всегда безошибочны - производители редко допускают ошибки в хедерах, а допустив - оперативно исправляют.
Вот ради этой безошибочности и понятности вся эта громоздкая на первый взгляд бодяга и затевается. Усек теперь?
Составить ответ | Вернуться на конференцию
Ответы
- Спс! Думаю, что усек :) Плюс при переходе на другой проц, многое в написан...{+}(+) — Гарин (25.04.2008 17:22:50 213.186.45.33, 255 байт)
- Вот теперь то же самое объясни мне, потому как в том же IARе на MSP430 биты определены не номерами битов, а масками, все пишут (BIT7 | BIT0) и не парятся. Если не использовать собственных присвоений, будет так же безошибочно и понятно. — Vladimir Ljaschko (25.04.2008 15:41:17 194.158.204.49, 1224 байт)
- Как в хедере впервые нопесали - так и тянется. Ничто, кроме лени и элементарной заботы о совместимости, не мешает переписать хедеры, или писать ldi r16,exp2(bit1)|exp2(bit2), или применять макросы — MBedder (25.04.2008 16:51:5 80.92.96.19, пустое)
- +1 Да в IAR'овских хидерах для MSP430xxx вообще всё очень , даже уютненько- не заблудиссси ;) чего не скажешь о даташитах. Но за столько времени и с этими гулениями (курениями) в них привыкаешь. Да и Компелл, смотрю , отслеживает неплохо. — Макаров (25.04.2008 16:13:24 192.168.235.10, 77.235.200.210, пустое)
- У AVR в некоторых командах нужны номера битов, а не маски, а *.h файлы общие для С и для ассемблера (и тем более для ассемблерных вставок). — ReAl (25.04.2008 15:51:20 193.111.248.46, пустое)