Incremento com mikroC+McLab 1

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Incremento com mikroC+McLab 1

Mensagempor r.bertini » 13 Out 2008 20:13

Olá pessoal,

fiz o seguinte programa:
Código: Selecionar todos
configs()
{
cmcon=0x07;
option_reg=0x80;
intcon=0x00;
trisb=0x00;
}
void main(){
configs();
int i;
i=0;
while(i<10){
i++;
portb=i;
}}


Mas o marvado só incrementa 1x
Este programa foi um teste de incremento, o que pretendo é escrever um programa que ao pressionar o botão 1 ligado ao RA1 incremente a variável e ao pressionar o botão 2 ligado ao RA2 execute uma rotina o número de vezes contido na variável.

Mas nem com o incremento automático não vai.

Alguém tem uma idéia?

Valeu.
R.Bertini
__________________________________
#include<stdio.h>
main()
{
printf("\n R.Bertini");
}
r.bertini
Bit
 
Mensagens: 28
Registrado em: 30 Ago 2008 01:43

Mensagempor turuna » 14 Out 2008 12:15

Posso estar enganado, mas a variável "i" deve ser declarado acima do main, ou não?

Turuna
turuna
Nibble
 
Mensagens: 97
Registrado em: 10 Mar 2008 12:50

Eita!!

Mensagempor r.bertini » 14 Out 2008 16:31

Boa Turuna, era isso mesmo, agora o incremento automático funfou.
porém tive de colocar um delay pra poder observar.
No caso do incremento por botão eu fiz esse programinha aki, mas naum funfa mesmo.

Código: Selecionar todos
configs()
{
cmcon=0x07;
option_reg=0x80;
intcon=0x00;
trisb=0x00;
}
int i;
void main()
{
configs();
while(1)
{
if(porta.f1==0)
{
i++;
}
if((porta.f2==0)&&(i>0))
{
portb=i;
Delay_ms(3000);
portb=0x00;
i--;
}} }
R.Bertini
__________________________________
#include<stdio.h>
main()
{
printf("\n R.Bertini");
}
r.bertini
Bit
 
Mensagens: 28
Registrado em: 30 Ago 2008 01:43

Mensagempor joao » 14 Out 2008 17:33

Alguém poderia explicar porque a declaração deveria ser em cima do main?
Eu ainda não entendi. :)
Isso é alguma coisa do MikroC? Ou da linguagem C?

Porque se for em cima do C ela se torna global, correto? mas não consigo ver um problema dela estar dentro do main e ser uma variavel local apenas.

Obrigado,
Joao
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor Jorge_Francisco » 14 Out 2008 17:58

Teria que colocar logo depois de main(){, resumindo, no inicio do bloco main, fora deste bloco é global.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor joao » 15 Out 2008 04:10

Pois então Jorge_francisco,

Mas o Turuna e o r.bertini falaram que tem que ser fora do main.
Sem contar que dessa maneira não deveria nem compilar, não é? Geraria um erro de declaração de variável.

Isso que não entendi ainda. Como que funcionou a compilação daquela primeira maneira?

[]'s
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Re: Eita!!

Mensagempor turuna » 15 Out 2008 12:03

r.bertini escreveu:Boa Turuna, era isso mesmo, agora o incremento automático funfou.
porém tive de colocar um delay pra poder observar.
No caso do incremento por botão eu fiz esse programinha aki, mas naum funfa mesmo.

Código: Selecionar todos
configs()
{
cmcon=0x07;
option_reg=0x80;
intcon=0x00;
trisb=0x00;
}
int i;
void main()
{
configs();
while(1)
{
if(porta.f1==0)
{
i++;
}
if((porta.f2==0)&&(i>0))
{
portb=i;
Delay_ms(3000);
portb=0x00;
i--;
}} }



faltou vc colocar o porta,1e 2 como entrada ai funfa.

Turuna
turuna
Nibble
 
Mensagens: 97
Registrado em: 10 Mar 2008 12:50

Valeu Turuna

Mensagempor r.bertini » 15 Out 2008 19:12

Foi só configurar os pinos do porta como entrada que funcionou mesmo.

Valeu por me ajudar.

Eu tinha configurado uma vez o trisa como todos entrada mas essa placa tem uma lâmpada ligada ao bit RA0. Acho que é para o comparador analógico. E ao rodar o programa a marvada acendia, por isso não declarava as entradas.



:D
R.Bertini
__________________________________
#include<stdio.h>
main()
{
printf("\n R.Bertini");
}
r.bertini
Bit
 
Mensagens: 28
Registrado em: 30 Ago 2008 01:43

Mensagempor r.bertini » 15 Out 2008 19:19

joao escreveu:Pois então Jorge_francisco,

Mas o Turuna e o r.bertini falaram que tem que ser fora do main.
Sem contar que dessa maneira não deveria nem compilar, não é? Geraria um erro de declaração de variável.

Isso que não entendi ainda. Como que funcionou a compilação daquela primeira maneira?

[]'s


Foi o que você falou mesmo

variavel antes de função = Global

Variável dentro de função = Local

Isso é coisa da Linguagem. se você declara uma variável global pode usá-la em todo o programa, mas se declara ela local só poderá usá-la na função em que ela foi declarada.

No meu caso eu declarei ela local no main, ainda não sei o porque de não funcionar.
R.Bertini
__________________________________
#include<stdio.h>
main()
{
printf("\n R.Bertini");
}
r.bertini
Bit
 
Mensagens: 28
Registrado em: 30 Ago 2008 01:43


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x