avreal писал(а):Не советую. Получите объединение недостатков.
гхмм. медленно и огромный код ? эхх. я разрываюсь. хочется легкости си и четкости АСМ.
avreal писал(а):Не советую. Получите объединение недостатков.
вы как-то определитесьКислый писал(а):гхмм. медленно и огромный код ? эхх. я разрываюсь. хочется легкости си и четкости АСМ.
Код: Выделить всё
UCSRB |= ( 1 << TXEN ) | ( 1 << RXEN );Код: Выделить всё
TXEN =1;
RXEN =1;ARV писал(а):TXEN - это символ номера бита в регистре
При достаточной квалификации программиста, язык ассемблера позволяет писать самый быстрый и компактный код. Возможно, даже лучше, чем генерируемый трансляторами языков более высокого уровня.
Если код программы достаточно большой, данные, которыми он оперирует, не помещаются целиком в регистрах процессора, то есть частично или полностью находятся в оперативной памяти, то искусный программист, как правило, способен значительно оптимизировать программу по сравнению с высокоуровневыми трансляторами по одному или нескольким параметрам: скорость работы (за счёт оптимизации вычислений и/или более рационального обращения к ОП, перераспределения данных), объём кода (в том числе за счёт эффективного использования промежуточных результатов).
Обеспечение максимального использования специфических возможностей конкретной платформы, что также позволяет создавать более эффективные программы с меньшими затратами ресурсов.
phenomen писал(а):Если требуется быстродействие, то только асм!
Кислый писал(а):но непонятно почему нельзя записатьКод: Выделить всё
TXEN =1;
RXEN =1;
илиэто просто для наглядности ?
Gudd-Head писал(а): В СиЛабовском компиляторе можно так написать, если регистр бит-адресуемый
Jack_A писал(а):АВР вроде в таком не замечен.
вообще то можно, если немного схитрить:Кислый писал(а):но непонятно почему нельзя записатьКод: Выделить всё
TXEN =1;
RXEN =1;
Код: Выделить всё
SFR_B(FLAGS,0x60)
#define FLAG1 FLAGS_Bit0
#define FLAG2 FLAGS_Bit1
// some code
FLAG1=1;
//some code
FLAG1=0;Код: Выделить всё
SFR_B(UCSRB,0x0A)
#define RXEN UCSRB_Bit4 //Rx enable
#define TXEN UCSRB_Bit3 //Tx enable
//some code
RXEN=1;
//some code
TXEN=1;Gudd-Head писал(а):К регистрам ввода-вывода AVR адресами до 0x1F применимы команды SBI и CBI (установить и очистить бит)Под эти регистры, как правило, попадают и USART'овские с битами RXEN и TXEN.
ibiza11 писал(а): знаю что на асме было бы намного короче, поэтому воюю.