Входы и выходы

08-11-2013, 17:55
Просмотров: 1859

Программы обычно начинаются с очистки портов и установки канала как входа или выхода. Необходимо также решить, какие входные каналы должны быть цифровыми, а какие — аналоговыми. Если канал представляет собой цифровой вход, то требуется ли для слабое подтягивающее сопротивление? Типичная подпрограмма настройки.

Входы и выходы

Теперь мы осторожно настраиваем различные банки регистров специального назначения. Даже хотя файл компоновщика, возможно, снял необходимость в вводе списка определений, перечень регистров, представленный, может оказаться полезным в качестве напоминания о том, в каком банке находится каждый регистр. Так, например, регистр INTCON присутствует во всех четырех банках, чего нельзя сказать о некоторых других регистрах. При установке регистра важно указывать правильный банк.
Банк выбирается путем установки или обнуления разрядов 6 и 5 регистра STATUS. После включения питания оба эти разряда устанавливаются в 0, что выбирает банк 0 (банк по умолчанию).
Установка STATUS в 1 изменяет STATUS на 01, что выбирает банк 1. Здесь находятся регистры трех состояний, которые делают каждый канал порта входом или выходом. После подачи напряжения питания все разряды устанавливаются в 1, т.е. все каналы — входы. При обнулении некоторого разряда соответствующий канал становится выходом. Например, если все разряды порта А должны быть входами, регистр TPJSA остается в состоянии по умолчанию. Далее, пусть в порте В все разряды — выходы, кроме разряда 5. Таким образом, ему соответствует маска 0010000 или 20h. Это значение помещается в рабочий регистр w командой movlw 2 Oh, а затем переносится в регистр TRISB командой movwf trisb. Каналы порта С должны быть выходами, поэтому мы просто обнуляем все разряды командой clrf trisc.
Слабое подтягивающее сопротивление — это эквивалент резистора, включенного между входным выводом и положительным полюсом питания. Оно обеспечивает считывание входного сигнала как единичного, если только внешние схемы не понизят его до уровня, достаточного для считывания логического нуля. Эта функция заменяет внешние подтягивающие резисторы, хотя они могут оказаться необходимыми, если входной сигнал зашумлен резкими всплесками напряжения.

Входы и выходы

Слабые подтягивающие сопротивления доступны в портах А и В, но не в порте С. По умолчанию отключены, поскольку установлен разряд общего разрешения 7 в настроечном регистре OPTIONREG. Если подтягивающие сопротивления необходимы, то обнулите этот разряд для разрешения всех слабых подтягивающих сопротивлений по умолчанию, а затем обнулите соответствующие разряды в регистрах WPUA и WPUB.
В данном примере все каналы порта А установлены как входы и подключены к ключам, которые при замыкании подключают соответствующий канал к О В. Это состояние по умолчанию приемлемо для порта А. В порте В все каналы являются выходами, кроме разряда 5.
В данном проекте используются два микропереключателя, которые необходимо контролировать для формирования прерываний. Они связаны с разрядами 1 и 2 порта А, следовательно, код настройки имеет вид 00000110 или 06п. Это значение помещается в регистр прерывания по изменению состояния ЮСА. Настройка данного прерывания не учитывается до тех пор, пока не будет установлен разряд общего разрешения прерываний (GIE). Это можно сделать непосредственно, установив разряд GIE командой
bsf intcon, 7
В рассматриваемом примере прерывания пока не требуются, поэтому мы оставляем разряд GIE в нулевом состоянии.
Все входы в этом приложении должны быть цифровыми, однако в микроконтроллере 16F690 все каналы, которые могут работать как входы АЦП, по умолчанию аналоговые. Если мы хотим сделать их цифровыми входами общего назначения, то должны обнулить соответствующие разряды в регистрах ANSELH и ANSEL. В данном примере мы не используем АЦП. Выберите банк 2 и очистите весь регистр ANSEL, превращая все входные каналы в цифровые. Делать что-либо с регистром ANSELH нет необходимости, поскольку все каналы — выходы, кроме канала RB5, который находится под контролем USART.
На этом начальные установки завершены. Возвратившись к банку 0, микроконтроллер будет готов к выполнению главной программы, однако предварительно в качестве меры предосторожности следует очистить все выходные каналы, если только нет какой-либо особой причины не делать этого.

Источник: qwedr.com

Комментарии:
    » Входы и выходы