Upload
fabio-souza
View
2.950
Download
3
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