На главную страницу | Новости | FAQ | Ссылки | Для детей | Контакты
- Port(P) - параллельный порт
- SPI
- UART
- TWSI
В состав порта Px (x=A,B,C,D,E) входят 3 регистра ввода-вывода:
1) DDRx (направление)
2) PORTx (состояние)
3) PINx (не имеет аппаратной реализации)
Для настройки портов нужно задать значения для DDRx и PORTx. Например так:
DDRB = 0x00;
PORTB = 0x00;
Состояние разряда DDRX.Y определяет направление передачи бита через вывод порта PX.Y:
DDRx.y = 0; // вход
DDRx.y = 1; // выход
1) режим входа (DDRX.Y=0)
PORTx.y = 0 – высокоимпендансное состояние (z-состояние) -- по умолчанию.
Cопротивление порта очень велико. Он не оказывает на шину никакого влияния. Но если он висит в воздухе, то напряжение на нем (и значение PIN) будет скакать в зависимости от внешних наводок.
PORTx.y = 1 – через внутренний подтягивающий резистор 100кОм ввод подключается к шине VCC. Поэтому в неподключенном состоянии на вводе будет висеть PIN=1.
2) режим выхода (DDRX.Y=1)
PORTx.y = 0 – низкий уровень (UOL, IOL<20mA) – логический 0
PORTx.y = 1 – высокий уровень (UOL, IOL<3mA) – логическая 1
* режимы работы показаны в таблице
Получить значение входного сигнала на отдельном выводе можно с помощью команд условного перехода:
* на asm:
SBIC PINx, y
SBIS PINx, y
* на C:
z = PINx.y;
Задать значение выходного сигнала на отдельном выводе:
CBI PORTx, y
SBI PORTx, y
Приём и выдача байт на целый порт на asm:
IN Rd, PINx (приём)
OUT PORTx, Pr (выдача)
или на C:
z = PINx (приём)
PINx = z (выдача)
При сборосе по умолчанию все биты DDRx и PORTx установлены в «0».
Правда, это не относится к Arduino UNO.
Now 21.11.24 21:04:01, Your IP: 18.117.154.229; arduino.zl3p.com/avr/input-output
ePN