Programação C para PIC - Básico do Básico - Entradas e Saídas.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Programação C para PIC - Básico do Básico - Entradas e Saídas.

Mensagem por Ray Alves em Qua Ago 07, 2013 7:48 pm

Bem venho aqui compartilhar com esse fórum um pouquinho de meu conhecimento em programação lembrando que este post é mais direcionado a quem não tem conhecimento algum em programação para PIC.

Então vamos lá ;D
Bom para começarmos nossa programação vamos precisar de dois software, primeiro o compilador (onde vamos digitar nosso código) e outro onde iremos fazer a simulação de nosso código.
Então ai vai:

MikroC PRO for PIC  versão 6.0.0  pode ser encontrado gratuitamente no site do próprio desenvolvedor.
Proteus 8 Professional (DEV)  Já esse creio que não será possível encontrar gratuitamente, mas creio que há uma versão DEMO, sendo o único problema de não poder salvar o projeto.

Então vamos lá?
Bom primeiramente temos que abrir o MikroC,

Clicamos em ' New Project'


Após clicar em New Project e Next, virá uma parte muito importante na hora de programar, que é a parte onde você deve escolher qual Microcontrolador da família pic, qual Clock ou cristal que você está utilizando, o nome do projeto e onde você irá salvar o arquivo.


No step 2: por enquanto não iremos mexer, apenas clique em Next



já no step 3: na área de Include Libraries devemos deixar  a caixa de "Include None (Advanced)" ativo e next


step 4: Apenas dê Finish, feito isso irá abrir a parte de programação do mikroC


repare que já vem escrito um código
Código:
void main (){

}
este código ele sempre irá aparecer toda vez que você criar um novo projeto, mas o que é ele?
O código "void main"  ou melhor "main" é chamado de função principal é ele que dá entrada ao código e boa parte do código deve ser escrito dentro das chaves.

Agora entraremos dentro do código, porém antes precisamos entender um pouco das pinagens do PIC para poder programa-las

Como estamos utilizando o pic P16F877A de 40 pinos, repare que há conjuntos diferentes de pinos como do pin 40~33 chamado de RB, e outros também marcados como RA,RC,RD E RE. Há também outros pinos porém não iremos utiliza-los no momento, pelo menos não neste post. Os pinos de RB0 à RB7 e RD0 à RD7 é conhecido por conjunto completo de I/O ou seja de Input ou Output (entrada e Saída), todos eles podem ser configurados facilmente como ambos.
então como fazemos isso?
Código:
trisb.rb0 = 0; // para configurar o pino rb0 como saída
trisd.rdo = 1; // para configurar o pino rd0 como entrada

A palavra TRIS representa a configuração, e o B é que esta configuração está localizada no grupo B, porém temos um .rb0
Este .RB0 está especificando qual pino do grupo B eu irei configurar, caso não tivesse feito isto, todos os pinos do grupo (RB0, RB1, RB2, RB3, RB4, RB5, RB6 e RB7) estariam configurado para entrada ou saída.

Código:
trisb.rb0 = 0; //  valor 0 (zero) configura o pino para saída
trisb.rb1 = 1; //  valor 1 (um)  configura o pino para entrada

Sabendo isto podemos dar continuidade ao código.
Depois da função principal, da configuração dos pinos entraremos em uma coisa chamada de "loop infinito" ou melhor "While"
na programação para pic a palavra tris somente irá aparecer na hora de configurar o pino, já na hora de fazer a atuação no pino (exemplo: ligar e desligar um led) não utiliza tris, até mesmo que tris é para configurar o pino, utiliza-se port e ele funciona da mesma maneira que o tris. "PORT" atuação "B" grupo e o ".RB0" especificação.
Código:
void main (){ // função principal
 trisb.rb0 = 0; // configura o pino rb0 como saída
 portb.rb0 = 0; // da nenhuma atuação ao pino
 while(1){ // loop infinito ligado

 } // fecha while
 } // void
então como não quero que meu programa comece com o pino rb0 em alto (ligado) deixe-o com valor 0.
perceba que agora colocamos o "while(1)" no código. O while com o valor nos parênteses 1, permite que tudo dentro dele esteja em um loop constante, este comando é essencial para que seu código funcione, porque creio o programador nunca irá querer um código que funcione apenas uma vez e pare. Laughing

Bom, agora temos conhecimento de todas as ferramentas para fazer um pisca-pisca com led ficando assim:

Código:
void main(){
 trisb.rb0 = 0;
 portb.rb0 = 0;
 while (1){
 portb.rb0 = 1;
 delay_ms (1000);
 portb.rb0 = 0;
 delay_ms (1000);
}// fecha while
}// fecha void
Creio que vocês tenham notado um novo código, "delay_ms (1000)". Este comando nada mais é um tempo contado em milissegundos e dentro dos parênteses você pode determinar o valor de espera, como em um pisca-pisca fica um tempo ligado e em outro desligado, precisamos utiliza-lo. Bom agora é só pegar o código colocar no MikroC e compilar

Para compilar (Transformar o arquivo em hex, e verificar se código tem algum problema), basta clicar nesta engrenagem


Feito isto se tudo estiver ok, uma mensagem azul deve aparecer na parte inferior do compilador como essa.


Agora é a hora de simular.
vamos lá??
Vou estar disponibilizando um placa minha feita no proteus, para que podemos dar continuidade aos post, então só baixar e abrir pelo proteus

Placa v1 Ray Alves

Plaquinha


Agora é só clicar duas vezes no microcontrolador, depois clicar ali na pastinha amarela para procurar o local onde você salvou seu código


E mandar abrir, depois da ok.


Feito isso agora é só clicar em um dos pinos dos leds (parte inferior) e colocar no RB0




Por fim, agora é só dar play e ver o seu código funcionando
ligado por 1000 ms

desligado por 1000 ms


Então galera por hoje é só !
Obrigado !
avatar
Ray Alves

Mensagens : 6
Pontos : 10
Data de inscrição : 06/08/2013
Idade : 22

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Programação C para PIC - Básico do Básico - Entradas e Saídas.

Mensagem por Gregory em Sab Ago 10, 2013 7:49 pm

Cara. Que material maravilhoso! Parabéns, é disso que precisamos!
avatar
Gregory
Admin

Mensagens : 59
Pontos : 88
Data de inscrição : 03/08/2013
Idade : 22

Ver perfil do usuário http://alleletronicsgr.forumeiros.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum