Pesquisar neste blog

27/02/2022

Desafio #1 - Contador

Faça um contador que inicie com o número final da matricula e depois comece a contar de 0 a 99 e retorne em forma decrescente. Obs: matrícula = 2022178440488

Resolução:

CÓDIGO FEITO EM CCS C COMPILER

#include <16F877A.h>
#device ADC = 8
#use delay(crystal = 20MHz)
#define tempo 400

int v1[] = {0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01100111};
int tam = sizeof(v1)/sizeof(int);

void contador(int valor1){
   output_b(0b00111111);
   output_d(0b01111111);
   delay_ms(1000);
   
   for(int i = valor1; i < tam; i++){
      output_d(v1[i]);
      delay_ms(tempo);
   }
   
   for(i = 1; i < tam; i++){
      for(int j = 0; j < tam; j++){
         output_b(v1[i]);
         output_d(v1[j]);
         delay_ms(tempo);
      }
   }
      
}

void main(){
   
    contador(8);
        
   while(true){      
      
      delay_ms(1000);
      
      for(int i = tam; i > 0; i--){
         for( int j = 10; j > 0; j--){
            output_b(v1[i-1]);
            output_d(v1[j-1]);
            delay_ms(tempo);
         }
      }
      
      delay_ms(1000);
      
      for (i = 0; i < tam; i++){
         for( int j = 0; j < tam; j++){
            output_b(v1[i]);
            output_d(v1[j]);
            delay_ms(tempo);
         }
      }
     
   }
}



















Resolução 2 feita em no PicSimlab

Código feito em CCS C Compiler

#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES LP                       //Low power osc < 200 khz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock = 20MHz)
#define delay 50

unsigned int i = 0, tempo, cont = 8;

byte const luz [10]={
   0b0111111, //0
   0b0000110, //1
   0b1011011, //2
   0b1001111, //3
   0b1100110, //4
   0b1101101, //5
   0b1111101, //6
   0b0100111, //7
   0b1111111, //8
   0b1101111  //9
};
  
byte const display []={
   0b000000,  // display desligado
   0b000100, // display 1
   0b001000, // display 2
   0b010000, // display 3
   0b100000,  // display 4
   0b1101101, //5
   0b1111101, //6
   0b0100111, //7
   0b1111111, //8
};

void main(){
   
   while(true){
   
      for(tempo = 0; tempo < 10; tempo++){
         i = cont/10;
         output_a(display[7]);
         output_d(luz[i]);
         delay_ms(delay);
  
         i = cont%10;
         output_a(display[4]);
         output_d(luz[i]);
         delay_ms(delay);
      }
      if(++cont >= 100)cont = 8;
      
   }
}



21/02/2022

1) Uma pessoa compra um pote com ovinhos de chocolate e, ao fazer pacotinhos, todos com a mesma quantidade percebeu que colocando 8 ou 9 ou 12 ovinhos em cada pacotinho sempre sobrariam 3 ovinhos no pote. O menor número de ovinhos é: 

Resolução:

8, 9 , 12 | 2
4 , 9, 6  | 2
2 , 9 , 6 | 2
1, 9, 3 | 3
1 , 3, 1 | 3
1 , 1, 1

22 . 32 = 72 + 3 = 75 ovinhos


2) Na linha 1 de 1 sistema métrico os trem partem em 2,4 min. Na linha 2 desse mesmo sistema, os trens partem 1,8 min. Se 2 trens partem simultaneamente das linhas 1 e 2 às 13 horas próximo horário simultaneamente qual será o horário das duas linhas.

Resolução:


24, 18 | 2
12, 9 | 2
6 , 9 | 2
3 , 9 | 3
1 , 3 | 3
1 , 1

22 . 32 = 72 = 7,2 min


3) Quais os divisores comuns entre 90 e 216 ?

Resoluçãao:

MDC (216 , 90) = 18

4) Divibilidade por 90 = { 1, 2, 3, 5, 6, 9, 18 } = 5
Divisibilidade por 216 = { 1, 2, 3, 4, 6, 9, 18} = 4

90 , 216 = { 1, 2, 3, 6, 9, 18 }

5) Calcule o maior número pelo qual dividindo 100 e 68 encontramos restos 10 e 8.

Resolução:

100 | X        
10    q1

68 | X
 8    q2

q1 . X + 10 = 100
q1 . X = 90

q2 . X + 8 = 68
q2 . X = 60

90 , 60 | 30, 30
3 , 2

Portanto: MDC (90 , 60) = 30

6) Qual o menor número que dividindo 15 e 18 deixa sempre o resto 12 ?

Resolução:

15, 18 | 2
15,   9 | 3
5,     3| 3
5,     1| 5
1,    1

2 . 32 = 90            X = 90 + 12 = 102


7) A diferença de idade entre 2 pessoas é de 15 anos e estão entre si 7 para 4.

Resolução:

X - Y = 15         7/4       (X - 4 ) / Y            15 / Y = (7 - 4) / 4         Y = 20

X - 20 = 15        
X = 15 + 20 = 35