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

|
Здравствуйте, хочу присвоить одной переменной значение другой: не выходит. В окне watch (среда AVR Studio 4) напротив byte2 пишет Location not valid. Как присвоить переменной значение другой переменной? Помогите нубу, плиз Код volatile unsigned char byte2 = 0x12; volatile unsigned char F713 = 0x75; byte2 = byte2 | F713;
|
|
|
|
|
Jan 28 2011, 23:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
А если написать так: Код volatile unsigned char byte2 = 0x12; volatile unsigned char byte3 = 0x75; byte2 = byte2 | byte3; тоже не работает?
|
|
|
|
|
Jan 30 2011, 06:52
|
Группа: Новичок
Сообщений: 2
Регистрация: 2-10-05
Из: Кишинёв
Пользователь №: 9 150

|
Цитата(sergeeff @ Jan 29 2011, 01:41)  А если написать так: [skip] тоже не работает? Что вы мучаетесь, посмотрите ассемблерный листинг. В сомнительных случаях я всегда так делаю.
|
|
|
|
|
Jan 30 2011, 11:13
|
Группа: Новичок
Сообщений: 2
Регистрация: 2-10-05
Из: Кишинёв
Пользователь №: 9 150

|
Цитата(sergeeff @ Jan 30 2011, 12:10)  Я не мучаюсь и мне AVR Studio ставить в лом, по причине полной не надобности. Просто переменная с именем F713 подозрительно смахивает на шестнадцатиричное число. Ну это же не ассемблер - да и там нужен префикс или суффикс для шестнадцатеричных чисел. О AVR Studio я не говорю, а советую топик-стартеру посмотреть ассемблерный листинг компилятора - чем-то же он свой код компилирует? Я, например, IAR-ом пользуюсь. Но студия тоже стоит - для прошивки обновлений в AVR Dragon, например.  P.S.: кстати, как тут принято обращаться: на вы, на Вы, на ты?
|
|
|
|
|
Jan 30 2011, 11:31
|

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

|
Цитата(HarieR @ Jan 28 2011, 08:08)  Здравствуйте, хочу присвоить одной переменной значение другой: не выходит. В окне watch (среда AVR Studio 4) напротив byte2 пишет Location not valid. Как присвоить переменной значение другой переменной? Помогите нубу, плиз Код volatile unsigned char byte2 = 0x12; volatile unsigned char F713 = 0x75; byte2 = byte2 | F713; Как я понял операция Код byte2 = byte2 | F713; находится за пределами какой-либо функции, на что и ругается компилятор. byte2 = byte2 | F713; как и любые операции с переменными(кроме начальной инициализации) должны быть прописаны в теле какой-либо функции.
--------------------
- Бендер, ты же робот, зачем тебе пить пиво? - Незачем! Я могу бросить в любой момент!
|
|
|
|
|
Jan 30 2011, 11:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(dimmy_e @ Jan 30 2011, 14:13)  Ну это же не ассемблер - да и там нужен префикс или суффикс для шестнадцатеричных чисел. О AVR Studio я не говорю, а советую топик-стартеру посмотреть ассемблерный листинг компилятора - чем-то же он свой код компилирует? Я, например, IAR-ом пользуюсь. Но студия тоже стоит - для прошивки обновлений в AVR Dragon, например.  P.S.: кстати, как тут принято обращаться: на вы, на Вы, на ты? 1. Тут все на "вы". 2. Вы даете ссылку на мой совет, соответственно я ваш ответ так и воспринимаю, а не как совет автору топика. 3. Насчет "префикса или суффикса для шестнадцатеричных чисел" я прекрасно осведомлен. Просто во всяких компиляторах полно всяческих нюансов. 4. Вам на будущее. Не очень обольщайтесь ассемблерным листингом компилятора. Часто это некий промежуточный результат до окончательной обработки оптимизатором (-ами). Лично сталкивался. 100% можно доверять только дизассемблеру бинарного файла. Цитата(injen-d @ Jan 30 2011, 14:31)  Как я понял операция Код byte2 = byte2 | F713; находится за пределами какой-либо функции, на что и ругается компилятор. byte2 = byte2 | F713; как и любые операции с переменными(кроме начальной инициализации) должны быть прописаны в теле какой-либо функции. Так как автор своим фрагментом кода задает большое количество загадок, то может быть. Совершенно ведь не ясно, переменные объявлены как глобальные или локальные. Операция "или" внутри или вне функции. Самое мне не понятное и часто наблюдаемое. Автор что-то спрашивает и исчезает. Не интересно? Сам свои ляпы нашел?
|
|
|
|
|
Jan 31 2011, 06:48
|
Группа: Участник
Сообщений: 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; } Прошу сильно не пинать
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|