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

 
 
 
Reply to this topicStart new topic
> присвоение значения переменной
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
_Pasha
сообщение Jan 28 2011, 07:13
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Сбываеццо предсказание, ура!
Цитата(_Pasha @ Jan 24 2011, 11:25) *
Имхо, в недалеком будущем появится обилие тем типа "как присвоить значение 8-ми битной переменной" с последующим флеймом на 200 страниц. Нас почти 50штук (тысяч ГГ), давайте будем людьми, потому что уже стыдно перед более интеллектуальными амебами и инфузориями.

ссылка
По теме: не может быть. Volatile всегда отображается. Может, они локальные и сразу вышли из блока?
Go to the top of the page
 
+Quote Post
SZ0
сообщение Jan 28 2011, 09:47
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



А может они нигде больше не используются и выкинуты компилятором как не нужные?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 28 2011, 10:14
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(SZ0 @ Jan 28 2011, 13:47) *
А может они нигде больше не используются и выкинуты компилятором как не нужные?

volatile не выкидывается
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 28 2011, 10:32
Сообщение #5


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Ещё как выкидывается, если она статик и к ней нет обращения и на чтение и на запись. Локальные так же.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 28 2011, 18:32
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(GetSmart @ Jan 28 2011, 14:32) *
Ещё как выкидывается, если она статик и к ней нет обращения и на чтение и на запись. Локальные так же.

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


В конкретно этом случае? Ню-ню. biggrin.gif
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 28 2011, 23:41
Сообщение #7


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

Группа: Свой
Сообщений: 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
Сообщение #8





Группа: Новичок
Сообщений: 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
Сообщение #9


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

Группа: Свой
Сообщений: 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
Сообщение #10





Группа: Новичок
Сообщений: 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
injen-d
сообщение Jan 30 2011, 11:31
Сообщение #11


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

Группа: Свой
Сообщений: 91
Регистрация: 10-10-07
Из: Воронежа
Пользователь №: 31 250



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

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


Как я понял операция
Код
byte2 = byte2 | F713;
находится за пределами какой-либо функции, на что и ругается компилятор.

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



--------------------
- Бендер, ты же робот, зачем тебе пить пиво?
- Незачем! Я могу бросить в любой момент!
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 30 2011, 11:42
Сообщение #12


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

Группа: Свой
Сообщений: 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
Сообщение #13





Группа: Участник
Сообщений: 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 Текстовая версия Сейчас: 18th July 2025 - 13:28
Рейтинг@Mail.ru


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