15
Microcontroladores PIC Portas de Entrada/Saída Digital Fábio Souza

Microcontroladores PIC - Entradas e saídas Digitais

Embed Size (px)

DESCRIPTION

Entradas e saídas digitais nos microcontroladores PIC com compilador mikroC

Citation preview

Page 1: Microcontroladores PIC - Entradas e saídas Digitais

Microcontroladores PICPortas de Entrada/Saída Digital

Fábio Souza

Page 2: Microcontroladores PIC - Entradas e saídas Digitais

Interface com circuitos externo

• A interface com circuitos externos é feitas através de pinos que sãoagrupados em PORTs.

Page 3: Microcontroladores PIC - Entradas e saídas Digitais

PORTX

• OS PORTs são agrupados em até 8 pinos (bits) e são denominados: PORTA, PORTB, PORTC .... Conforme a quantidade de pinos que o microcontrolador apresenta.

Page 4: Microcontroladores PIC - Entradas e saídas Digitais

Pinos de I/O no PIC16F84

PORTA:RA0RA1RA2RA3RA4

PORTB:RB0RB1RB2RB3RB4RB5RB6RB7

• O PIC16F84 possui 2 PORTs :• PORTA• PORTB

Os PORTs estão divididos da seguinte forma:

Page 5: Microcontroladores PIC - Entradas e saídas Digitais

Configuração

• Os pinos de I/O podem ser configuradas como entrada ou saída conforme a necessidade do hardware.

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/TOCKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84

R110k

X1CRYSTAL

C1

22p

C2

22p

BT1

R210k

D1LED-GREEN

R3

330R

Page 6: Microcontroladores PIC - Entradas e saídas Digitais

Registradores para configuração

• Para definir se um pino será utilizado como entrada ou saída utiliza-se o registrador TRISX.

• No PIC16F84• TRISA

• TRISB

Page 7: Microcontroladores PIC - Entradas e saídas Digitais

Entrada ou Saída?

• Configurando:• Entrada -> bit = 1;

• Saída -> bit = 0

Page 8: Microcontroladores PIC - Entradas e saídas Digitais

Escrita em pino

• Para escrita, o pino correspondente deve estar configurado como saída no registrador TRISX correspondente.

• A escrita é é feita através do registrador PORTX correspondente.

• Exemplo: PORTA -> PIC16F84A

Page 9: Microcontroladores PIC - Entradas e saídas Digitais

Exemplo: Acionando um LED

• LED apagado:

RB7 = 0;Ou

TRISB =0b00000000;

• LED aceso:

RB7 = 1;Ou

TRISB =0b10000000;

0 V 5 V

Page 10: Microcontroladores PIC - Entradas e saídas Digitais

Leitura de nível lógico no pino

• Para leitura, o pino correspondente deve estar configurado como entrada no registrador TRISX correspondente.

• A leitura é feita através do registrador PORTx.

• Exemplo: PORTA -> PIC16F84A

Page 11: Microcontroladores PIC - Entradas e saídas Digitais

Exemplo: Leitura de tecla com resistor de pull-up

• Tecla pressionada• Tecla solta

5 V0 V

RA0 = 1;Ou

PORTA = 0bXXXXXXX1;

RA0 = 0;Ou

PORTA = 0bXXXXXXX0;

Page 12: Microcontroladores PIC - Entradas e saídas Digitais

Acionamento de pino na linguagem C

• Configuração ENTRADA/SAÍDATRISX = 0b00000000;//configura todos os pinos como saída

• Acionando um PINO:PORTX.RXY = 0; //coloca nível 0 no pino

PORTX.RXY = 1; //coloca nível 1 no pino

• Acionando mais de um PINO:PORTX = 0b10100101;//aciona PORTX inteiro de uma vez

X: A, B, C , D... Conforme PORTs

Y: 0,1,2,3.... Conforme pinos

Page 13: Microcontroladores PIC - Entradas e saídas Digitais

Exemplo – Pisca LED

void main() {

TRISB = 0b00000000; //configura todos os pinos do PORTB como saída

PORTB = 0; //desliga todos os pinos do PORTB

while(1){ //loop infinito

PORTB.RB7 = 1; //liga led

Delay_ms(1000); //aguarda 1 seg

PORTB.RB7 = 0; //desliga led

Delay_ms(1000); //aguarda 1 seg

} //repete ciclo

}

Page 14: Microcontroladores PIC - Entradas e saídas Digitais

Leitura de pino em linguagem C

• Configuração ENTRADA/SAÍDATRISX = 0b00000000;//configura todos os pinos como saída

• Lendo um PINO:valor_booleano = PORTX.RXY; //atribui o valor do pino a uma variável booleana

Valor_inteiro = PORTX; //atribui o valor do port todo a uma variável int

if(PORTX.RXY == 0) //verifica o valor do pino e toma uma ação de verdadeiro

{

}

while(PORTX.RXY == 0); //enquanto pino em nível 0 fica no loop

Page 15: Microcontroladores PIC - Entradas e saídas Digitais

Exemplo – Leitura de Teclavoid main() {

TRISA.B0 = 1; //configura pino RA0 como entrada

TRISB.B7 = 0; //Configura pino RB7 como saída

while(1) //loop infinito

{

if(PORTA.RA0 == 0) //se tecla pressionada

{

PORTB.RB7 = 1; //liga led

}

else //se tecla solta

{

PORTB.RB7= 0; //desliga led

}

}

}