Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 107
от 03.04.2003, 19:40

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 180
Отправлено ответов: 538
Активность: 298.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

X-RayMan
Статус: Доверительный
Общий рейтинг: 138.29
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 115.41
[Подробней >>]
Tigran K. Kalaidjian
Статус: Начальный
Общий рейтинг: 107.69
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 107.99
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 174. уважаемые эксперты ! Помогите чайнику! как в Турбо Паскале принятый байт разложить на биты какие кон... (ответов: 4)

Вопросов: 1, ответов: 4


 Вопрос № 174

уважаемые эксперты !
Помогите чайнику!
как в Турбо Паскале принятый байт разложить на биты
какие контакты используют в принтерном порту
и как к порту подключить 8 выключателей.
Прога в приложении.
Заранее благодарен.


Приложение:


Вопрос отправлен: 31.03.2003, 19:36
Отправитель: anton (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает X-RayMan

Здравствуйте, anton!
1) Можно разбить путем сравнения исходя из того, что каждому включенному биты соответствует свое число: степени 2 от 0 до 7. См. приложение.
2) Контакты в принтерном порту используют все. Но тебе, судя по всему, надо от 2 по 9.
3) Покупаешь LPT-разъем папу. К 2-9 ногам припаиваешь свои выключатели. Только есть одна фича: когда порт в режиме приема на нем постоянно висит 255, т.е. везде 1. Поэтому выключеные выключатели должны заземлять ноги на которых висят.
И вообще: x_rayman@vinnitsa.com. А то тут неудобно общаться.

Приложение:

Ответ отправлен: 31.03.2003, 23:42
Отправитель: X-RayMan


Отвечает Dark_Lord

Добрый день, anton!
либо просто проверяя размер байта
if a>127 then
begin
a:=a-128
bit1:=true
end;
if a>63 then....
тогда тебе нужно 8 переменных bitX типа boolean или вставкой ассемблера
asm
bt a,номер_бита
salc
...
end;
после этого если бит=1, то al=255 иначе 0!
Если какие проблеммы пиши на Dark_Lord@RusFAQ.ru


Ответ отправлен: 31.03.2003, 21:22
Отправитель: Dark_Lord


Отвечает Tigran K. Kalaidjian

Приветствую Вас, anton!
Разводку LPT-порта см. в приложении.
Чтобы проверить какой либо бит я бы сделал ассемблерную вставку. Конкретизируем. К примеру, мы принимаем байт из ЛПТ-порта:
mov dx, 379h
in al, dx
Затем проверяем бит по маске
test al, 00100000b ; маска
jnz m1 ; Если бит "включен" прыгаем на m1
; тут выполняем действия, если бит "погашен"
; ...
m1:
mov a, al ; производим какие-либо действия на случай, если бит "включен"
; в данном случае сохраняем al в переменной типа Byte


Приложение:

Ответ отправлен: 01.04.2003, 18:55
Отправитель: Tigran K. Kalaidjian


Отвечает vitya

Здравствуйте, anton!
раскладываешь на биты просто
bits : array[1..8] of byte;
{...}
for i := 1 to 8 do
bits[i] := 0;
i := 1;
while (myNumber <> 0)
{
bits[i] := myNumber AND 1;
inc(i);
myNumber := myNumber SHR 1;
}
{алгоритм последовательно получает биты и записывает их в массив. Правда он портит начальное число.}

Ответ отправлен: 01.04.2003, 08:31
Отправитель: vitya



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (35)
C / C++ (26)
Perl (6)
Delphi (16)
Pascal (20)
Basic / VBA (9)
Java / JavaScript (8)
PHP (4)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (31)
Windows NT/2000/XP (23)
"Железо" (28)
Поиск информации (15)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (12)
Юристу
Гражданское право (9)
Семейное право (5)
Трудовое право (5)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное