Управление линиями и портами с предварительным выбором

Управление линией ввода-вывода с предварительным выбором устроено так: сначала вы выбираете нужную линию свойством io.num, а затем читаете и задаёте её состояние свойством io.state. На некоторых платформах свойством io.enabled можно также включать и выключать выходной буфер линии - подробнее об этом в разделе Управление выходными буферами. Пример кода:

io.num=PL_IO_NUM_5 'select line #5
io.enabled=YES 'enable this line
io.state=HIGH 'set this line to HIGH
io.state=LOW 'now set this line to LOW
io.enabled=NO 'configure the line as input now
x=io.state 'read the state of the line

То же самое можно делать и с портами - для этого служат свойства io.portnum, io.portstate и io.portenabled:

io.portnum=2 'select port #2
io.portenabled=&hFF 'this means that every port line's output buffer will be enabled (&hFF=&b11111111)
'output &h55: port lines 0, 2, 4, and 6 will be at HIGH, 4 remaining lines will be at LOW (&h55=&b01010101)
io.portstate=&h55
'output another value
op.portstate=0
'configure the port for input and read its state
io.portenabled=0
x=io.portstate

Такой способ управления линиями и портами устройства удобен, когда с одной и той же линией или портом нужно работать многократно. Быстродействие выше: линия или порт выбираются один раз, а затем к ним можно обращаться сколько угодно раз.

Обратите внимание: названия линий и портов ввода-вывода зависят от платформы и определяются перечислениями pl_io_num и pl_io_port_num соответственно. Объявления этих перечислений приведены в документации по платформе вашего устройства (например, для EM1000 она находится здесь).

Во многих устройствах часть линий ввода-вывода совмещена с входами и выходами специальных функциональных блоков (последовательных портов и т.п.). Пока такой блок включён, используемые им линии нельзя (не следует) изменять через объект io.

Исходный материал Tibbo обновлён 2 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке