Sistemas Embarcados Programação Embarcada



Documentos relacionados
Introdução à Programação

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Programação: Tipos, Variáveis e Expressões

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Componentes da linguagem C++

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Linguagens de Programação

Sistemas de numeração

Programação Básica em Arduino Aula 2

Circuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS

ULA Sinais de Controle enviados pela UC

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Algoritmos e Programação

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I Juliana F. Camapum Wanderley

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM. Conceitos Básicos ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Representação de Dados (inteiros não negativos)

Roteiro 1: Dados, variáveis, operadores e precedência

Orientação a Objetos

Sistemas de Numeração

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

1. NÍVEL CONVENCIONAL DE MÁQUINA

Organização e Arquitetura de Computadores I

Programação de Computadores - I. Profª Beatriz Profº Israel

13 Números Reais - Tipo float

LÓGICA DE PROGRAMAÇÃO

INTRODUÇÃO À LINGUAGEM C++

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Exemplo de Subtração Binária

Variáveis e Comandos de Atribuição

Tipos de Dados Simples

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS

ARQUITETURA DE COMPUTADORES

A TI-89 / TI-92 Plus permite também comparar ou manipular números binários bit a bit.

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Algoritmos e Programação Estruturada

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Sistemas de Numeração. Professor: Rogério R. de Vargas INFORMÁTICA 2014/2

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Linguagem algorítmica: Portugol

Sistemas Numéricos bit / Byte BIT BYTE. Prof. Celso Candido ADS / REDES / ENGENHARIA

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Unidade 5: Sistemas de Representação

Capítulo 2. Numéricos e Códigos Pearson Prentice Hall. Todos os direitos reservados.

Controladores Lógicos Programáveis CLP (parte-3)

Hardware de Computadores

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Manipulação de Arquivos

2. Representação Numérica

Aula 3 - Sistemas de Numeração

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

20 Caracteres - Tipo char

Aula 2 Sistemas de Numeração (Revisão)

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Arquitetura de Computadores. Tipos de Instruções

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

1. CAPÍTULO COMPUTADORES

Java Como Programar, 8/E

Sistemas de Numerações.

INF 1005 Programação I

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Introdução a C Tipos de Dados Variáveis Operadores

Representação de Dados

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]

DeviceNet Drive Profile CFW-09

CAPÍTULO 6 ARITMÉTICA DIGITAL

PROGRAMA DE GERENCIAMENTO DOS AMPLIFICADORES MR 4.50D-XT MR 6.50D-XT MR 6.80-XT Rev. 2.3 de 29/01/2014

Manual MifareUSB/Serial

Programação. Folha Prática 3. Lab. 3. Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Representação de Dados Inteiros com sinal

Programação de Robótica: Modo Circuitos Programados - Avançado -

Fabio Bento

Sistemas Microcontrolados

CONVENÇÃO DE CÓDIGO JAVA

ELETRÔNICA. Changed with the DEMO VERSION of CAD-KAS PDF-Editor ( INTRODUÇÃO

Jacson Rodrigues 1

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Capítulo 2: Introdução à Linguagem C

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

INF 1005 Programação I

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Transcrição:

Sistemas Embarcados Programação Embarcada Instituto Federal de Pernambuco Coordenação de Informática/IFPE Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://alsm.cc

Sistemas Embarcados Direitos de Licença Attribution ShareAlike 3.0 Você é livre para Copiar, distribuir, mostrar, e adaptar o trabalho Para fazer trabalhos derivados Para fazer uso comercial do trabalho Seguindo certas condições Atribuição. Você deve dar os devidos créditos ao autor original. Compartilhar. Se você altera, transformar ou construir em cima deste trabalho, você deverá distribuir o trabalho resultante somente sobre uma licença idêntica a está. Para qualquer reuso ou distribuição, você deve deixar claro aos outros os termos de licença deste trabalho. Qualquer destas condições podem ser modificadas se você tiver permissão do autor original. Se uso e outros direitos não são afetados pelas regras acima. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 2

C EM SISTEMAS EMBARCADOS Sistemas Embarcados 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 3

Sistemas Embarcados C em sistemas embarcados C é uma linguagem de programação para sistemas embarcados dada a sua simplicidade e eficiência. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 4

Sistemas Embarcados C em sistemas embarcados C não foi originalmente criada para sistemas embarcados, e sim especificamente para mainframes e PC em 1972; Este tipicamente manipulam dados em arquivos como dos tipos inteiro, caracter, etc; Em contraste, sistemas embarcados manipulam bits; Essa aula discute a construção de manipulação de bits na linguagem C. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 5

Sistemas Embarcados C em sistemas embarcados A tabela a seguir mostra o uso das linguagens de programação em todos os tipos de sistema. Muitas pessoas questionam que C não esconde muitos detalhes de baixo nível para o desenvolvedor. Porém um mestre em C é um programador excelente em qualquer linguagem http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 6

Sistemas Embarcados Exercícios # Questão Resposta 1 C e a linguagem relacionada C++ representam as principais linguagens de sistemas embarcados em 80% (segundo pesquisa de 2013). 2 C foi originalmente desenvolvida para sistemas embarcados. 3 A linguagem Assembly é a linguagem principal para metade dos sistemas embarcado. 4 Fluência em C é raramente útil fora do ambiente de sistemas embarcados Verdadeiro Falso Verdadeiro Falso Verdadeiro Falso Verdadeiro Falso 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 7

TIPOS DE DADOS EM C Sistemas Embarcados 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 8

Sistemas Embarcados Tipos de dados em C Muitos tipos de dados em C são comumente utilizados para representar inteiros em programas de sistemas embarcados. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 9

Sistemas Embarcados Tipos de dados em C A variável cujo valor só pode variar de 0 a 100 poderia ser melhor declarada como: unsigned char; Uma variável cujo valor só pode variar de -999 a 999 pode ser melhor declarada como: signed short; Usando o menor tipo possível garante que o espaço limitado em sistemas embarcados é conservado; 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 10

Sistemas Embarcados Tipos de dados em C Notem que os tipos de dados unsigned representam números inteiros positivos, enquanto tipos signed representam números inteiros positivos e negativos; Se uma variável é usada para representar uma série de bits (em vez de um número), então um tipo unsigned deve ser usado. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 11

Sistemas Embarcados Tipos de dados em C Memória unsigned char numa = 7; unsigned long numb = 7; numa = numa + 1; numb = numb +1; 94 95 96 00000111 00001000 numa 00000111 numb 97 00000000 ULA char: Apenas 1 byte long: 4 bytes char: apenas 1 byte por operação long: 4 operações de byte (move bytes para ULA, faz a conta, move de volta) 98 99 00000000 00000000 00001000 00000111 00000111 00000000 00000000 00000000 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 12

Sistemas Embarcados Tipos de dados em C Sistemas Embarcados comumente lidam com itens de dados de 1-bit. C NÃO tem o tipo de dados 1-bit!!!; Tipos de dados de 1-bit são tipicamente representados usando o tipo unsigned char como: unsigned char mybitvar; O programador apenas associa a variável 0 ou 1, exe.: mybitvar = 1, mesmo se esta possa ter valores inteiros acima de 255 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 13

Sistemas Embarcados Tipos de dados em C O programador apenas atribui a variável com 0 ou 1, exe.:, mybitvar = 1, embora a variável poderia ser atribuída com números inteiros até 255; Verificar se tal variável é 1 ou 0 é geralmente feito sem comparação explícita de 1 ou 0, ao invés disso, é feito como se (mybitvar) se (!mybitvar) 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 14

Sistemas Embarcados Tipos de dados em C 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 15

Sistemas Embarcados Tipos de dados em C Em C existem tipos de dados float e double para representar pontos flutuantes como 98,6 ou 6,02 x 10 23 ; Muitos programadores de sistemas embarcados evitam utilizar tipos de dados extensos; Justamente para manter pequeno, baixo custo e pouco consumo; Mas estes tipos devem ser usados em ambiente de software. Então vale o bom senso e a necessidade. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 16

Sistemas Embarcados Tipos de dados em C Uma boa prática de programação em SE é nomear as variáveis com o prefixo em minúscula, indicando o tipo de dado: uc, us e ul unsigned char, short e long; sc, ss e sl signed char, short e long; b para bit; char é chamado desta forma por causa que é comumente usado em programação para desktop para representar um valor inteiro de 8 bits ASCII. char é realmente um inteiro! Em C a opção signed pode ser omitida: char I1 = signed char I1 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 17

Sistemas Embarcados Tipos de dados em C Infelizmente, embora a largura dos tipos citados são bastante comuns, C define de fato as larguras pelo mínimo das larguras. Pode de modo que um compilador pode por exemplo criar um long como 64 bits; Assim, um programador nunca deve assumir a largura exata: Um programa não deve incrementar uma "unsigned char" e esperar que ele passe além de 255 para 0, pois o char poderia ser de 16 bits. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 18

Sistemas Embarcados Tipos de dados em C Outra triste realidade é que C permite que uma variável para ser declarado como um mero tipo int, a largura é dependente do compilador. Devido à imprevisibilidade do int, evite usar o tipo arbitrariamente. Seguindo estas convenções, melhora a portabilidade do código, que é a capacidade de recompilar código para um outro microprocessador sem alterações indesejáveis no comportamento do programa. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 19

Sistemas Embarcados Tipos de dados em C A representação de cada um dos tipos de dados é binária. Para um 8-bits unsigned char uci1: 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 20

Sistemas Embarcados Tipos de dados em C Tipos de dados signed em C usa duas representações complementares. Nível de bit char = 127 Representação interna: 01111111 Se for -128 = 10000000-1 = 11111111 Lembrando das aulas de arquitetura (representação de números negativos): -1 00000001 (magnitude 1) 11111110 (complementar) 11111110 + 1 = 11111111 (add 1) -128 10000000 (magnitude 128) 01111111 (complementar) 01111111 + 1 10000000 (add 1) 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 21

Sistemas Embarcados Tipos de dados em C Escolhendo o tipo apropriado Propósito Armazenar a idade de uma pessoa em anos Armazenar a velocidade de um avião Armazenar a carga restante de uma bateria em joules Armazenar em metros a elevação acima/abaixo do nível do mar da terra Declaração da Variável unsigned char age; //~<0, ~>255 unsigned short speed; //~<0, ~>64k unsigned long energy; //~<0, ~> 4Gig signed short elevation; //pode ser < 0, ~>32k ou <-32k 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 22

Sistemas Embarcados Exercícios # Questão Resposta 1 Quantos bits é um unsigned char? 8 2 Quantos bits é um signed char? 8 3 Como é 15 em 8-bits binário? 00001111 4 Como são os bits armazenados na memória para unsigned char x = 5? 5 Como são os bits armazenados na memória para unsigned char x = 199? 00000101 11000111 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 23

Sistemas Embarcados Exercícios # Questão Resposta 6 Defina uma variável volts que tem uma extensão de -100 até +100 (inteiros apenas). Finalize com ; 7 Defina uma variável altura que irá manter a altura de um humano em metros. 8 Defina uma variável birthyear que irá manter o ano de nascimento de uma pessoa. Extensão de 1 D.C até hoje. 9 Defina uma variável distmoon que irá manter a distância em quilômetros da lua até a terra em um determinado dia. 10 Defina uma variável botao que irá indicar quando um botão é pressionado ou não. signed char volts; unsigned char altura; unsigned short birtyear; unsigned long distmoon; unsigned char botao; 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 24

RIMS E/S Sistemas Embarcados 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 25

Sistemas Embarcados Definição de variáveis de E/S implícita no RIMS No RIMS, cada entrada e saída do microcontrolador (E/S) é implicitamente definida como uma variável global: unsigned char A0; unsigned char A1;..., unsigned char B0; etc. Um item tem intenção de representar um bit simples, como B0 em RIMS que apresenta apenas dois valores 1 ou 0; RIMS define duas variáveis globais adicionais: A representa uma entrada de 8-bits como um número decimal B é uma saída de 8-bits 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 26

Sistemas Embarcados Definição de variáveis de E/S implícita no RIMS Variáveis globais implicitamente definida são lugares no ambiente de programação de microcontroladores, habilitando acesso a pinos de E/S como também a recursos do microcontrolador. No caso do RIMS o arquivo RIMS.h contém as definições de A e B. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 27

Sistemas Embarcados Definição de variáveis de E/S implícita no RIMS bits agrupados nativos como A e B permite ao programador tratar as E/S do RIMS de 8 bits como números decimais de 8-bits ; A pode representar um número 12 que vem de um sensor de temperatura como um número binário de 8- bits 00001100; O programador pode usar A em uma comparação aritmética como A > 15 ou como um cálculo newtemp = A+5. O programador pode escrever um número B como B = 15 que irá causar o aparecimento no RIMS como 00001111; Pode escrever também B = A. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 28

Sistemas Embarcados Definição de variáveis de E/S implícita no RIMS Como B é uma variável global, o programa pode ler e escrever diretamente nesta; No entanto a entrada A é automaticamente escrita pelo microcontrolador e nunca deverá ser escrita por um programa, apenas lida; No RIMS escrever em A resulta em um runtime error 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 29

Sistemas Embarcados Observação A palavra reservada const, acrônimo para constante, pode preceder qualquer declaração de variável, como: const unsigned char i1 = 5 ; O valor de uma variável constante NÃO podem ser alteradas pelo código posteriormente e, portanto, pode ajudar a evitar erros futuros; Uma constante variável deve ser inicializada quando declarada. No exemplo 5 é uma constante e i1 é uma constante variável. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 30

Sistemas Embarcados Definição de variáveis de E/S implícita no RIMS CUIDADO: Os microcontroladores diferem em como eles tratam variáveis de entrada e saída, especialmente por causa da maioria dos microcontroladores permite cada pino ser configurado tanto como entrada como saída. O programador deve ler cuidadosamente o datasheet ou as instruções. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 31

Sistemas Embarcados Exercícios # Questão Resposta 1 Inicialize o primeiro pino de saída do RIMS para 1. B0=1; 2 Inicializa as 8 saídas de bits do RIMS para o decimal 0. B=0; 3 Inicializa a primeira saída do RIMS para a última entrada do RIMS B0=A7; 4 Inicializa as saídas do RIMS com as entradas menos 1. Trate como um número decimal. B=A-1; 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 32

Sistemas Embarcados Exercícios # Questão Resposta 5 Inicialize A7 com 1. Não é possível 6 Inicializa as 8 saídas de bits do RIMS para o decimal 0. X = B7; 7 Escreva uma expressão (sem parênteses) que avalia se verdadeiro se A5 é 1. if ( A5 ou A5 ==1 ) { x = B0; } 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 33

HEXADECIMAL Sistemas Embarcados 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 34

Sistemas Embarcados Hexadecimal Comumente um item 8-bit unsigned não é usado como um número, mas sim como oito bits distintos.; Por exemplo, se as oito saídas do RIMS estão conectadas a oito lâmpadas e o programador quer acender todas, este pode escrever B = 255 (por causa que 255 é 11111111); No entanto, 255 não convém diretamente a intenção do programador. O programador pode escrever B = b11111111 ou algo semelhante, mas C infelizmente não tem suporte a binário. Mas, felizmente, C suporta as constantes hexadecimais, que estão mais próximos do ideal. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 35

Sistemas Embarcados Hexadecimal Hexadecimal ou hex é um número de base 16 onde cada dígito pode ter o valor de 0, 1,..., 8, 9, A, B, C,..., F. A é 10, B é 11, C é 12 e assim vai... 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 36

Sistemas Embarcados Exercícios 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 37

Sistemas Embarcados Exercícios 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 38

Sistemas Embarcados Exercícios 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 39

Sistemas Embarcados Exercícios 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 40

Sistemas Embarcados Hexadecimal Na linguagem C, uma constante em hex é precedido por 0x. 0xFF representa b11111111 Cada digito hexadecimal corresponde a 4 bits (nibble) B = 0xFF inicializa todas as saídas do RIMS para 1 0xFF é mais claro que 255; B = 0xAA inicializa todas as saídas para 10101010 (170d) 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 41

Sistemas Embarcados Hexadecimal Boas práticas em SE! Sempre usem hexadecimal do que os números decimais quando tenham a intenção de escrever um padrão; Mesmo quando o padrão em decimal para binário é conhecido para evitar futuras confusões: Para inicializar todas as saídas com zero B = 0x00 melhor que B = 0. B0 com 1 e B1-B7 com 0 use B = 0x01 1 byte 8 bits 1 palavra 16 bits 1 palavra dupla 32 bits 1 palavra quadrupla 64 bits 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 42

Sistemas Embarcados Hexadecimal binário (62) 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 43

Sistemas Embarcados Hexadecimal binário (62) 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 44

Sistemas Embarcados Hexadecimal binário (62) 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 45

Sistemas Embarcados Hexadecimal binário (62) bits desejados hexa (62) 240 não condiz com os bits desejados 0xFF é melhor 1 digito hex para cada 4 dígitos binário (por causa 2^4 é 16) 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 46

Sistemas Embarcados Exercícios # Questão Resposta 1 Inicialize o primeiro pino de saída do RIMS para 1 B0=1; 2 Inicialize o primeiro pino de saída do RIMS para 1 e os demais para 0. B=0x01; 3 Inicialize o último pino do RIMS para 1 e os demais para 0. B=0x80; 4 Inicializa todas as saídas do RIMS para 1. B=0xFF; 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 47

Sistemas Embarcados Exercícios # Questão Resposta 5 Inicialize as saídas do RIMS para 01010101 B=0x55; 6 Preencha o espaço em branco da expressão para detectar que todas as 8 entradas do RIMS são 1s. A == 7 Qual expressão detecta que o primeiro pino do RIMS é 1? 0xFF; A0 ou A0==1; 8 Qual expressão detecta que A0 é a única entrada do RIMS é 1? A==0x01; 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 48

Sistemas Embarcados Simples exemplo hexadecimal 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 49

Sistemas Embarcados Esquemático 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 50

Sistemas Embarcados Uma possível solução 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 51

Sistemas Embarcados Exercício Considere um display de 7 segmentos de um SE com um discador que está conectado e pode inicializar as entradas de A3...A0 com os binários de 0 a 9 e para as saídas de B6...B0. Responda: Qual saída de B deverá ser inicializada para o caso 3? B0 B2 B3 B5 B6 Para qual valor deverá ser B inicializado para o caso 3? 0x6D Complete caso seja o esquema utilizando a função case. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 52

Sistemas Embarcados Exercício de Nota Escreva um programa em C no RIMS que repetidamente executa B = 7. Note que as saídas B2, B1 e B0 tornam-se 1, porque 7 = 00000111 (perceba que 7 aparece na abaixo dos pinos de saída no RIMS). Depois, inicialize os switches de entrada A3=1, A2=0, A1=0 e A0=1 com as outras entradas em 0 e note que 9 aparece. Por que? Escreva e execute um programa no RIMS que inicializa B igual a A + 1; Escreva um programa no RIMS que inicializa B=300. O que acontece? E porque? Um carro tem um sensor que inicializa A com o peso do passageiro (se o passageiro pesar 59 kg, A7...A0 = 00111011). Isso é importante pois alguns carros só acionam o airbag com pelo mínimo. Escreva um programa no RIMS que habilita o sistema de airbag do carro (B0=1) se o peso do passageiro for igual ou maior que 48 kg. Também ligue uma luz Airbag off (B1=1) se peso > 2,5 kg mas peso < 48 kg. 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 53

Sistemas Embarcados Dúvidas? 16 de maio de 2015 anderson.moreira@recife.ifpe.edu.br 54

Sistemas Embarcados Programação Embarcada Instituto Federal de Pernambuco Coordenação de Informática/IFPE Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br