switch

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

switch

Mensagempor fernandor » 09 Abr 2009 17:09

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;
fernandor
Bit
 
Mensagens: 29
Registrado em: 12 Mar 2009 15:01

Mensagempor guest2003 » 09 Abr 2009 17:18

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
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

Mensagempor fabim » 09 Abr 2009 23:45

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

switch

Mensagempor fernandor » 11 Abr 2009 21:16

valeu fabin...show de bola..ta funcionando beleza.
Poderia explicar porque nao se pode usar o do while??

abraço

fernando
fernandor
Bit
 
Mensagens: 29
Registrado em: 12 Mar 2009 15:01

Re: switch

Mensagempor Renie » 11 Abr 2009 22:30

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
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor fabim » 11 Abr 2009 22:34

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor guest2003 » 11 Abr 2009 22:42

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
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

Mensagempor Renie » 11 Abr 2009 22:54

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
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor guest2003 » 11 Abr 2009 23:28

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
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

menu

Mensagempor fernandor » 12 Abr 2009 11:41

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
fernandor
Bit
 
Mensagens: 29
Registrado em: 12 Mar 2009 15:01

Mensagempor fabim » 12 Abr 2009 23:26

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor guest2003 » 13 Abr 2009 00:36

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
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP


Voltar para PIC

Quem está online

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

cron

x