– home / Fóruns / Módulo 5 / Bloco M5-15 / Bloco M5-15 / Questão 11

  • Autor
    Posts
  • Anônimo
    2019-10-01 até 00:00 #40003304002

    Seja o primeiro a fazer uma pergunta sobre esta questão.

    2020-05-19 até 00:00 #40003279665

    Bloco M5-15 / Questão 11

    2021-03-04 até 22:00 #40003360341

    Gostaria de uma explicação sobre esta questão, entendi que:

    output_b é um comando para controlar o portB. Mas não entendi como resolver a variável dentro do ( ) que desta questão é output_b (0xFF)

    Observação: Talvez seria converter o hexadecimal FF para binário? = 11111111 . Neste caso o portB seria todo levado a nível lógico alto ?

    2021-03-10 até 16:04 #40003360426

    Boa tarde, Derlei!

    Segue aqui uma breve resposta elaborada pelo nosso Professor Ricardo no gupo.

    Pois bem, é compreensível que tenhamos que passar um valor para a instrução de controle de ports (além de várias outras).
    Também é compreensível que esse valor deve ser o número do pino que se deseja controlar.
    Mas aí vem o primeiro questionamento:
    “por que não passamos simplesmente um número no formato decimal então, não é muito mais fácil escrever apenas pino 1, pino 2, pino 3…”

    Resposta: Sem dúvidas é mais fácil sim!!

    Entretanto, na maior parte das vezes não vamos acionar um único pino.
    Aí vem o nosso primeiro problema, imagine que tenhamos que acionar o pino 1 e 2 de um determinado Port. O que você faria nessa situação??

    Resposta: Posso usar uma instrução para ligar o pino 1 e OUTRA instrução para ligar o pino 2.

    Porém, veja que estamos gastando duas instrução aqui…
    Nada errado nisso!!

    Entretanto, e se precisarmos ligar três, quatro, cinco pinos simultâneos de um Port. Vamos usar três, quatro, cinco instruções separadas para fazer a mesma coisa (ligar pino)????

    Resposta: não!!!
    Iremos usar uma instrução só. Entretanto, qual valor vou passar como parâmetro para indicar a ligação de dois ou mais pinos simultâneos??

    Veja que para ligar o pino 1 eu posso passar para função o número 1 (em decimal mesmo).
    Agora, se eu for ligar o pino 1 e o 2. Eu não posso passar 12 (doze), correto?

    É aí que vem a necessidade de se utilizar notações que permitam o agrupamento de valores de forma compreensível ao microcontrolador.

    Utilizando a notação Hexadecimal, além de permitir uma redução do tamanho da sintaxe da expressão (veja que com dois dígitos FF, por exemplo, eu escrevo um valor equivalente a três dígitos, pois FF equivale a 255.

    Para o microcontrolador o Hexadecimal é uma notação excelente. Já é natural para o mesmo a sua compreensão.
    Suas conversões são mais difíceis para nós, humanos. Porém, muito mais simples para os controladores, que aliás, nativamente já as utilizam em seus registradores.

    Por esse motivo, passar parâmetros em Hexadecimal é sempre mais “elegante” e supostamente mais otimizado.

    Nada os impede de passar os valores em decimal (quando possível) ou binário. Porém, nesses casos será mais simples para você fazer a conversão. Mas mais complicado para o microcontrolador.

    Repito, nada errado em se utilizar decimal e binário vez ou outra. Mas é bom se acostumar a passar valores em hexa, pois projetos maiores serão beneficiados com essa simples prática.

    2021-03-10 até 16:15 #40003360427

    Pois bem creio que já tenha finalizado a aula 5 e viu o uso dessa instrução output, deve ter aprendido que podemos usar ela para se referir a um pino como também a um port inteiro do Microcontrolador. Sendo assim já está claro que as questões se relacionam a um port. Agora falta entender o que é esse valor dentro do parâmetro da instrução, certo?
    Então vamos lá, para essa instrução você precisa saber que podemos definir valores em hexadecimal usando 0x’VALOR’, binário 0b’VALOR’ e em decimal atribuindo o valor direto.
    Para responder essas questões basta saber o valor dos parâmetros e associar com os pinos.

  • Você precisa estar Conectado(a) para Responder a este Tópico.