9
Microcontroladores PIC Manipulação de pinos de I/O com a Linguagem C Compilador: MikroC for PIC 1 Fábio Souza

Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C

Embed Size (px)

DESCRIPTION

exibe os algumas formas de leitura e escritas em pino de I/O usando a linguagem C no compilador MikroC.

Citation preview

Microcontroladores

PIC

Manipulação de pinos de I/O com a Linguagem C

Compilador: MikroC for PIC

1Fábio Souza

• Aprender recurso da linguagem C para manipulação de pinos de I/O digitais;

• Desenvolver aplicações com uso de I/O digitais usando a linguagem C.

2

Objetivos

Fábio Souza

Registradores para trabalhar com pinos de I/O

• TRISX – Configura pino como ENTRADA ou SAÍDA digital• Bit = 0: pino configurado como saída digital;• Bit = 1: pino configurado como entrada digital;• Exemplo:

• TRISA = 0b00001111;

• PORTX –• Quando pino configurado como saída: escreve valor digital;• Quando pino configurado como entrada: lê o valor digital presente no pino;• Exemplo:

• PORTA = 0b10101100;

3Fábio Souza

Usando a linguagem C para Leitura Com variável booleana (1 bit)

• Podemos ler o nível lógico de um pino apenas atribuindo o seu valor a uma variável do tipo booleana (1 bit)

bit valorBt1;

bit valorBt2;

.

.

.

valorBt1 = PORTB.RB0;

valorBt2 = PORTA.RA1;

4Fábio Souza

Usando a linguagem C para Leitura Com variável inteira (8 bit)

• Pode-se ler o valor da porta atribuindo o valor do registrador PORTX a uma variável inteira de 8 bits

unsigned char valor;

.

.

.

valor = PORTB;

5Fábio Souza

Usando a linguagem C para Leitura Com estrutura de controle – if -else• Pode-se testar o valor do pino diretamente dentro da estrutura if-

else, tomando uma ação se condição verdadeira e outra se condiçãofalsa.

if(PORTB.RB0 == 0)

{

//instruções caso o pino esteja em nível 0

}

else

{

//instruções caso o pino esteja em nível 0

}

6Fábio Souza

Usando a linguagem C para Escrita - bit

• Pode-se escrever o nível lógico diretamente no pino configurado como saída:

• PORTB.RB0 = 1;• PORTA.RA3 = 0;

• Pode-se atribuir o valor de uma variável booleana o pino:

• PORTB.RB0 = valoRBit1;• PORTB.RB0 = valoRBit1;

7Fábio Souza

Usando a linguagem C para Escrita - byte

• Pode-se escrever direto no registrado correspondente a porta:• PORTB = 1;

• PORTB = 0xF0;

• PORTA = 0b00001100;

• Pode-se atribuir uma variável inteira de 8 bits ao registrador da porta:• PORTB = variavel1;

• PORTA = variavel2;

8Fábio Souza

Exercícios

1. Fazer um programa para controle de nível de um reservatório de agua• O reservatório possui dois sensores de nível (mínimo e máximo).

• Quando sensor de nível mínimo sem agua (sensor_mínimo = 0) a bomba deverá ligar, quando sensor de nível máximo for atingido (sensor_máximo = 1) desliga bomba.

10Fábio Souza