Página 1 de 1
switch

Enviado:
09 Abr 2009 17:09
por fernandor
boa tarde pessoal...
meu problema é o seguinte. Ao clicar em 1 vai para um submenu e dentro deste submenu somente qdo clicar em 5 que sai dele. O problema é que mesmo nao clicando no 5 ele sai do case 1.
Obrigado
fernando
y = kbd_getc();
switch(y)
{
case '1':
lcd_init();
printf(lcd_putc,"RPM");
printf(lcd_putc,"VOLTAGEM");
if (kbd_getc()=='5')
break;

Enviado:
09 Abr 2009 17:18
por guest2003
Bom não conheco o restante do que vc esta fazendo... mas acho que vc quer isso:
- Código: Selecionar todos
y = kbd_getc();
switch(y)
{
case '1':
do
{
lcd_init();
printf(lcd_putc,"RPM");
printf(lcd_putc,"VOLTAGEM");
} while ( kbd_getc()!='5' );
break;
[]'s

Enviado:
09 Abr 2009 23:45
por fabim
guest2003 escreveu:Bom não conheco o restante do que vc esta fazendo... mas acho que vc quer isso:
- Código: Selecionar todos
y = kbd_getc();
switch(y)
{
case '1':
do
{
lcd_init();
printf(lcd_putc,"RPM");
printf(lcd_putc,"VOLTAGEM");
} while ( kbd_getc()!='5' );
break;
piolhento !! quase isso, só errou no " DO"..rsrs
y = kbd_getc();
switch(y)
{
case '1':
lcd_init();
printf(lcd_putc,"RPM");
printf(lcd_putc,"VOLTAGEM");
while ( kbd_getc() != '5' );//joga paciencia enquanto não chega ASCII 5
break;
[]'s
switch

Enviado:
11 Abr 2009 21:16
por fernandor
valeu fabin...show de bola..ta funcionando beleza.
Poderia explicar porque nao se pode usar o do while??
abraço
fernando
Re: switch

Enviado:
11 Abr 2009 22:30
por Renie
Olá Fernando,
Usando o formato apresentado com o DO, todo o bloco seria
repetido indefinidamente até o ASCII "5", inicializar o LCD,
mandar mensagens e repetir!
Se ficar visível, vai parecer um PWM controlando o brilho ou um
flickler terrível!
[]'s
Renie

Enviado:
11 Abr 2009 22:34
por fabim
Bem olhe aqui.
DO{ }while( diferente);
While(diferente){ };
Diferença pratica ?!
Nenhuma, só frescura de programador com sintaxi.
Agóra o C, é maleavel e escrita menor de sintaxi.
Você quer simplesmente que ele fique prezo ao nada, esperando algo.
Basta simplesmente
while(diferente); <<<<< ponto e virgula, close the sentence,, falando pro compilador ficar frio, que ele não tem chaves pra compilar, e não tem nada pra fazer, a não ser o que esta dentro dos parenteses.
tendeu //?!? zomenu ??
[]´s

Enviado:
11 Abr 2009 22:42
por guest2003
Fabim,
Agora é minha vez ehehehe
do while é diferente sim de while... ne frecura nao...
Primeiro caso
do
{
alguma coisa
} while ( condicao );
Segundo caso
while ( condicao )
{
alguma coisa
}
No primeiro caso independente da condicao o "alguma coisa" sera executado ao menos uma vez... do while ou seja faça enquanto... ele faz a primeira vez e depois olha pra condicao...
No segundo caso , caso a condicao seja falsa o "alguma coisa" nao sera executado nenhuma vez....
Renie
Nao havera flicker, pois o Get prende a execusao do programa ate que seja apertada uma tecla... ou seja, ele atualizaria a tela somente a cada apertada da tecla. (mas realmente fica melhor com o while(); mesmo

Enviado:
11 Abr 2009 22:54
por Renie
Guest,
Um Get prende a execução? Só porque está com o o While né?
Se não for, o C de uC é uma porcaria! hehhehhe
[]'s
Renie

Enviado:
11 Abr 2009 23:28
por guest2003
Acho que ele esta usando o CCS
ele para a execucao sim em qualquer lugar (independente do while), ate que um caracter chegue pela serial...
Se nao quiser que pare tem que usar outras funcoes...
[]'s
menu

Enviado:
12 Abr 2009 11:41
por fernandor
Primeiramente muito obrigado pelos exclarecimentos...Tentei com o do while e com o while e o problema aconteceu com o teclado...depois que pressionava uma vez o teclado as vezes parava de funcionar..
muito obrigado mais uma vez
fernando

Enviado:
12 Abr 2009 23:26
por fabim
guest2003 escreveu:Acho que ele esta usando o CCS
ele para a execucao sim em qualquer lugar (independente do while), ate que um caracter chegue pela serial...
Se nao quiser que pare tem que usar outras funcoes...
[]'s
O praga...rsrs
Dessa do "DO { } while ();
Eu não sabia não..
Fiquei aqui discutindo com o tico e o téco, utilizar este comando seria +/-.
if(PORTX.PINO)
while(PORTX.PINO)
incrementa();
mais no caso.
faça{
incrementa();
}enquanto(PORTX.PINO);
Nossa, tem horas que eu tenho orgulho de ser poliglota em programação..
Cada coisa que eu vejo, aprendo, e não vejo sentido...kkk
[]'s
fabim

Enviado:
13 Abr 2009 00:36
por guest2003
Cada coisa que eu vejo, aprendo, e não vejo sentido...kkk
Fabim,
Da pra fazer muita coisa sem usar muita coisa
Mas as vezes facilita e ajuda...
Por exemplo se quer montar uma tela e exibir quantas tentativas ainda tem
do
{
monta tela
exibe num_tentativas
get_key ( x )
} while (( num_tentativas-- )&&( x invalido ));
Com o Do While fica simples de fazer... claro que tem outras formas.
[]'s