Что такое перемeнная типа bit?
Ответ:
[Вернуться в категорию "Вопросы и ответы по программированию на C для микроконтроллеров PIC."]
Среди типов, разрешенных к использованию, есть битовые переменные. Для их хранения компилятор создает специальную секцию rbit_n (где n - номер банка памяти). Применение битовых переменных очень удобно для представления двоичных флагов, но существуют некоторые ограничения. Значение ее может быть 0 или 1. Битовая переменная не может быть класса auto и не может быть параметром функции, но функция может возвращать переменные битового типа. Нельзя объявлять указатель на битовую переменную и выполнять статическую инициализацию (то есть нельзя объявить bit test_flag = 1; это ошибка), инициализацию нужно выполнять в начале вашего кода. Если битовой переменной присваивают значение переменной другого типа, из нее берется только младший значащий бит. При объявлении внутри функции обязательно применение ключевого слова static, а при объявлении вне функции - нет.
bit my_flag; // объявление глобальной битовой переменной
void main (void) { static bit flag; // объявление внутри функции . . .
. . . }
Битовые переменные обнуляются автоматически по старту программы при исполнении начального кода, который всегда генерирует компилятор. Эффективно ли использование битовых переменных? Однозначно, да. В один регистр компилятор упаковывает до 8 битовых переменных, значит на восемь флагов тратится только один байт. Проигрываем ли мы в скорости? Нет, так как процессор имеет эффективные команды изменения и проверки одиночных битов. [Вопросы и ответы по программированию на C для микроконтроллеров PIC.]
|