Ir ao conteúdo
  • Cadastre-se

Duvida estrutura em ccs


heliosouza

Posts recomendados

Olá a todos.

Estou aprendendo a programar pic em ccs e surgiu uma dúvida. Já procurei em alguns posts, mas como não encontrei, resolvi criar este tópico.

A dúvida é a seguinte:

No programa abaixo, preciso incluir algumas sub-rotinas e não sei se devo inclui-las antes ou depois do main.


//defines
//declaração de variáveis

**** subrotinas aqui

void main()
{
// configurações do pic

while(true)
{
// programa principal
//chamada para subrotina1
//chamada para subrotina2
}
}


***** ou aqui
//fuses

Agradeço a todos que puderem colaborar

Link para o comentário
Compartilhar em outros sites

Olá vtrx!

Obrigado pela dica. Consultei o exemplo abaixo e vi que as sub-rotinas foram declaradas antes do main e foram inseridas no código, após o main.

http://www.tiexpert.net/programacao/c/prototipos.php

No meu caso, as rotinas não retornam nenhum valor e o programa que fiz já compilei e está rodando. Só quero me certificar se o pic, com esta estrutura que montei, pode vir a travar ou coisa do tipo.

Depois de ver este exemplo, modifiquei meu programa e ficou assim.


#fuses
#defines

//declaração de variáveis
int8 a=0;
int8 b=0;

void status(); //declarei as rotinas aqui, conforme exemplo
void tempo();

void main()
{
while(true)
{
//ajustes do pic
programa principal
//chamada da rotina status
status();
//chamada da rotina tempo
tempo();
}
}

void status() //aqui onde foi inserida a rotina no código
{
//rotina
}

void tempo()
{
//rotina
}
#include

Poderia conferir e ver se tem algum erro? Obrigado.

Link para o comentário
Compartilhar em outros sites

Esta correto,declarando os protótipos,o COMPILADOR e não o PIC,separa a posição de memória para chamá-las...

OK, entendi. Mas me surgiu outra dúvida: Então se o compilador fizer seu trabalho certinho (compilar), o pic por si só não se "perde no programa"?

...sem esse procedimento,teria que colocá-las no começo do código e por ordem de chamada.

Realmente, com a dica que me passou, esclareceu muito essa questão.

Como disse, estou aprendendo e irei me aprofundar mais nos estudos em C.

Link para o comentário
Compartilhar em outros sites

OK, entendi. Mas me surgiu outra dúvida: Então se o compilador fizer seu trabalho certinho (compilar), o pic por si só não se "perde no programa"?

Todo compilador que não seja um compilador ASM (assembler),gera como resultado da compilação um código em linguagem de máquina,que são so bytes que o PIC decodifica.

O PIC decodifica esses códigos começando no seu endereço de 'reset',que geralmente é o endereço 0(0x00) e a partir daí vai decodificando sequencialmente.

Os compiladores são programados para gerarem um código compreensivel ao Microcontrolador e verificam possíveis erros de compilação mas não de algorítimo,se o PIC se 'perder' é por causa da lógica do seu programa e tem que ser assim pois voce tem que ter todas as opções disponíveis para voce,mesmo que não funcione direito pois a função de um compilador é gerar os códigos hexadecimais e verificar erros de síntase e não erros de algorítimos.

Não se preocupe com o resultado do compilador.

Como disse, estou aprendendo e irei me aprofundar mais nos estudos em C.

Não se esqueça de um grande detalhe para quem começa a programar para microcontroladores.

A programação em C não tem ligação com a lógica eletronica de um microcontrolador,isto quer dizer,se voce é um exímio programador C,isto não garante sucesso na programação do microcontrolador pois microcontrolador não é programação C,mas sim um periférico eletrônico que deve ser estudado a aparte da programação.

Link para o comentário
Compartilhar em outros sites

OK, vtrx.

Era isso que eu pretendia com minha dúvida: Saber ao certo, onde colocar cada coisa no seu lugar, afim de evitar erros.

O programa foi compilado com sucesso e os testes no hardware (até o momento) estão indo bem. Preciso agora fazer alguns testes "de estresse" no hardware todo para verificar se ainda existem falhas.

Sei que a programação em C não tem ligação com a lógica eletrônica, mas no compilador que uso, as estruturas do programa são bastante semelhantes (If, Else, While, variáveis e etc).

Sua opinião foi de grande ajuda e agradeço por isso. Um abraço.

Sr.Moderador: dúvida resolvida.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!