Не, где-то ты недосмотрел.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Все нормально. Вот из help:
Bitfields in expressions will have the same data type as the base type (signed or unsigned char, short, int, or long).
К переменной, объявленной как
typedef struct
{
unsigned char BufferEmpty:1;
unsigned char MediaBusy:1;
unsigned char RemoteBusy:1;
unsigned char RxXIDData:1;
unsigned char RxLMPData:1;
unsigned char TxLMPData:1;
}LAPStatusType;LAPStatusType LapStatus;
идет обращение байтовыми командами:
\ 015A F2D01000 BIS.B #16,&LAPStatus
\ 015E 0800
118 LAPStatus.RxLMPData=1;
Возможно тебя смущает то, что память под следующую переменную выделяется с "дыркой" в один байт? Это связано с тем, что 430 не умеет читать слова с нечетного адреса. Поэтому если в С-исходнике у тебя за объявлением переменной размером в байт объявлена переменна размером в слово, то она будет выровнена по границе слова и при необходимости останется дырка. А если вслед за битовым полем ты объявишь байтовую переменную, она как раз в эту дырку и упадет. Так что смотреть в map и тасовать объявления в исходнике.А что у тебя выдает sizeof(CONTROL_REGISTER)?
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru