eXeC001er 0 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба скажите битовые переменные можно объявлять через встроенный макрос, как это сделано для регистров контроллера, а потом обращатся к ним например вот так SFR_B(FLAG, Addr) но вот вопрос какое значение записывать в Addr?! Или это как то по другому делается?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BVU 0 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба скажите битовые переменные можно объявлять через встроенный макрос, как это сделано для регистров контроллера, а потом обращатся к ним например вот так SFR_B(FLAG, Addr) но вот вопрос какое значение записывать в Addr?! Или это как то по другому делается?! <{POST_SNAPBACK}> Объявите сначала Ваши переменные, а потом через #define переобозначтесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eXeC001er 0 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба подробнее пжлста Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BVU 0 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба подробнее пжлста <{POST_SNAPBACK}> Это стандарт языка С. Почитайте любую книжку (учебник) по С, и посмотрите, как можно организовать макрос. Я Вам дам лучше другое ценное замечание: что бы избежать ошибок параметры макроолределения всегда необходимо заключать в скобки: #define xxx (xxx/xxx * ... + ... - xxx) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eXeC001er 0 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба я про то как мне организовать собственные битовые переменные?! я где то здесь на форуме встречал как это делается, но вот забыл где?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба я про то как мне организовать собственные битовые переменные?! я где то здесь на форуме встречал как это делается, но вот забыл где?! <{POST_SNAPBACK}> Из исходника: //TCP заголовок struct { unsigned int rport; //От какого порта unsigned int lport; //В какой unsigned long SEQ; unsigned long ACK; char hlen; union { char CTL; //Флаги struct { char FIN:1, SYN:1, RST:1, PSH:1, _ACK:1, F5:1, F6:1, F7:1; }; }; unsigned int wsize; } TCP_HDR; FIN, SYN, RST и т.д. - ото оно, CTL - доступ сразу ко всему байту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PaulS 0 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба я про то как мне организовать собственные битовые переменные?! я где то здесь на форуме встречал как это делается, но вот забыл где?! <{POST_SNAPBACK}> ИМХО лучше всего так, например: typedef union isd_status { unsigned int word; struct { unsigned char powerUP_delay : 1; unsigned char record_start : 1; unsigned char play_start : 1; unsigned char record_process : 1; unsigned char play_process : 1; unsigned char pause_stop : 1; }; } isd_status; Если будет больше chara, смело пиши word или long. В программе: обьява: isd_status ISD_status = {0}; Модификация бита: ISD_status.pause_stop = SET; Модификация всей структуры: ISD_status.word = CLR; Проверка бита: if (ISD_status.pause_stop); Так же и байта. Передача параметром в функцию: number_operation = GetNumberBit(ISD_status.word); Ну и т.д. Так 6-й час, домой пора. Успехов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ObitJr 0 9 сентября, 2005 Опубликовано 9 сентября, 2005 · Жалоба подробнее пжлста <{POST_SNAPBACK}> Это стандарт языка С. Почитайте любую книжку (учебник) по С, и посмотрите, как можно организовать макрос. Я Вам дам лучше другое ценное замечание: что бы избежать ошибок параметры макроолределения всегда необходимо заключать в скобки: #define xxx (xxx/xxx * ... + ... - xxx) <{POST_SNAPBACK}> я б даже сказал вот так #define ...(xxx) ((xxx)/(xxx) * ... + ... - (xxx)), если речь шла о параметрах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться