Página 1 de 1

switch

MensagemEnviado: 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;

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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