Ir ao conteúdo

Posts recomendados

  • 2 semanas depois...
  • Membro VIP
Postado

pra montagem real, sim, coloque os resistores. Pra simulação não precisa e nem deve pois a torna lenta. Coloque a propriedade do display como digital.

 

Fale como conseguiu fazer contar de 0 a 9 e qual linguagem. Tanto faz o mc mas não posso (não quero) te ajudar com assembly

Postado

 

SE TIVER ALGUMA COISA ERRADA EU NÃO SEI. SÓ SEI QUE FUNCIONA !

 

Ai a programação:

 

#include<16F877a.h>
#use delay(clock=4000000)
#FUSES NOWDT,PUT,BROWNOUT,NOLVP

 
byte const digito[] = { 0b10111111,
                        0b10000110, 
                        0b11011011, 
                        0b11001111, 
                        0b11100110,
                        0b11101101, 
                        0b11111101, 
                        0b10000111, 
                        0b11111111, 
                        0b11100111};
 
void main() 
{
   int contador;  
  
   while (true)   
   {
      for (contador = 0; contador != 10; contador++)  
      {
         output_b (digito[contador]);  
         delay_ms (500);               
      }
   }
}

  • Membro VIP
Postado
for (contador = 0; contador<100; contador++)  
      {
         output_b (digito[contador/10]);  
         output_c (digito[contador%10]);
         delay_ms (500);               
      }

Aparentemente não tens interesse em saber como funciona então... boa sorte

Postado
6 horas atrás, Isadora Ferraz disse:
for (contador = 0; contador<100; contador++)  
      {
         output_b (digito[contador/10]);  
         output_c (digito[contador%10]);
         delay_ms (500);               
      }

Aparentemente não tens interesse em saber como funciona então... boa sorte

Gostaria de saber.Se não for incomodar você poderia explicar??

  • Membro VIP
Postado

1º diga se funcionou

Mas tentemos...

Temos 00 a 99 pra distribuir em 2 ports. Dezena num e unidades noutro. Temos a tabela digito[0] a digito[9] pra distribuir. Então indexaremos unidade com uma e dezena com outra. Pra isso precisamos decompor o dado em centena, unidade

for (contador = 0; contador<100; contador++)  //conta até 99
      {
         output_b (digito[contador/10]);  //dezena num port
         output_c (digito[contador%10]);//unidade em outro.
         delay_ms (500);               
      }

MC´s não gostam de trabalhar com com numeros fracionários. Usaremos isso ao nosso favor. Então ao dividir 34/10, o resultado será 3 (ele despreza o 4). Pronto! taí a parte da dezena. O pulo do gato é a operação de resto %. É o que resta (sobra) da divisão de 34/10 = 4 (ele despreza o 3).. taí o index para a unidade!

 

Tarefa... fatore 123 em 3 variáveis com conteúdo 1...2...3 centena dezena unidade pois quero fazer um contador de 000 a 999. Te vira!

Postado
11 horas atrás, Isadora Ferraz disse:

1º diga se funcionou

Mas tentemos...

Temos 00 a 99 pra distribuir em 2 ports. Dezena num e unidades noutro. Temos a tabela digito[0] a digito[9] pra distribuir. Então indexaremos unidade com uma e dezena com outra. Pra isso precisamos decompor o dado em centena, unidade

for (contador = 0; contador<100; contador++)  //conta até 99
      {
         output_b (digito[contador/10]);  //dezena num port
         output_c (digito[contador%10]);//unidade em outro.
         delay_ms (500);               
      }

MC´s não gostam de trabalhar com com numeros fracionários. Usaremos isso ao nosso favor. Então ao dividir 34/10, o resultado será 3 (ele despreza o 4). Pronto! taí a parte da dezena. O pulo do gato é a operação de resto %. É o que resta (sobra) da divisão de 34/10 = 4 (ele despreza o 3).. taí o index para a unidade!

 

Tarefa... fatore 123 em 3 variáveis com conteúdo 1...2...3 centena dezena unidade pois quero fazer um contador de 000 a 999. Te vira!

Não entendi por que você passou uma  tarefa para min, mas vou tentar fazer.Obrigado mesmo ajudou muito. A programação funcionou.

Ultima duvida :

Nesta parte ►(digito[contador/10]) .Eu posso fazer qualquer tipo de calculo como►(digito[contador-contador²/100*100+10-100²]);  

ou só os que você falou ( / %  )

Se a resposta for sim, a alguma maneira de fazer assim como na matemática partes da equação serem executadas primeiro (exemplo na matemática:-45[-6²x99]-100)

Se a resposta for não obrigador mais uma vez pela atenção

  • Membro VIP
Postado

Bom a tarefa seria pra você expandir seus horizontes e mente e aprender  a colocar 3 dígitos ao invés de só 2. Com 3 você pode p.ex. fazer um voltímetro de 00,0 a 99,9V. Mas se estás feliz até onde chegou então, ....esquece...

 

Sim você pode colocar qualquer equação matemática onde (mas não como) quiseres. P.ex. contador² não é nativo do C. O correto é contador*contador

 

Dica: contador%10 é o mesmo que contador-((contador/10)*10). Lembrando que na divisão é desconsiderada a parte fracionária

 

E apesar de errado, aquele é um caminho pra decompor em unidades suas centena,dezena,unidade

Se achar que deve, vá! Enfrente!

Postado
12 horas atrás, Isadora Ferraz disse:

Bom a tarefa seria pra você expandir seus horizontes e mente e aprender  a colocar 3 dígitos ao invés de só 2. Com 3 você pode p.ex. fazer um voltímetro de 00,0 a 99,9V. Mas se estás feliz até onde chegou então, ....esquece...

 

Sim você pode colocar qualquer equação matemática onde (mas não como) quiseres. P.ex. contador² não é nativo do C. O correto é contador*contador

 

Dica: contador%10 é o mesmo que contador-((contador/10)*10). Lembrando que na divisão é desconsiderada a parte fracionária

 

E apesar de errado, aquele é um caminho pra decompor em unidades suas centena,dezena,unidade

Se achar que deve, vá! Enfrente!

(tive que criar outra conta pois desativei a conta do Facebook e eu entrava por ele)

Sobre a tarefa, o único jeito que eu consegui foi esse ai em baixo, mas quando o contador chega em 260 ele reinicia.do 0 ao 259 ele vai normal mas depois que chega no 260 ele zera

 

for (contador = 0; contador<1000; contador++)  
      {
    if(contador<100){
     output_d (digito[contador/100]);
      output_b (digito[contador/10]);  
      output_c (digito[contador-((contador/10)*10)]);
     delay_ms (80);}
    else{
     output_d (digito[contador/100]);
      output_b (digito[(contador-((contador/100)*100))/10]);  
      output_c (digito[contador-((contador/10)*10)]);
     delay_ms (80);}

 

  • Membro VIP
Postado

Tenta isso - ou algo do gênero. Com os dedos mas digito de cabeça, portanto pode não funcionar kk)

 

unsigned int temp;
for (contador = 0; contador<1000; contador++)  
{
temp=contador;
output_b (digito[temp%10]);
temp/=10;
output_c (digito[temp%10]);
temp/=10;
output_d (digito[temp%10]);
temp/=10;
output_e (digito[temp%10]);
temp/=10;
delay(xxxx);
}

 

 

// 100 /*           */

tenta a sorte

De nada...

Visitante
Este tópico está impedido de receber 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...