Microcontroladores e CLPs
Engenharia da Computação
Conceitos Básicos
Edna Mie Kanazawa
ekanazawa@gmail.com
Conteúdo Programático
•
Teoria
– Fundamentos e arquitetura interna do
microcontrolador núcleo 8051. Utilização dos registradores de dados, registradores de
endereços (internos e externos) e flags.
– Estudo do Sistema de Memória. Espaços de endereçamento. Banco de Registradores especiais.
– Estudo dos Modos de Endereçamento. Conjunto de Instruções e Registradores de Funções
•
Teoria
– Instruções de transferência, lógicas, booleanas e aritméticas. Instruções de saltos condicionais e incondicionais. Algoritmos especiais para
operações aritméticas. Exercícios com estruturas de repetição.
– Utilização de Sub-rotinas e da Pilha.
– Análise da funcionalidade das Portas de entrada e saída paralelas. Aplicações com Portas de E/S.
•
Teoria
– Timers/Contadores e interface serial.
– Tratamento de Interrupção, modos e tipos. Aplicações usando Interrupções.
– Sistemas a reles e lógica de intertravamento. Controle sequencial com lógica de
intertravamento.
– Automação de Processos Industriais: aspectos da programação dos controladores programáveis.
•
Teoria
– Fundamentos de Linguagem C para microcontroladores.
– Análise de aplicabilidade das estruturas de seleção e repetição.
– Funcionalidade dos tipos de dados.
Implementação de funções com atendimento a interrupções.
•
Prática
– Análise do tutorial Instalador para simulador RIDE_8051
– Estudo da arquitetura interna do
microcontrolador 8051 (registradores disponíveis) e dos modos de endereçamento, utilizando o
software RIDE.
– Exercício sobre instruções aritméticas utilizando o
software RIDE.
– Exercício sobre instruções lógicas e de desvio utilizando o software RIDE.
•
Prática
– Exercício sobre instruções booleanas e uso de sub rotina, utilizando o software RIDE.
– Exercício sobre manipulação de dados em
memória (interna e externa), utilizando o software RIDE.
– Utilização do kit didático Datapool ativando as portas de entrada/saída com chave e led.
– Utilização do kit Datapool utilizando o teclado e as rotinas disponíveis no firmware.
•
Prática
– Implementação de uma calculadora simples de 4 bits.
– Utilização do kit Datapool para implementação de contador decimal up-down de 8 bits por software (00 a 99 e 99 a 00) usando barra de leds.
– Utilização do kit Datapool para implementação de contador decimal up-down de 4 bits por hardware (0 a 9 e 9 a 0) usando CI 4518, decoder 9368 e
•
Prática
– Utilização do kit Datapool para implementação de
Timer de um segundo.
– Utilização do kit Datapool para comunicação serial com padronização RS232.
– Programação em Linguagem C para simulador RIDE_8051.
– Implementação de contador hexadecimal de 8 bits.
Bibliografia Básica
• ZELENOVSKY, R.; MENDONÇA, A. Programação e
projeto com a família 8051. MZ, 2005, ISBN:
85-87385-12-7
• NICOLOSI, D. E. C. Microcontrolador 8051 detalhado. Érica, 2000. ISBN 85-7194-721-X.
• NICOLOSI, D. E. C.; BRONZERI, R. B. Microcontrolador
8051 com linguagem C. Érica, 2005. ISBN:
Bibliografia Complementar
• NICOLOSI, D. E. C. Laboratório de microcontrolador família 8051. Érica,2002, ISBN 85-7194-871-2.
• GIMENEZ, S. P. Microcontroladores 8051. Prentice-Hall do Brasil, 2005, ISBN: 8587918281
• CARNEIRO, K. P. M.; MOKARZEL, M. P. Internet embedded para
microcontroladores. Érica, 2004, ISBN: 85-365-0042-5
• PRUDENTE, F. Automação industrial - PLC: teoria e aplicações. LTC, 2007. • STALLINGS, W. Arquitetura e organização de computadores. Editora
Prentice Hall, 2002.
Conceitos Básicos
•
Bit – Abreviação de Dígito Binário em Inglês
(BInary digiT), que corresponde ao valor zero
(0) lógico ou ao valor um (1) lógico.
•
Byte – Representação numérica composta de
8 Bits. Pode representar números de 00h (0) a
FFh (255).
•
Informação Binária – conjunto formado por 1
ou mais Bytes.
•
Notação Hexadecimal - Notação para números
binários que utilizam 16 dígitos (0 a 9,
A,B,C,D,E,F) para representar um número
binário de 4 Bits. Assim, as 16 combinações
possíveis de 4 Bits são escritas com os dígitos
hexadecimais.
•
Uma letra h é usada para denotar que o
número escrito está em hexadecimal (Ex: 00h ,
3Fh)
• Registrador – conjunto de Flip-flops, geralmente do tipo D, que são interligados em paralelo. São responsáveis pelo armazenamento de uma informação binária.
• Dependendo do número de Flip-flops interligados, podem armazenar – 8 Bits (= 1 Byte), – 16 Bits (= 2 Bytes), – 32 Bits (= 4 Bytes), – 64 Bits (= 8Bytes) ou – 128 Bits (= 16 Bytes).
• Os registradores são memórias voláteis, ou seja, quando desenergizados perdem seu conteúdo.
•
Memória – local de armazenamento de
Informações Binárias.
•
Pode ser formada por circuitos
semicondutores, mídias magnéticas, mídias
ópticas, etc...
•
De certa forma, um Registrador pode ser
considerado uma memória que armazena
apenas uma informação binária por vez.
•
Computador – Unidade de processamento
que executa Instruções de um programa para
realizar alguma tarefa.
•
Instrução – define uma única ação que um
computador pode executar por vez.
•
As ações das instruções podem ser:
– leitura ou escrita de uma informação binária na memória,
– leitura ou escrita de uma informação binária em um registrador,
– operações lógicas entre informações binárias,
– operações aritméticas entre informações binárias, etc...
•
Programa – conjunto de Instruções arranjadas
de maneira organizada por um programador
com o objetivo de informar ao Computador
qual a tarefa que o mesmo deverá executar.
•
Os Programas, em geral, são armazenados na
•
Software – são os programas que são
carregados na memória do Computador para
serem executados (Ex: Windows, Office, C++,
Netscape, etc...).
•
Firmware – são os programas que já estão
previamente armazenados em uma memória
não volátil (ROM/PROM/EPROM/Flash) e que
permitem a operação fundamental de um
computador, inclusive a carga de Programas
(Software) na memória para serem
•
Hardware – são as partes eletrônicas,
eletro-mecânicas e ópticas de um computador.
• Microprocessador
– Circuito integrado (“chip”) capaz de executar instruções. – 1971 - Intel Corporation lançou no mercado o
microprocessador 4004 (3.000 transistores )
– O microprocessador é um dispositivo lógico programável em um único chip de silício, concebido sob a tecnologia VLSI (circuito integrado em alta escala).
– Age sob o controle de um programa armazenado em memória, executando operações aritméticas, lógica
booleana, tomadas de decisão, além de entrada e saída de dados, permitindo a comunicação com outros dispositivos periféricos.
•
Microprocessador
– Geralmente implementado em um único componente.
• unidade central de processamento – CPU; – Máquina seqüencial de uso geral, cujo
comportamento no tempo é determinado por um programa externo colocado em memória.
– Associado a CI’s periféricos, ele pode gerar: • microcomputadores e controles lógicos de uso
específicos
•
Unidades básicas de um Microprocessador:
– Unidade Lógica Aritmética (ULA) - responsável pela realização das operações lógicas e
aritméticas.
– Unidade de Controle (UC) - responsável pela decodificação e execução das instruções,
fornecendo os sinais de temporização adequados para as diversas partes do processador e do
próprio computador.
– Registradores - armazenamento da Informação Binária (dados, endereços e instruções).
•
Microcomputador
– Computador digital com velocidade e recursos limitados, e tipicamente é constituído por:
• unidade central de processamento – CPU; • memória;
• Circuitos de entrada entrada e saída saída.
– Suas aplicações são também limitadas quando comparadas às de um computador de maior porte.
•
Microcontroladores
– Possuem em um único componente:
• a unidade central de processamento • memória (ROM e RAM);
• periféricos dedicados (serial, paralela, timer, etc...). – Os microcontroladores apresentam:
• menor desempenho que os microprocessadores, • custo muito baixo (alguns dólares tipicamente),
• destinados a aplicações onde as dimensões, custo, tamanho e consumo do produto são muito
•
Tipos de microprocessadores por principais
áreas de atuação
*
Os sistemas de Processamento Digital de Sinais são naverdade uma grande sub-área dos sistemas embarcados. Microprocessadores Sistemas computacionais de propósito geral
Microcontroladores Sistemas embarcados
• Na realidade os limites de aplicabilidade destes três componentes não são tão bem definidas como
mostra o quadro. Por exemplo:
– O projeto de um sistema embarcado que exija um complexo
tratamento matemático, mesmo que não envolva o processamento digital de sinais, pode ser melhor resolvido com um DSP do que com um microcontrolador.
– Em contrapartida, o projeto de um sistema de controle digital, mesmo envolvendo o processamento digital de sinais, sem grandes exigências de cálculo, pode ser melhor resolvido, com custos bem mais
Programação
•
Consiste na tradução do pensamento lógico
necessário para o cumprimento de
determinada tarefa, em uma sequencia de
comandos que podem ser interpretados e
executados por uma máquina
Procedimentos genéricos
• Exposição do problema – descrição do problema
• Análise da solução – elaboração das soluções, que melhor resolvem o problema
• Codificação da solução – descição sequencial passo a passo da solução, ou seja, desenvolver o algoritmo da solução
• Tradução do código – traduzir o algoritmo para um linguagem de programação
• Depuração (Debug) – processo de verificação e teste do
programa de forma a localizar e solucionar todas as eventuais falhas e erros de codificação que podem ocorrer nos
Artifícios para programação
•
Módulo ou função
•
Loops
Tradução
• Interpretadores
– São aquelas que a tradução da linguagem é feita em tempo real, durante a execução do programa.
– São lentas, pois a tradução ocorre a cada linha do programa – Exemplos: Basic, Java, Java Script, etc
• Compiladores
– São aquelas em que o processo de tradução (compilação) é feito
previamente e o código gerado pelo compilador (código de máquina) pode se carregado na memória e executado diretamente por ele.
Fluxograma
• Para a documentação lógica de um Programa em
Assembly utiliza-se um Fluxograma ou Diagrama de
Blocos.
• Cada bloco do Fluxograma equivale a um
sub-conjunto do Instruction Set do Microprocessador. • O Fluxograma é uma forma de se implementar
logicamente um programa, antes que o mesmo seja codificado na Linguagem Assembly do
• Linhas de Fluxo do Programa
– Mostram a seqüência de execução das Instruções.
– Cada Bloco do Fluxograma possui apenas uma linha de Fluxo de Entrada e uma ou duas de saída
• Bloco de Processo
– Equivalem às Instruções que realizam alguma operação do tipo:
• Movimento de Dados • Operação Aritmética • Operação Lógica
•
Bloco de Decisão
– Equivale às Instruções que decidem sobre o Fluxo do Programa.
– Se a função dentro do bloco for Verdadeira(V) o programa
continua abaixo, se for Falsa(F) o programa muda o fluxo.
•
Processo Pré-definido
– Equivale às Instruções que mandam executar uma Sub-rotina
armazenada em outro lugar da Memória.
– Observe que quando a sub-rotina termina, o fluxo do programa
•
Bloco de Início de Programa
– O Bloco de Início de Programa não equivale a uma Instrução específica do Instruction SET.
•
Bloco de Fim de Programa
– O Bloco de FIM equivale a uma instrução que termina o
Programa. É chamado de FIM
Exemplo de Fluxograma de um
Programa de Microprocessador
•
O programa deve Ler
um Dado da
memória, verificar se
é igual a zero. Se não
for zero, continua em
LOOP. Se for zero
•
Desenvolva um fluxograma para solução de
um problema simples: somar dois números (A
e B) e armazenar o resultado em C.
•
Desenvolva um fluxograma para solução de
um problema simples: contar de 0 a 10.
Respostas
•
1)
Início Lê o valor de A Lê o valor de B Soma A e B e Armazena o resultado em C Fim•
2)
Início Contador = 0 Soma contador em 1 Contador = 10? FimAlgebra booleana
• Proposições
– Afirmação verbal passível de ser classificada como verdadeira ou falsa
• Hoje é segunda feira? (proposição)
• Que dia é hoje? (não é uma proposição)
• Operadores lógicos relacionais
– E (conjunção) – a conjunção de 2 ou mais proposições será verdadeira somente se todas forem verdadeiras
– OU (disjunção) – a disjunção de 2 ou mais proposições será verdadeira se qualquer das proposições for verdadeira.
– NÃO – utilizado para negar uma determinada proposição, atribuindo sentido contrário a proposição inicial
Variáveis e dados
•
Variável
– Representação simbólica para elementos pertencentes a um determinado conjunto
– Armazenadas em memória da máquina (RAM) e
podem assumir qualquer valor dentre o conjunto de valores possíveis
– Podem ser:
• Numéricas – inteiras, reais ou ponto flutuante • caractere
• alfanuméricas • lógicas
Operadores
•
São elementos ou simbolos gráficos utilizados
para relacionar ou modificar um ou mais
dados ou variáveis
– Matemáticos – adição, subtração, etc – Relacionais – maior, menor, igual
– Lógicos – E, OU e Não
– Lógicos bit a bit – E, OU, Não, rotação de bit – Memória - =, &, *
Exercícios
•
Nas equações booleanas seguintes, quais
valores de A, B e C tornam R verdadeira?
– R=(A e B e C) • A=V, B=F, C=V • A=F, B=F, C=F • A=F, B=V, C=V • A=V, B=V, C=V
– R=((A e (não B)) ou C) • A=F, B=F, C=F
• A=F, B=F, C=V • A=F, B=V, C=F • A=V, B=F, C=F
– R=((não A) ou (não B) ou (não C)) • A=V, B=V, C=V
• A=F, B=F, C=F • A=V, B=F, C=F • A=V, B=V, C=F
– R=(A ou B) e (não C) • A=V, B=F, C=V
• A=F, B=F, C=V • A=F, B=V, C=F • A=V, B=V, C=F
• Supondo a afirmação: se não estiver chovendo e eu sair mais cedo do trabalho, iremos a praia. E
considerando A=Está chovendo? B=Eu sai mais cedo do trabalho? E C a resposta: Iremos a praia,
determine a equação booleana que descreve corretamente a afirmação inicial:
– A e B = C – A ou B = C – A e não B = C – Não A e B = C
•
Qual o tipo de variável necessário para
armazenar cada um dos seguintes dados?
– 150 – “Linguagem C” – 100,1 – 250 – “123” – V – -5 – F