Escolar Documentos
Profissional Documentos
Cultura Documentos
#include <stdbool.h>
#include <stdint.h>
#include <avr/io.h>
#include <util/delay.h>
#define BUTTON_PIN 0
#define LED_PIN 1
int main(void) {
// Inicializar as portas A e B
DDRA &= ~(1 << BUTTON_PIN); // Configurar a porta A como entrada
DDRB |= (1 << LED_PIN); // Configurar a porta B como saída
PORTB &= ~(1 << LED_PIN); // Inicializar a porta B em 0 (LED apagado)
while (1) {
// Ler o estado da porta A
bool button_state = (PINA & (1 << BUTTON_PIN)) != 0;
return 0;
}
1 - b)
As memórias FLASH e RAM são dois tipos diferentes de memória que são usados
em sistemas eletrônicos, como computadores e dispositivos móveis. A principal
diferença entre as duas é a forma como elas armazenam e acessam informações.
A memória RAM é uma memória de acesso aleatório. Ela é usada para armazenar
temporariamente dados e programas que estão sendo executados em um
dispositivo. A RAM é uma memória volátil, o que significa que ela perde seus dados
quando a energia é desligada. Ela é composta por células de memória que podem
ser lidas e escritas várias vezes, permitindo o acesso rápido a dados armazenados.
Já a memória FLASH é uma memória não volátil que é usada para armazenar dados
permanentemente. Ela é usada para armazenar informações em dispositivos como
telefones celulares, câmeras digitais e pen drives. A memória FLASH é mais lenta do
que a RAM, mas é mais barata e consome menos energia. Ela armazena dados em
células de memória que podem ser programadas e apagadas, mas não podem ser
lidas diretamente. Para ler dados armazenados em uma memória FLASH, os dados
precisam ser transferidos para a RAM primeiro.
1 - c)
Os blocos que integram a CPU (Unidade Central de Processamento) são
responsáveis por realizar as operações necessárias para processar as informações
em um computador. Entre esses blocos, destacam-se:
III. Unidade Lógica Aritmética (ULA): A ULA é responsável por realizar as operações
aritméticas e lógicas no processador. Ela é a parte da CPU que realiza as operações
de adição, subtração, multiplicação e divisão, além de operações lógicas como AND,
OR, NOT, XOR e outras. A ULA recebe dados dos registradores e executa as
operações de acordo com as instruções da UC.
Em conjunto, os registradores, UC e ULA trabalham juntos para executar as
instruções do programa em um computador. A UC controla a sequência de
instruções, a ULA executa as operações aritméticas e lógicas, enquanto os
registradores armazenam temporariamente os dados necessários para a execução
das instruções. Esses blocos são essenciais para o processamento de dados em
um computador e são encontrados em todas as CPUs modernas.
2 - a)
Os registradores TRIS e PORT são usados nos microcontroladores PIC para
controlar as configurações de entrada/saída dos pinos de E/S (entrada/saída).
2 - b)
2 - c)
A próxima instrução "LDI R16, 8" carrega o valor decimal 8 no registrador R16.
A instrução "ADD R16, R17" adiciona os valores dos registradores R16 e R17 e
armazena o resultado em R16.
Portanto, resumindo, o código carrega dois valores (8 e 13) nos registradores R16 e
R17, armazena esses valores nas posições de memória X e Y, carrega os valores
dessas posições de memória nos registradores R16 e R17, adiciona os valores
desses registradores e armazena o resultado na posição de memória RES.
2 - d)
LDI R16, 8
STS X, R16
LDI R17, 13
STS Y, R17
LDS R16, X
LDS R17, Y
ADD R16, R17
STS RES, R16
#define X 0x99
#define Y 0x9A
#define RES 0x9B
int main(void) {
int R16, R17;
R16 = 8;
*(int*)X = R16;
R17 = 13;
*(int*)Y = R17;
R16 = *(int*)X;
R17 = *(int*)Y;
R16 += R17;
*(int*)RES = R16;
return 0;
}