| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Все тот же порт Centronics'а |
| Автор: Кепка 9.5.2002, 14:25 |
| Я все о том же порте Centronics. Конечно же спасибо за совет Chingachguk'у, но, видимо, он не так меня понял (или я некорректно задал вопрос). Постараюсь осветить проблему пошире: насчет функций inport и inportb. В С они имеют такие прототипы: int intport (int ); unsigned char inportb (int ); Что из этого следует? Из этого следует, что эти функции возвращают слово и байт состояния порта, которого ты указываешь в скобках. Допустим, что на порт состояния Centronics (379) пришла комбинация бит: 11111111. Что в десятичном эквиваленте означает 255. Эти функции прочтя состояние порта возвратят эту комбинацию в какую-то переменную. А мне же нужно прочитать отдельно БИТЫ этого порта, т.е. чтоб в переменной находился либо 0, либо 1, но никак не 255 или подобное этому. Я понимаю, что выходное значение этих функций можно разложить на биты, но это долго, неэкономично. Можно ли как-нибудь (с помощью ассемблера или С) решить эту задачу? Т.е. я хочу прочесть отдельно, например, бит №7, поместить его в какую-то переменную, и чтоб в этой переменной находилось реальное значение (1 или 0). Заранее спасибо. |
| Автор: neutrino 9.5.2002, 15:17 |
| Переменных длиной меньшей чем 1 байт нет. Так тебе все равно придется разбирать его по битам. |
| Автор: Melancholy 10.5.2002, 23:49 |
| попробуй так: int byte2bit(int b, int nbit) { return ((b >> nbit) & 1) } |
| Автор: podval 12.5.2002, 21:25 |
| Пробовал в С работать с битовыми полями? |