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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Программа для IAR, Для того чтоб начать работать с ИАР
SpiritDance
сообщение Feb 16 2007, 18:53
Сообщение #16


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(*SERG @ Feb 16 2007, 14:11) *
Подскажите как объявить битовую переменную и назначать переменные в битовом формате в квавр
bit
0b00110101
А в ИАР не понял как это сделать sad.gif

В ИАРе как и в нормальном стандарном С - никак. Переделывайте руки и не занимайтесь извращениями.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
*SERG
сообщение Feb 16 2007, 19:44
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Цитата(GL_basik @ Feb 16 2007, 15:32) *
Цитата(*SERG @ Feb 16 2007, 12:18) *
смотрю часы офисные, зачем вот это #include "math.h" и #include "define.h"
так понимаю что это чтото маленькой библиотеки) созданные самим разработчиком. Но зачем? И каким образом их делать? Почему они в ковычках?

Значит math.h досталось в наследство от старого проекта. Здесь его нет. define.h есть, как он выглядит можешь посмотреть. Делать его так же как и файл в котром программа. smile.gif
Файлы загаловков указываются в теругольных скобках если находятся в библиотеке IARa. Если они лежат в папке проекта то берутся в кавычки.

Спасибо за пояснение smile.gif

Цитата(SpiritDance @ Feb 16 2007, 18:53) *
Цитата(*SERG @ Feb 16 2007, 14:11) *

Подскажите как объявить битовую переменную и назначать переменные в битовом формате в квавр
bit
0b00110101
А в ИАР не понял как это сделать sad.gif

В ИАРе как и в нормальном стандарном С - никак. Переделывайте руки и не занимайтесь извращениями.

Ну руки может и не от туда растут, но за то золотые wink.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 16 2007, 21:49
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(*SERG @ Feb 16 2007, 13:11) *
Подскажите как объявить битовую переменную и назначать переменные в битовом формате в квавр
bit 0b00110101
А в ИАР не понял как это сделать sad.gif
как справедливо заметил SpiritDance - "в лоб" никак. Можно написать макрос, но это тупиковое решение. Посмотрите вот это сообщение: http://electronix.ru/forum/index.php?s=&am...st&p=203047 там и пример записи и объяснение почему лучше не использовать конструкции вроде UCSR1B = 0xd8; и #pragma vector = 0x78


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
*SERG
сообщение Feb 19 2007, 06:33
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Цитата(Сергей Борщ @ Feb 16 2007, 21:49) *
Цитата(*SERG @ Feb 16 2007, 13:11) *

Подскажите как объявить битовую переменную и назначать переменные в битовом формате в квавр
bit 0b00110101
А в ИАР не понял как это сделать sad.gif
как справедливо заметил SpiritDance - "в лоб" никак. Можно написать макрос, но это тупиковое решение. Посмотрите вот это сообщение: http://electronix.ru/forum/index.php?s=&am...st&p=203047 там и пример записи и объяснение почему лучше не использовать конструкции вроде UCSR1B = 0xd8; и #pragma vector = 0x78


Посмотрел, спасибо!

А вот такое объявление битовых переменных "не красиво" чтоли?


struct
{
unsigned char skan_per:1;
unsigned char timer_int:1;
unsigned char timer_int2:1;
unsigned char vse_fazi:1;
unsigned char knopka:1;
unsigned char A5:1;
unsigned char A6:1;
unsigned char A7:1;
} flag;
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 19 2007, 12:24
Сообщение #20


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(*SERG @ Feb 19 2007, 05:33) *
А вот такое объявление битовых переменных "не красиво" чтоли?
Красиво до тех пор пока вам не захочется одной командой сбросить или установить более одного флага, либо по ходу работы переинициализировать эту структуру любым значением, отличным от нуля. Тогда это выльется в массу писанины. Придется либо заводить временные переменные такого же типа что и структура, либо работать с указателями и явно приводить типы. А начальная инициализация любым значением кроме нуля выглядит примерно так: flag = {0,1,1,1,0,1,1,0}; и тоже совершенно нечитаема. Приходится делать запись примерно такую:
Код
flag = {
0,    // skan_per
1,    // timer_int1
1,    // timer_int2
1,    // vse_fazi
0,    // knopka
1,    // A5
1,    // A6
0,    // A7
} flag;
что требует не меньше писаниниы чем flag= (0<<SKAN_PER)|(1<<TIMER_INT_1)|(TIMER_INT_2)|(1<<VSE_FAZI)|(0<<KNOPKA)|(1<<A_5)|(1<<A_6)|(0<<A_7).

При этом оба метода имеют право на жизнь. Запись битовым полем имеет тот плюс, что компилятор не позволит вам ошибочно установить флаг в совершенно другой переменной, а при ширине битового поля более 1 бита сам подставляет нужные сдвиги и маски.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
bill_vs
сообщение Feb 19 2007, 14:31
Сообщение #21


Участник
*

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



Если надо работать со всем байтом (словом...), можно использовать union (как определены SFR)

__io union
{
unsigned char PORTE; /* The sfrb as 1 byte */
struct
{
unsigned char PORTE_Bit0:1,
PORTE_Bit1:1,
PORTE_Bit2:1,
PORTE_Bit3:1,
PORTE_Bit4:1,
PORTE_Bit5:1,
PORTE_Bit6:1,
PORTE_Bit7:1;
};
} @ 0x1F;
Go to the top of the page
 
+Quote Post

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

 


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


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