Você está na página 1de 23

Microcontroladores de

Microprecessadores
Aula 07
Curso Engenharia de Controle e Automação

Universidade Paulista

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

PORTs

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

REGISTRADORES DE PORTAS

Cada canal é controlado por três Registradores


Sendo um de configuração
Um de manipulação de portas digitais
E um só de leitura
E cada qual pode ser definido como variável
de sistema.

Existe um registrador chamado DDR que configura o sentido da porta se ela é de saida
(OUTPUT) ou de entrada (INPUT).

O Registrador PORT controla se a porta está no estado lógico alto (HIGH) ou baixo
(LOW).

O Registrador PIN que efetua a leitura das portas configuradas como INPUT pela função
pinMode()

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

REGISTRADORES DE PORTAS
Os Registradores DDR e PORT podem ser escritos e
lidos. Já o Registrador PIN só pode ser lido.
PORTD mapeado para as portas
digitais PD0 até PD7

PORTD mapeado para as portas digitais 0 até 7


DDRD - Registrador de Sentido do Port D - leitura/escrita
PORTD - Registrador de Estado do Port D - leitura/escrita
PIND - Registrador das Entradas do Port D - leitura apenas
© UNIP 2020 all rights reserved
Técnicas de Desenvolvimento de Software

REGISTRADORES DE PORTAS
Os Registradores DDR e PORT podem ser escritos e
lidos. Já o Registrador PIN só pode ser lido.
PORTB mapeado para as portas PB0 até PB7
Os dois bits mais altos (6 e 7) são dos
pinos do cristal e não são usados.

DDRB - Registrador de Sentido do Port B - leitura/escrita


PORTB - Registrador de Estado do Port B - leitura/escrita
PINB - Registrador das Entradas do Port B - leitura apena

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

REGISTRADORES DE PORTAS
Os Registradores DDR e PORT podem ser escritos e
lidos. Já o Registrador PIN só pode ser lido.

PORTC mapeado para as portas


analógicas 0 até 5

DDRC - Registrador de Sentido do Port C - leitura/escrita


PORTC - Registrador de Estado do Port C - leitura/escrita
PINC - Registrador das Entradas do Port C - leitura apenas
© UNIP 2020 all rights reserved
Técnicas de Desenvolvimento de Software

PORTs

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

PORTs

DDRB
BIT 7 6 5 4 3 2 1 0
PIN - - 19 18 17 16 15 14
DDRC
BIT 7 6 5 4 3 2 1 0
PIN - - 28 27 26 25 24 23
DDRD
BIT 7 6 5 4 3 2 1 0
PIN 13 12 11 6 5 4 3 2

BIT NÃO IMPLEMENTADOS

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

DDRX - Data Direction Register

Os registradores do tipo DDR (Data Direction Register) são responsáveis por


determinar se os pinos de um determinado PORT se comportarão como entrada ou
saída. Cada bit do registrador DDR controla o estado do respectivo pino.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

MANIPULANDO REGISTRADORES
Por exemplo: O bit 1 do registrador DDRB (DDB1) controlará o estado do pino PB1 e
consequentemente o pino 15 do ATMEGA 328P.

Peso / ordem
dos bits

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

MANIPULANDO REGISTRADORES

VANTAGENS DA MANIPULAÇÃO DIRETA DE REGISTRADORES


Leitura e escrita mais rápida nos pinos.
Ler e escrever em mais de um pino de uma mesma porta por vez.
O código produzido se torna mais compacto, ocupando menos espaço na memória
flash.
DESVANTAGENS
O código produzido é menos portável, difícil de debbugar e de ser mantido

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Manipulando Registradores
COMO DEFINIR UM PINO POR REGISTRADORES
Operadores bit a bit
No AVR algumas constantes podem ser definidas

Operador Descrição
& AND bit a bit
| OR bit a bit
^ XOR bit a bit
<< Shift para esquerda
>> Shift para esquerda
~ NOT bit a bit

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Manipulando Registradores
DIREÇÃO DO REGISTRO DE DADOS DA PORT B

Peso / ordem
dos bits

Para definir um pino como saída devemos setar seu


respectivo bit do registrador DDR como 1 e para
defini-lo como entrada seta-lo para 0.

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Manipulando Registradores
DIREÇÃO DO REGISTRO DE DADOS DA PORT B

Peso / ordem
dos bits

DDRB = 0b0000010
1

/* Equivalente: | => Operação de soma


pinMode(15,OUTPUT); & => Operação de multiplicação
pinMode(15,INPUT);
*/
DDRB |= (1 << DDB1); saída setar bit do registrador DDR como 1
DDRB &= ~(1 << DDB1); entrada setar bit do registrador DDR como 0
© UNIP 2020 all rights reserved
Técnicas de Desenvolvimento de Software

Manipulando Registradores
DIREÇÃO DO REGISTRO DE DADOS DA PORT B

Os registradores do tipo PORT são responsáveis por


determinar se um pino está definido como alto (HIGH)
ou baixo (LOW).
Para definir um pino como alto devemos setar seu
respectivo bit do registrador DDR como 1 e para defini-
lo como baixo seta-lo para 0.

PORTB = 0b000000X0
/* Equivalente:
pinMode(15,OUTPUT);
digitalWrite(15,HIGH);
0x02; // PB1 (pino15) => 0000_00X0 */

DDRB |= (0 << DDB1);


PORTB &= ~(0 << PORTB1);

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Manipulando Registradores
DIREÇÃO DO REGISTRO DE DADOS DA PORT

DDRD = B11111110; // configura portas 1 ate 7 como saidas,


// e a porta 0 como entrada

DDRD = DDRD | B11111100; // esta é uma forma mais segura


// de configurar os pinos 2 ate 7 como saida
// sem mudar as configuracoes dos
// pinos 0 e 1 que sao da serial

| => Operação de soma

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Manipulando Registradores
DIREÇÃO DO REGISTRO DE DADOS DA PORT
PORTD é o Registrador dos estados das saídas.

PORTD = B10101000; // registra valor HIGH


// nas portas digitais 7,5,3

Para que tenhamos nível lógico alto (5V) saindo nessas portas, devemos
configurar o Registrador DDRD como saída, ou através da função pinMode().

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

Endereçamento das portas


Port B (PB7:0) 8 bits => 256
Para escrever no pino PB0 a referencia é:
0x01, equivalente ao pino14
Valor Binário (0000_0001)

Para escrever no pino PB2 a referencia é:


0x04, equivalente ao pino16
Valor Binário (0000_0100)

Para escrever no pino PB4 a referencia é:


0x10, equivalente ao pino18
Valor Binário (0001_0000)

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software (slide 01/20)

Exemplo de aplicação
Port B (PB7:0) 8 bits => 256
Para escrever no pino PB0 a referencia é:
0x01, equivalente ao pino14
Valor Binário (0000_0001)

Exemplos de acionamento bit a bit


void setup() {
DDRB = 0b0000001; //Pino PB0 (Pino 14) como saída
PORTB = 0b00000000; //Todos os pinos em nível baixo (LOW)
}

void loop() {
PORTB = 0x01; // PB0 (pino14) => 0000_0001
}

Saída setar bit do registrador DDR como 1


Nível baíxo setar bit do registrador PORTB como 0

© UNIP 2020 all rights reserved


© UNIP 2020 all rights reserved
Técnicas de Desenvolvimento de Software (slide 01/20)

AJUSTE DO OSCILADOR EXTERNO


EDIT COMPONENT
CLKDIV8 (Divide clock by 8)

(1) UNPROGRAMMED

CKSEL FUSES

(0000) EXT. CLOCK


Advanced Properties
Clock Frequency - 16Mhz

© UNIP 2020 all rights reserved


void setup() {
DDRD = B00000010; // configura portas 1 ate 7 como saidas,
//DDRD = B00000100;
// configura portas apartir da PD 02 ate PD07 como
// saidas, não alterar pinos PD0 e PD1 (comunicação serial)

PORTD = B00000000; // Inicia com valor LOW

void loop() {
PORTD = B00000100; //PORTD = 0x3C; //B00111100;
delay(1000); //Aguarda intervalo de tempo em milissegundos
PORTD = B00000000; //PORTD = 0x00; //B00000000;
delay(1000); //Aguarda intervalo de tempo em milissegundos
}

© UNIP 2020 all rights reserved


Técnicas de Desenvolvimento de Software

ATIVIDADE
Quando acionada as quatro sinalizações luminosas
devem oscilar a um intervalo igual a 1 segundo.

CONDIÇÕES DE CONSTRUÇÃO
O endereçamento das entradas e saídas deve ser
montado em apenas uma linha de instrução usando
direção do registro de dados, respectivamente, para
otimizar o espaço de memória flash do
microprocessador.

CONDIÇÕES DE ENTREGA
Diagrama elétrico (Proteus 7,8 )
Código (Bloco de notas)

© UNIP 2020 all rights reserved

Você também pode gostar