реклама на сайте
подробности

 
 
> Пара вопросов (ATmega8.C, WinAVR)
AlexKLm
сообщение Mar 25 2008, 19:32
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 160
Регистрация: 17-03-08
Из: Мурманская
Пользователь №: 35 989



Есть в 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?


--------------------
Демократия - это когда считается, что два дурака лучше одного умного
Суверенная демократия - это когда считается, что один дурак лучше двух дураков
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016