Установку/сброс битов WinAvr всерда делал нормально:
Код
PORTD &= ~_BV(PD6);
514: 5e 98 cbi 0x0b, 6; 11
Однако для USART-овских регистров он генерит какую-то хрень:
Код
UCSR0B &= ~_BV(UDRIE0);
4ca: 80 91 c1 00 lds r24, 0x00C1
4ce: 8f 7d andi r24, 0xDF; 223
4d0: 80 93 c1 00 sts 0x00C1, r24
А в другом месте он устроил вообще черт знает что:
Код
UCSR0B &= ~_BV(TXCIE0);
50a: e1 ec ldi r30, 0xC1; 193
50c: f0 e0 ldi r31, 0x00; 0
50e: 80 81 ld r24, Z
510: 8f 7b andi r24, 0xBF; 191
512: 80 83 st Z, r24
Это что, садизм в особо извращенной форме? Как его заставить делать более осмысленный код?
Сообщение отредактировал 777777 - May 21 2010, 07:57