Есть в ATmega8.pdf табличка под названием Register Summary и в ней строчка: 0x3F (0x5F) SREG I T H S V N Z C 7
Что значит 0x3F (0x5F)? SREG имеет вроде как один адрес в I/O пространстве, или еше какой-нибудь?
Другой вопрос. Убиение сторожевой собаки, сделанное inline макросом из заголовочного файла, в дизасебле выглядит так: 67a: 81 bd out 0x21, r24 ; 33 67c: 11 bc out 0x21, r1 ; 33 67e: 0f be out 0x3f, r0 ; 63
А то же самое, но сделаное следующим кодом (в main())
WDTCR |= (1<<WDCE) | (1<<WDE);//и тут же меняем WDE на 1 и в следующие 4 клока меняем WDE WDTCR &= ~(1<<WDE);// -т.е. WDE устанавливаем в 0 , запрещаем дог
производит такой код: 716: a1 e4 ldi r26, 0x41 ; 65 718: b0 e0 ldi r27, 0x00 ; 0 71a: e1 e4 ldi r30, 0x41 ; 65 71c: f0 e0 ldi r31, 0x00 ; 0 71e: 80 81 ld r24, Z 720: 88 61 ori r24, 0x18 ; 24 722: 8c 93 st X, r24 724: a1 e4 ldi r26, 0x41 ; 65 726: b0 e0 ldi r27, 0x00 ; 0 728: e1 e4 ldi r30, 0x41 ; 65 72a: f0 e0 ldi r31, 0x00 ; 0 72c: 80 81 ld r24, Z 72e: 87 7f andi r24, 0xF7 ; 247 730: 8c 93 st X, r24
Как видно, длина кода слегка не одинаковая. Но непонятно другое, почему тут используется 0x41 вместо 0x21? Из таблицы известно что 0x21 (0x41) это WDTCR. Так всеже 0x21 или 0x41?
--------------------
Демократия - это когда считается, что два дурака лучше одного умного Суверенная демократия - это когда считается, что один дурак лучше двух дураков
|