Microcontroladores PIC – O primeiro programa


Agora que já temos uma base e os conceitos fundamentais sobre os microcontroladores PIC, que você pode conferir neste artigo, vamos criar nosso primeiro programa. E claro que o nosso primeiro exemplo será um clássico “acender um led”.

 

A plataforma que utilizaremos daqui para frente na programação será o MikroC. Faremos as simulações no Proteus e posteriormente dependendo do programa, testaremos na prática.

O microcontrolador que iremos utilizar hoje será o PIC 16F628A.

Criando um projeto novo

A primeira coisa que vamos fazer é criar um projeto novo no MikroC. Acompanhe as telas abaixo.

 

File > New > New Project

Na próxima tela você deve configurar o local onde irá salvar seu projeto e definir o microcontrolador utilizado.

 

Figura 1 - Criando um novo projeto

Figura 1 – Criando um novo projeto

 

Antes de finalizar, na última tela você pode selecionar a adição de todas as bibliotecas, ou nenhuma. O compilador conta com um pacote de bibliotecas que visa a facilitar o desenvolvimento para determinados periféricos. Por enquanto deixe marcado a segunda opção. Iremos adicionar as bibliotecas conforme vamos avançando nos próximos artigos.

 

Figura 2 - Inclusão das bibliotecas

Figura 2 – Inclusão das bibliotecas

 

Configurando os fuses

 

Agora que o nosso projeto já está criado, vamos configurar os fuses do microcontrolador. Para isso clique no ícone mostrado abaixo:

Figura 3 - Icone Editar Projeto

Figura 3 – Icone Editar Projeto

 

Vamos entender para que serve cada opção.

 

Oscillator selection: Nesta opção você irá selecionar o oscilador. Em outros artigos veremos essa opção com maiores detalhes. De momento vamos deixar na opção de oscilador interno, pois o 16F628A já conta com este recurso. Portanto selecione a opção INTOSC oscillator: CLKOUT function.

 

Watchdog Timer: O Watchdog possui algumas funções. No entanto a que mais se sobressai é na questão de proteção. Ou seja, ele funciona como um temporizador, em que caso ocorra seu estouro de contagem, reiniciará o sistema. Ele entenderá que houve uma falha ou trava no processo em execução. Vamos deixar desabilitado.

 

Power-up Timer: Esta opção faz com que o microcontrolador fique em reset por aproximadamente 72ms quando for alimentado. De momento deixe desabilitada.

 

RA5/MCLR/VPP Pin Function: Habilitando você estará atribuindo a função de Masterclear para o pino RA5. Deixe desabilitada.

 

Brown-out Detect: Essa opção irá efetuar o reset caso seja detectado uma queda na tensão de alimentação, algo em torno de 4 V. Vamos deixar desabilitada.

 

Low-Voltage Programming: Diz respeito à gravação de memória de programa em baixa tensão. Desabilite-a.

 

Data EE Memory Code Protection: Ativando essa opção, não será possível ler a memória de dados EEPROM. Deixe desabilitada.

 

Flash Program Memory Code Protection: Essa opção impede que seja efetuado a leitura do programa gravado dentro do microcontrolador. Se você quer proteger seu programa desenvolvido para um determinado sistema, essa opção funciona como uma proteção de possível cópia. Por enquanto deixe desabilitada.

 

Após a configuração inicial, nossas definições ficarão conforme a tela abaixo:

 

Figura 4 - Configuração dos Fuses

Figura 4 – Configuração dos Fuses

 

Registradores

Nosso objetivo é acendermos um led. Para isso temos de efetuar algumas configurações em determinados registradores. A melhor forma de fazer isso é consultando o datasheet do componentes, que no nosso caso é o 16F628A.

 

A primeira coisa que vamos fazer é desabilitar os comparadores. Veremos com maiores detalhes em outro artigo as configurações dos comparadores. No momento vamos apenas desabilitá-los. Observe na figura abaixo que consta no datasheet, que para desabilitar devemos ter o valor 111 no registrador correspondente. Este valor está em notação binária, mas você pode escrever de outras formas, como em hexadecimal por exemplo.

 

5 - Comparadores

Figura 5 – Comparadores

 

Após isso teremos de configurar outros dois registradores.

TRIS = Registrador que irá configurar a função dos pinos como saída ou entrada. Atribuindo o valor 0, estamos definindo-o como saída. Atribuindo 1, será definido como entrada.

PORT = Registrador que irá definir o valor dos pinos configurados no registrador anterior. Atribuindo 0, estamos enviando nível lógico baixo, e 1 será enviado nível lógico alto.

 

Vamos definir que teremos um resistor limitador e um led conectados no pino 11 do PIC16F628A. Pelo datasheet, esse terminal refere-se ao RB5.

 

Figura 6 - Esquemático do PIC 16F628A

Figura 6 – Esquemático do PIC 16F628A

Código

Nosso Código ficará conforme abaixo. Observe que os mesmos estão comentados para facilitar a compreensão. Para compilar pressione “CTRL + F9”.

 

 

Simulação

 

A simulação foi efetuada no Proteus. Após compilar o código acima, teremos nosso código em hexadecimal gerado na pasta onde definimos no começo do projeto. Após montar o circuito no Proteus você deve carregar este código, clicando em cima do componente microcontrolador e indicando o caminho em que o mesmo se encontra.

Figura 7 - Simulação PIC16F628A

Figura 7 – Simulação PIC16F628A

 

Prática

Pratica

Inscreva-se para ficar atualizado!

Inscreva-se agora e fique por dentro das novidades do site

Fique tranquilo, respeitamos sua privacidade!

Deixe um comentário

O seu endereço de e-mail não será publicado.