ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
467015
Dingo (25.11.2013 07:24, просмотров: 11840)
Куда пнуть компилятор, чтобы сравнивал? Я понимаю, когда переменную пытается оптимизировать. Но тут!... ISR(TIMER0_OVF0_vect) { static unsigned int taccum = (F_CPU/T0presc/(255-T0preload)); static unsigned char chanel = 3; TCNT0 = T0preload; // about 1/1000 sec if (ADCSR|(1<<ADIF)) { PORTA |= 1<<PA6; adcRaw[chanel] = ADCW; chanel = --chanel & 0x03; Собирает в такую фигню:
	TCNT0 = T0preload; // about 1/1000 sec
 162:	8b ef       	ldi	r24, 0xFB	; 251
 164:	82 bf       	out	0x32, r24	; 50

	if (ADCSR|(1<<ADIF)) {
 166:	86 b1       	in	r24, 0x06	; 6
		PORTA |= 1<<PA6;
 168:	de 9a       	sbi	0x1b, 6	; 27

		adcRaw[chanel] = ADCW;
 16a:	80 91 60 00 	lds	r24, 0x0060
 16e:	e8 2f       	mov	r30, r24
 170:	f0 e0       	ldi	r31, 0x00	; 0
 172:	24 b1       	in	r18, 0x04	; 4
 174:	35 b1       	in	r19, 0x05	; 5
 176:	ee 0f       	add	r30, r30
 178:	ff 1f       	adc	r31, r31
 17a:	e1 59       	subi	r30, 0x91	; 145
 17c:	ff 4f       	sbci	r31, 0xFF	; 255
 17e:	31 83       	std	Z+1, r19	; 0x01
 180:	20 83       	st	Z, r18