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

 
 
> присвоение значения переменной
HarieR
сообщение Jan 28 2011, 05:08
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 5-05-10
Пользователь №: 57 075



Здравствуйте, хочу присвоить одной переменной значение другой: не выходит. В окне watch (среда AVR Studio 4) напротив byte2 пишет Location not valid. Как присвоить переменной значение другой переменной?
Помогите нубу, плиз laughing.gif

Код
volatile unsigned char byte2 = 0x12;    
volatile unsigned char F713 =  0x75;
byte2 = byte2 | F713;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Jan 28 2011, 23:41
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



А если написать так:

Код
volatile unsigned char byte2 = 0x12;    
volatile unsigned char byte3 = 0x75;
byte2 = byte2 | byte3;


тоже не работает?
Go to the top of the page
 
+Quote Post
dimmy_e
сообщение Jan 30 2011, 06:52
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 2-10-05
Из: Кишинёв
Пользователь №: 9 150



Цитата(sergeeff @ Jan 29 2011, 01:41) *
А если написать так:
[skip]
тоже не работает?

Что вы мучаетесь, посмотрите ассемблерный листинг. В сомнительных случаях я всегда так делаю.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 30 2011, 10:10
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(dimmy_e @ Jan 30 2011, 10:52) *
Что вы мучаетесь, посмотрите ассемблерный листинг. В сомнительных случаях я всегда так делаю.


Я не мучаюсь и мне AVR Studio ставить в лом, по причине полной не надобности. Просто переменная с именем F713 подозрительно смахивает на шестнадцатиричное число.
Go to the top of the page
 
+Quote Post
dimmy_e
сообщение Jan 30 2011, 11:13
Сообщение #5





Группа: Новичок
Сообщений: 2
Регистрация: 2-10-05
Из: Кишинёв
Пользователь №: 9 150



Цитата(sergeeff @ Jan 30 2011, 12:10) *
Я не мучаюсь и мне AVR Studio ставить в лом, по причине полной не надобности. Просто переменная с именем F713 подозрительно смахивает на шестнадцатиричное число.

Ну это же не ассемблер - да и там нужен префикс или суффикс для шестнадцатеричных чисел.

О AVR Studio я не говорю, а советую топик-стартеру посмотреть ассемблерный листинг компилятора - чем-то же он свой код компилирует? Я, например, IAR-ом пользуюсь. Но студия тоже стоит - для прошивки обновлений в AVR Dragon, например. sm.gif

P.S.: кстати, как тут принято обращаться: на вы, на Вы, на ты?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 30 2011, 11:42
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(dimmy_e @ Jan 30 2011, 14:13) *
Ну это же не ассемблер - да и там нужен префикс или суффикс для шестнадцатеричных чисел.

О AVR Studio я не говорю, а советую топик-стартеру посмотреть ассемблерный листинг компилятора - чем-то же он свой код компилирует? Я, например, IAR-ом пользуюсь. Но студия тоже стоит - для прошивки обновлений в AVR Dragon, например. sm.gif

P.S.: кстати, как тут принято обращаться: на вы, на Вы, на ты?


1. Тут все на "вы".
2. Вы даете ссылку на мой совет, соответственно я ваш ответ так и воспринимаю, а не как совет автору топика.
3. Насчет "префикса или суффикса для шестнадцатеричных чисел" я прекрасно осведомлен. Просто во всяких компиляторах полно всяческих нюансов.
4. Вам на будущее. Не очень обольщайтесь ассемблерным листингом компилятора. Часто это некий промежуточный результат до окончательной обработки оптимизатором (-ами). Лично сталкивался. 100% можно доверять только дизассемблеру бинарного файла.

Цитата(injen-d @ Jan 30 2011, 14:31) *
Как я понял операция
Код
byte2 = byte2 | F713;
находится за пределами какой-либо функции, на что и ругается компилятор.

byte2 = byte2 | F713; как и любые операции с переменными(кроме начальной инициализации) должны быть прописаны в теле какой-либо функции.


Так как автор своим фрагментом кода задает большое количество загадок, то может быть. Совершенно ведь не ясно, переменные объявлены как глобальные или локальные. Операция "или" внутри или вне функции.

Самое мне не понятное и часто наблюдаемое. Автор что-то спрашивает и исчезает. Не интересно? Сам свои ляпы нашел?
Go to the top of the page
 
+Quote Post
HarieR
сообщение Jan 31 2011, 06:48
Сообщение #7





Группа: Участник
Сообщений: 10
Регистрация: 5-05-10
Пользователь №: 57 075



Спасибо всем! Проблема решилась:
переменные были объявлены в теле main, т.е. действительно как локальные, и компилятор не хотел их показывать:
Код
void main()
{    
volatile unsigned char byte2 = 0x12;    
volatile unsigned char F713 =  0x75;
byte2 = byte2 | F713;
}

Сработал вариант:

Код
volatile unsigned char byte2 = 0x12;    
volatile unsigned char F713 =  0x75;
void main()
{    
byte2 = byte2 | F713;
}

Прошу сильно не пинать maniac.gif
Go to the top of the page
 
+Quote Post



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

 


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


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