A linguagem de programação C é muito utilizada para desenvolvimento de programas embarcados, e conta com uma coleção de regras de sintaxe e de semântica, que devem ser conhecidas e utilizadas pelo programador para construir seus programas.
Considere um programa embarcado em linguagem C, desenvolvido para o microcontrolador ATmega328, onde um Led é acionado a cada iteração de acordo com o valor da variável unsigned char PortLed;. Por que o comando PortLed ^= 0xFF; pode ser usado para isso, invertendo o estado da variável, e consequentemente do Led?
Escolha uma:
a. Porque esse comando representa uma operação lógica AND, e a cada vez que ela é executada, o estado da variável/saída do Led é invertido.
b. Na verdade, esse comando não é responsável por inverter o estado das variáveis, mas sim por acionar os seus bits, apenas. Dessa forma, esse comando está sempre acionando as saídas, ao invés de ligar uma vez, e desligar na próxima, assim sucessivamente.
c. Porque esse é um comando especial para os microcontroladores da família AVR, e, Apesar de não ter nenhuma ligação com operações lógicas, é um comando responsável por inverter os estados da saída, também conhecido em inglês como toggle.
d. Porque todas as vezes que uma porta configurada como saída digital recebe algum comando com o operador “^” os seus estados são automaticamente alternados para o outro valor binário, o que se mostra muito útil em alguns casos especiais.
e. Esse comando é uma abreviação do comando de operação lógica de um único operador, onde o seu próximo valor será o resultado do valor atual com a operação XOR (ou exclusivo) com os bits 0b11111111. Essa operação lógica faz com que todos os bits da variável PortLed (e saída) sejam invertidos, independente dos seus estados.
Soluções para a tarefa
Respondido por
30
Resposta Letra E - Esse comando é uma abreviação do comando de operação lógica de um único operador, onde o seu próximo valor será o resultado do valor atual com a operação XOR (ou exclusivo) com os bits 0b11111111. Essa operação lógica faz com que todos os bits da variável PortLed (e saída) sejam invertidos, independente dos seus estados.
eericsouzza:
muito obrigado
Perguntas interessantes