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

 
 
> Переменные типа bit в CodeVision.
_Алекс
сообщение Sep 14 2006, 09:10
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377



В общем, структура:
struct RX_BUFER{
unsigned char rxData[RX_BUFFER_SIZE0];
unsigned char index;
unsigned char errorFrame:1;
unsigned char errorCrc16:2;
unsigned char errorComand:4;
unsigned char firstByte:5;
unsigned char readyReceiveByte:6;
unsigned char buferOverflow:7;
unsigned char mesagCompl:8;
} rx_bufer;

Вроде все нормально работает но, например
rx_bufer. errorFrame = 1
rx_bufer. errorCrc16= 1
rx_bufer. errorComand = 1
rx_bufer. buferOverflow = 1
rx_bufer. mesagCompl = 0
Генерит длинный код, в место одной инструкции asm sbr r16, const, в результате откомпилированный код растет на глазах!
Как правильно работать с битами в CodeVision на Си, чтоб код был эффективным, а не раздувался от инструкций которые нагенерил CodeVision.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Алекс
сообщение Sep 14 2006, 10:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377



Спасибо всем ответившим, я понял свою ошибку, надо было везде ставить по единице, в смысле по одному байту.

Ошибка
[quote name='_Алекс' date='Sep 14 2006, 12:10' post='154446']
В общем, структура:
struct RX_BUFER{
unsigned char rxData[RX_BUFFER_SIZE0];
unsigned char index;
unsigned char errorFrame:1;
unsigned char errorCrc16:2;
unsigned char errorComand:4;
unsigned char firstByte:5;
unsigned char readyReceiveByte:6;
unsigned char buferOverflow:7;
unsigned char mesagCompl:8;
} rx_bufer;


Вот правильно

struct RX_BUFER{
unsigned char rxData[16];
unsigned char index;
unsigned char errorFrame:1;
unsigned char errorCrc16:1;
unsigned char empty:1;
unsigned char errorComand:1;
unsigned char firstByte:1;
unsigned char readyReceiveByte:1;
unsigned char buferOverflow:1;
unsigned char mesagCompl:1;
} rx_bufer;

smile3046.gif
Go to the top of the page
 
+Quote Post
otrog
сообщение Sep 14 2006, 10:07
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(_Алекс @ Sep 14 2006, 14:02) *
Спасибо всем ответившим, я понял свою ошибку, надо было везде ставить по единице, в смысле по одному байту.

Эээ... Всетаки не байту а биту.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
_Алекс
сообщение Sep 14 2006, 10:15
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377



Цитата(otrog @ Sep 14 2006, 13:07) *
Цитата(_Алекс @ Sep 14 2006, 14:02) *

Спасибо всем ответившим, я понял свою ошибку, надо было везде ставить по единице, в смысле по одному байту.

Эээ... Всетаки не байту а биту.



Ну да
Go to the top of the page
 
+Quote Post



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

 


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


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