www.mackenzie.com.br APOSTILA MICROPROCESSADORES 1 ESCOLA DE ENGENHARIA PROF. IVAIR REIS N. ABREU www.ivair.com.br SEGUNDO SEMESTRE 2004 AULA 1 – APRESENTAÇÃO DA DISCIPLINA Revisão: 05/08/2004 PLANEJAMENTO DIDÁTICO PEDAGÓGICO DA DISCIPLINA MICROPROCESSADORES I – SEGUNDO SEMESTRE 2004 ESCOLA DE ENGENHARIA - MODALIDADE ELETRÔNICA UNIDADE: Engenharia DISCIPLINA: Microprocessadores I PROFESSOR: Ivair Reis Neves Abreu DEPARTAMENTO: Eletrônica ETAPA: 7 CÓDIGO CARGA HORÁRIA: 2 aulas CRÉDITOS SEMESTRE LETIVO: primeiro OBJETIVOS: o aluno deverá adquirir os conceitos básicos de sistemas com microcontroladores ao nível de projeto físico e programação em linguagem de montagem (e máquina) para teste do sistema elaborado. Projetos básicos de sistemas práticos com microcontroladores deverão ser projetados. EMENTA: - Revisão de Conceitos de Microprocessadores - Arquitetura do Microcontrolador 8051: - Linguagem Assembler com as instruções do 8051: - Projetos de Sistemas Práticos com Microcontroladores: METODOLOGIA Aula expositiva com auxílio de recursos audio-visuais (principalmente retroprojetor). O aluno deverá constantemente participar através de aplicação de exercícios e projetos. Uma apostila envolvendo todos os pontos abordados servirá de apoio didático durante as exposições. Trabalhos levarão o aluno a refletir sobre pontos avançados não abordados diretamente na sala de aula. CRITÉRIO DE AVALIAÇÃO: FÓRMULA DA MÉDIA A SER DEFINIDA P1 = primeira prova semestral P2 = segunda prova semestral a ser definida pela Diretoria. Lab = laboratório (10 % da média final) Média > 7 -> aluno aprovado 5,5 <média<6.9 -> aprovado se presença as aulas for maior que 80% Calendário de Provas P1 P2 -> 04/10/2004 -> secretaria CONTEÚDO PROGRAMÁTICO: - Revisão de Conceitos de Microprocessadores (Arquitetura e Linguagem Assembler) - Arquitetura do Microcontrolador 8051: - Definir Arquitetura típica de microcontrolador - Estudo da Arquitetura da família de microcontrolador 8051 da Intel. - Sistema Mínimo com o 8051. - Linguagem Assembler com as instruções do 8051: - Definir código de operação de instruções e mneumônicos do 8051. Instruções de transferência de informação, aritmética, lógica, transferência de controle e booleana. - Estudo de rotinas típicas de controle: rotina de tempo, escrita e leitura de periféricos. - Projetos de Sistemas Práticos com Microcontroladores: - Alarme Residencial. - Controle de Iluminação. - Automação Industrial e Residencial. BIBLIOGRAFIA - APLICAÇÕES PRÁTICAS DO MICRONTROLADOR 8051. Vidal Pereira da Silva Jr. - Érica MICROCONTROLADORES 8051. Salvador P. Gimenez. Prentice Hall DATABOOK EMBEDED APLICATIONS 8051. Intel. THE 8051 FAMILY OF MICROCONTROLLERS. Richard H. Barnett. Prentice Hall. THE 8051 MICROCONTROLLER. I. Schott Mackenzie. Prentice Hall. INTRODUÇÃO A SISTEMAS DE COMPUTAÇÃO DIGITAL.DALTRINI, Beatriz Márcia, 1999 Makron Books. HANG, Han-Way. Using the MCS-51 Microcontroller 8051, 2000. Ed. Oxford University APOSTILA MICROPROCESSADORES I. Ivair Reis Neves Abreu Internet: www.microcontroller.com www.8052.com www.vidal.com.br www.questlink.com www.microchip.com www.ti.com www.zilog.com PLANEJAMENTO DAS AULAS: 1a Semana: 2a Semana: 3a Semana: 4a Semana: 5a Semana: Apresentação da disciplina Introdução a conceituação de sistemas programáveis Definição de microprocessadores Arquitetura de Computadores Barramentos de Informação Arquitetura de Microprocessadores Definição de ULA, Decodificadores de Instruções e Registradores Definição de conceito de interrupção, sistema de temporização, D.M.A. e código de instrução. Definição de Microcontrolador Arquitetura típica de microcontrolador Família de microntrolador INTEL Sistema Mínimo com o 8051 Projeto com um sistema mínimo com o 8051 6a Semana: 7a Semana: 8a Semana: 9a Semana: 10a Semana: periféricos) 11a Semana: 12a Semana: Introdução a Linguagem Assembler Instruções de Transferência de Informação do 8051 Instruções Aritméticas do 8051 Instruções Lógicas do 8051 Instruções de Controle do 8051 Instruções Booleanas do 8051 Exercícios com Linguagem Assembler do 8051 Rotinas típicas de controle (temporização, escrita / leitura de Projetos com o 8051- Alarme Projetos com o 8051 - Controle de Iluminação AULA 2 1) - Introdução: 1.1) - Sistema Programável: A grande utilização dos microprocessadores nos sistemas eletrônicos atuais vem do fato de serem programáveis, ou seja, estes sistemas são compostos por um conjunto físico (Hardware) que realizará determinada tarefa, orientado por uma seqüência de instruções conhecidas por programa (Software), proporcionando grande versatilidade e poder de processamento. SISTEMA PROGRAMÁVEL HARDWARE / \ SOFTWARE \___ TAREFA FINAL / O objetivo final do curso será dotar o aluno da capacidade de projetar o hardware e software básico (BIOS) do sistema acima. Pelo fato da parte física do sistema ser padronizada, consegue-se uma otimização na produção de tal forma a conseguirmos um custo bastante reduzido, viabilizando seu consumo mesmo a nível residencial. Pode-se citar os exemplos dos computadores pessoais padrão IBM-PC. Com uma produção do computador em grande escala, consegue-se um sistema mínimo de trabalho com valores próximos a U$ 1.0000,00, valor pequeno se considerarmos o seu poder de processamento através da diversidade de programa compatível ao mesmo. Um mesmo computador é capaz, sem alteração nenhuma ao nível de máquina, de torna-se um poderoso processador de texto, ou apenas trocando-se o programa a ser chamado, ser um grande parceiro em um jogo de xadrez. 1.2) - Sistemas de Numeração: Devido a facilidade de implementação do sinal binário (através de chaves transistorizadas - saturada ou cortada), toda a informação dentro do computador (com exceção de interfaces analógica/digitais) possui a forma binária. Por isso, é fundamental o perfeito conhecimento dos diversos sistemas de numeração, bem como a conversão entre cada base. - Decimal -> base 10. - Binário -> base 2 -> mais fácil de chavear (através de transistores, chaves, etc.) - Hexadecimal binário -> converte cada 4 números binários em números de 0 (0000B) a F (1111B) - Decimal binário (B.C.D.) -> converte cada 4 números binários em números de 0 (0000B) a 9 (1001B) - Octal -> converte cada 3 números binários em números de 0 (000B) a 7 (111B). Conversões importantes: Binário -> Decimal <Binário -> Hexadecimal <- Ex:1) - 1010 0110 -> binário -> hexadecimal 2) - 255 -> decimal -> binário 3) - 2A0FH -> hexadecimal -> decimal 1.3) - Estrutura de um microcomputador: Os sistemas programáveis podem ter as suas estruturas resumidas a 3 blocos: Unidade Central de Processamento (C.P.U), Memória e Periféricos. Figura 1 1.3.1) - Unidade Central de Processamento: Bloco com capacidade de realizar tarefas orientadas por instruções. É o principal elemento de decisão do computador, podendo ser comparado ao cérebro se o ser humano fosse um computador. Quando a C.P.U. está encapsulada em um único chip, temos um microprocessador. Devido ao poder de processamento dos microprocessadores atuais, temos sua utilização bem além dos tradicionais computadores, como por exemplo câmaras fotográficas (que já possuem disquetes ao invés dos tradicionais filmes químicos), aparelhos de som, televisores, etc. 1.3.2) - Memória: Bloco semicondutor com capacidade de armazenar informações. Armazena basicamente as instruções a serem processadas (através de seus códigos de operação), variáveis (como resultados de operações da C.P.U.) ou dados dos periféricos. O programa a ser processado deve necessariamente estar presente na memória (por isso o tamanho cada vez maior das memórias voláteis - RAMs - dos computadores atuais, pois os programas têm tamanhos cada vez maiores). A memória dos computadores pode ser dividida em volátil (RAM estática / dinâmica) e não voláteis (ROM / PROM / EPROM / E2PROM), onde está armazenado a BIOS do sistema ou o FIRMWARE - software dedicado a uma única função. A estrutura de memória em computadores pode ser do tipo VonNeumann (estrutura de memória única onde podemos colocar programa e dados na mesma área) e Harvard (estrutura com memória para área de programa separada da área de dados – sinal de leitura diferenciado). 1.3.3) - Periféricos: Bloco de comunicação do conjunto micro/memória com o meio exterior. Pode ser caracterizado como entrada (teclado, mouse, etc.) ou saída (monitor, impressora, plotter, etc.) Quando temos a C.P.U., memória RAM e ROM e periféricos encapsulados em um único chip, temos o MICROCONTROLADOR. Este, apesar de não ter o mesmo poder de processamento dos microprocessadores atuais, é bastante adequado a funções de controle de sistemas dedicados (eletrodomésticos, controladores numéricos industriais, coletores de dados, etc.). Exercícios / Pesquisa Complementares 1)– Verificar os seguintes dados do seu computador pessoal: - Tipo de Processador Velocidade de Processamento Capacidade da memória RAM Periféricos disponíveis 2) – Pesquisar quais os principais processadores da Intel lançados (do 4004 ao Pentium 3 destacando a evolução entre cada processador). AULA 3 1.3.4) - Barramentos: - Bus endereço: carrega a informação binária da localização de um dado de memória ou E/S. A capacidade de acesso é determinada pela expressão 2n. Ex: 8085 -> 16 bits na via de endereço -> 216 = 65512 kbytes 8088 -> 20 bits na via de endereço -> 1 Mbyte - Bus dados: carrega a informação de instrução (através do código de operação), variável do processamento ou dispositivo E/S. O tamanho da via de dados determina respectivamente o máximo número de instruções (e portanto o potencial de processamento) e a precisão do processamento aritmético (através do cálculo de ponto flutuante). Ex: 8085 -> 8 bits na via de dados -> 28 = 256 instruções e dados com precisão de 8 bits. 8086 -> 16 bits na via de dados -> capacidade de até 65512 instruções (portanto mais versatilidade) e dados com precisão de 16 bits. Instrução MOV A,B -> código de operação 78H (8085) armazenado na memória que utiliza o barramento de dados para entrar no microprocessador. - Tipos de Barramentos: PCI, etc.) serial (Ex.: I2C e SPI) e paralelo (ISA, 1.4) - Sinais envolvidos na escrita/leitura de dados na memória e periféricos: __ - Sinal de Leitura (RD): sinal de saída do microprocessador indicando a entrada de dados no mesmo. Coloca o barramento de dados como entrada. __ - Sinal de Escrita (WR): sinal de saída do microprocessador indicando a saída de dados no mesmo. Coloca o barramento de dados como saída. _ - Sinal de Seleção entre memória/periféricos (IO/M): em nível alto determina o endereçamento de periféricos. Em nível baixo o endereçamento de memória. Ex: Instrução MOV M,A RD -> WR -> IO/M -> Instrução IN 30H RD WR IO/M -> -> -> 1.5) - Arquitetura de um microprocessador: Figura 2 - Unidade Lógica Aritmética (ULA): unidade responsável pela realização de operações lógico/aritméticas no microprocessador. As operações aritméticas são todas baseadas na soma (implementada através de lógica 'OU EXCLUSIVO'). Toda lógica de decisão dos programas é baseada em operações lógica/aritméticas. Por exemplo: a comparação entre duas variáveis é implementada através da operação de subtração que por sua vez é viabilizada pela operação de complemento de 2 ('A - B = A + /B + 1'). A complexidade da ULA do microprocessador determina a capacidade do mesmo em realizar processamentos complexos (como tratamento de imagem ou som em sistemas multimídia). Exemplos clássicos são os microprocessadores tipo D.S.P. (Processador Digital de Sinais) ou os coprocessadores aritméticos presentes na família de computadores PC até os microprocessadores 486-SX. - Acumulador: principal registrador de auxílio da U.L.A. Bastante acessado pelas instruções, é o registrador armazenador dos resultados da U.L.A. O número de bits do acumulador pode ser do tamanho da via de dados ou o dobro (para aumentar a precisão do resultado presente no acumulador). - Flag: registrador sinalizador de algumas condições do acumulador (portanto do resultado) depois de realizadas operações lógico / aritméticas. As condições encontradas normalmente são: zero, sinal, "vai-um", "overflow", paridade, etc. Ex: Flag do 8085: ______________________ | S | Z | - | AC | - | P | - | C | - S -> flag de sinal. acumulador. Indica a condição do oitavo bit do S = 0 -> positivo S=1 -> negativo - Z -> flag indicar de zero. Z = 1 -> zero no acumulador , Z = 0 -> número diferente de zero. - P -> flag de paridade. P = 1 -> número par Indica o número de '1' no acumulador. , P = 0 -> número impar - AC -> flag auxiliar carry. segundo nibble do resultado. Em 1 indica "vai um" entre primeiro e - C -> flag carry principal. acumulador. Em 1 indica "estouro" ("overflow") do Ex: BBH + FAH 1 0 1 1 1 0 1 1 FLAG: S Z - AC - P - C + 1 1 1 1 1 0 1 0 --------------Exemplo: 1) – Qual o conteúdo do Acumular e Flag da seguinte rotina? no programa? MOV ADD JZ A,CAH A,9DH SALTO Haverá salto ;CARREGA ACUMULADOR COM O NÚMERO CA ;SOMA A + 9D ;SALTA SE Z = 1 - Decodificador de Instruções: bloco lógico responsável por receber o código de operação das diversas instruções e a partir deste gerar sinais de controle externos e/ou internos, bem como sinais de temporização, com o objetivo de executar a instrução. É implementado através de lógica combinacional, onde as variáveis de entrada são o código de operação do microprocessador e as variáveis de saída os diversos sinais de controle e temporização internos/externos. Exercícios / Pesquisa Complementares 1) – Pesquisar as principais características dos barramentos ISA e PCI do computador PC. 2) – Pesquisar as principais características do barramento serial I2C (site da Philips ou Microchip). 3) – Pesquisar as principais características do co-processador aritmético do processador Pentium II. 4) - Qual o conteúdo do Acumular e Flag da seguinte rotina? no programa? MOV MOV ADD JNC Haverá salto A,7AH B,53H A,B SALTO AULA 4 - Registradores de uso geral: registradores para armazenamento de dados ou endereços dentro do microprocessador. São implementados através de "latchs" internos (podendo ser comparados a posições de memória dentro do microprocessador). Quanto maior o número de registradores internos maior é a velocidade de processamento, pois não é necessário o acesso à memória externa para armazenamento de variáveis. É comum os microcontroladores e os D.S.P.s possuírem algumas centenas de 'posições de memória internas', diminuindo em muito o tempo de acesso à memória. Outro exemplo bastante apropriado é a memória "caches" internas aos microprocessadores 486 e PENTIUM. - Contador de Programa (PC): registrador armazenador do endereço da próxima instrução. Determina o fluxo do programa. Quando o programador altera o valor do PC, necessariamente desvia o programa (através de saltos sem retorno ou chamada de subrotinas). Ex: Instrução: JMP 2000H -> carrega o PC com o endereço 2000H. conteúdo anterior do PC é destruído (por isso o programa não consegue voltar). O Instrução: CALL 2000H -> carrega o PC com o endereço 2000H. Neste caso, o conteúdo anterior do PC (PCH->SP-1 e PCL->SP-2) é salva em uma região de memória (interna ou externa ao microprocessador) conhecida por PILHA. Ao ser executada a instrução RET, o programa retorna ao ponto em que foi chamado. A rotina acessada pela instrução CALL é conhecida por subrotina. O conteúdo do registrador SP é decrementado de dois para possibilitar o salvamento de outros parâmetros na pilha (ou a chamada de outras subrotinas dentro de subrotinas) Instrução: PUSH <registrador> -> guarda o conteúdo do registrador na pilha. É utilizado para preservar o valor do registrador ao retornar da sub-rotina. POP <registrador> valor do registrador salvo na pilha. 0H LXI SP,8000H -> retorna com o : : 1000H CALL 1003H : 2000H PUSH 2001H PUSH 2002H PUSH ÁREA DE PILHA 2000H : : B D H : : : POP POP POP RET (SUBROTINA) 7FF8H = 7FF9H = 7FFAH = 7FFBH = 7FFCH = 7FFDH = 7FFEH = 7FFFH = 8000H H D B - Apontador de Pilha (SP): registrador armazenador do endereço na área de pilha do sistema. Será nesta área que serão armazenados endereços de retorno das sub-rotinas, bem como parâmetros dos diversos registradores. 1.6) - Conceito básicos: 1.6.1) - Temporização das Instruções - Ciclo de Instrução: As atividades de um processador central são cíclicas. O processador busca a instrução na memória, executa a tarefa ligada ao código lido, busca a próxima instrução e assim por diante. A temporização de um computador depende basicamente do sinal de clock que sincroniza todas as operações do sistema. O clock é gerado a partir de um oscilador com freqüência determinada normalmente por um cristal. Este cristal pode estar interno ao microprocessador ou ser implementado através de um C.I. dedicado a isto. A figura abaixo mostra um exemplo de clock gerado internamente dentro do microprocessador 8085: Figura 5 Chama-se ciclo de instrução o número de períodos de clock necessários para executar uma instrução. O ciclo de instrução é composto basicamente do ciclo de busca da instrução (onde o código de operação é lido na memória) e ciclo de execução. O período de tempo necessário para o microprocessador fazer um acesso externo (a memória ou periférico) é conhecido por ciclo de máquina (representados pela letra 'M' no diagrama de temporização da instrução). O ciclo de busca da instrução vai depender do número de bytes necessários para a leitura da instrução (por exemplo: o 8085 possui instruções de até 3 bytes que obviamente necessitam de 3 ciclos de busca de códigos na memória). O tempo total necessário para o ciclo de instrução é determinado pelo número de estados T (ou número de pulsos do clock) fornecidos pelo conjunto de instruções do microprocessador. Exercícios: 1) - Calcular os ciclos M1, M2 e o ciclo de instrução para a instrução MOV A,B utilizando fc = 6 Mhz, n = 3, M1 = 4 clocks e M2 = 3 clocks. 2) - Idem para a instrução OUT 10h, fc = 1 Mhz, n=4, M1 = 4 clocks, M2 = 3 clocks e M3 = 3 clocks. 1.6.2) - Circuito de Inicialização: Também conhecido por "reset", a entrada de inicialização nos microprocessadores carrega o registrador de endereço PC com o endereço inicial da área de programa (normalmente 0). Pode ser acionado com sinal positivo (0 -> 1) ou negativo (1 -> 0). O manual do microprocessador normalmente informa o tempo mínimo necessário para que o sinal de reset fique ativo de tal forma a se determinar a constante RC do circuito. É fundamental que o sinal de reset seje gerado cada vez que o microprocessador seje ligado (reset automático) e em pequenas quedas de rede (pois o microprocessador quando tem a tensão de alimentação abaixo do nível mínimo recomendado, passa a executar tarefas fora do controle). O circuito abaixo mostra o reset utilizado pelo 8085 (lógica positiva, reset manual e automático). Nota-se a função do diodo em descarregar rapidamente o capacitor em caso de queda de energia. Figura 6 - Watch Dog: circuito supervisório que inicializa o microprocessador a cada período de tempo configurável (1 ou 2 segundos normalmente) se não receber um sinal do microprocessador. Desta forma o programa do sistema deve, em um tempo menor que o tempo do W.D., gerar este sinal. Se o programa se perder e não gerar o referido sinal, o W.D. inicializará o microprocessador. Exemplo: 1) - Determinar o mínimo valor de um capacitor para um circuito de reset automático considerando: Vcc = 5V, Vreset = 2/3 Vcc R = 100k Freqüência: 100 Mhz Número de clocks mínimo para reset: 100 2) – Calcular o período dos ciclos M1 (4 clocks), M2 (3 clocks) e o ciclo de instrução para a instrução MOV A,B, freqüência do cristal de 6 Mhz. 3) – Idem para a instrução OUT 10h, fc = 1 Mhz e M1=4clocks, M1'= 3 clocks e M2 = 3 clocks. AULA 5 1.6.3) - Interrupções: Sinal de entrada no microprocessador gerado normalmente por periféricos, fazendo o microprocessador parar seu processamento, salvar o endereço atual, saltar para uma subrotina específica do periférico (endereçado pelo vetor de interrupção, que pode ser fixo ou variável) e posteriormente retornar ao ponto de parada (poderíamos comparar o processo a uma chamada de subrotina através de um sinal de hardware). Ex: -Atendimento ao teclado: quando uma tecla é acionada, o teclado gera um sinal positivo que ao entrar na interrupção do microprocessador faz o mesmo parar o processamento, salvar o endereço atual do PC na pilha e saltar para o endereço indicado no "vetor de interrupção" (variável ou fixo). -Interrupções disponíveis no 8085: 5 entradas de interrupções ativadas em nível alto por um dispositivo externo. Neste caso, o 8085 interrompe a seqüência de execução do programa e salta para um endereço pré-determinado (vetor de interrupção). As interrupções possuem os seguintes vetores e prioridades: Interrupções + priorit. ^ TRAP | | RST6,5 | | RST6,5 | | RST5,5 | | INTR Endereço 0024H 003CH 0034H 002CH endereço fornecido por um controlador de interrupção Observa-se que a interrupção INTR necessita de um controlador de interrupção (como o 8259 do IBM-PC) para gerar este endereço. Neste caso, o microprocessador mostra o reconhecimento do endereço através do sinal de saída INTRA. Figura 3 Dentro dos microprocessadores estão disponíveis registradores de configuração que determinam interrupções pendentes e níveis de prioridade. No caso do IBM-PC, os vetores das 16 interrupções disponíveis para periféricos (e programadas no 8259) são determinadas pelo sistema operacional. Exercícios / Pesquisa Complementares 1) - Levantar com o auxílio do Painel de Controle / Sistemas / Gerenciador de Sistemas / Propriedades os vetores e periféricos do seu computador PC. 2) – Qual será o efeito para o computador se um modem for instalado na mesma interrupção / vetor do mouse? 3) – Explicar a diferença entre as instruções JMP 2000H e CALL 2000H. 4) – Quais as vantagens de utilizar sub-rotinas em programação. 1.6.4) - Acesso direto à memória (D.M.A): Sistema onde o barramento do computador é retirado do microprocessador (colocando o mesmo em tri-state) e controlado através de um outro microprocessador (multiprocessamento) ou através de um controlador de D.M.A. (como o 8257) para transferência de dados entre periféricos e memória. Ex: 1) - Carga de programas de um "winchester" ou "floppy" para memória RAM de um computador. 2) - Coprocessador aritmético nos computadores IBM-PC. Figura 4 1.6.5) - Multiplexação de sinais em microprocessadores: Consiste em um recurso de misturar 2 ou mais sinais em um terminal do microprocessador com o objetivo básico de economizar pinagem do chip. Um exemplo típico é a multiplexação da via de dados/endereço do 8085: os 8 bits de dados (D0-D7) são multiplexados no tempo com o byte menos significativo de endereço (A0-A7). O sinal de controle "ALE" (sigla de "Address Latch Enable") indica a natureza da informação presente naquele instante. ALE = 0 -> AD0-AD7 -> dados (D0-D7) ALE = 1 -> AD0-AD7 -> endereços (A0-A7) Ex: Figura 7 A separação da via de dados (D0-D7) da via de endereços (A0-A7) é necessária pelo fato de termos diversos dispositivos de memória e periférico com estes barramentos separados. A implementação desta separação pode ser realizada com os latchs octais 74373 (unidirecional) e 74245 (bidirecional). A figura abaixo mostra um circuito típico utilizado na demultiplexação dos sinais de dados/endereço do 8085. Figura 8 1.6.6) – Sincronização de Dispositivos Lentos: O pino de entrada READY (em nível alto permite o funcionamento do microprocessador e em nível alto o mesmo permanece em estado de espera – “wait”). O dispositivo de sincronização de memória / periférico lento controla o sinal READY do processador de tal forma a fazer o mesmo aguardar uma diferença de velocidade de acesso. Ex: Qual o período de um pulso de espera (Wait State) para o acesso a uma escrita no disco rígido considerando: Ciclo de instrução de escrita: 10 clocks Clock: 133 Mhz Tempo de Acesso ao disco rígido: 100 microsegundos. Exercícios / Pesquisa Complementares 1) - Determinar o mínimo valor de um capacitor para um circuito de reset automático considerando: Vcc = 3,3 V R = 10k Freqüência: 500 Mhz Número de clocks mínimo para reset: 500 2) – Qual o período de um pulso de espera (Wait State) para o acesso a uma memória RAM rápida considerando: Ciclo de instrução de escrita: 5 clocks Clock: 500 Mhz Tempo de Acesso a RAM: 15 nseg. 3) – Fazer um circuito de separação de dados / endereço de um processador com um barramento AD0-AD15, com sinal de ALE. Colocar um Buffer para a via de dados. AULA 6 1.7) - Sistema Mínimo com o microprocessador 8085 1.7.1) - Principais características do 8085: - 8 bits na via de dados (possui 246 instruções). - 16 bits na via de endereço (acessa 64 k de memória e 256 periféricos). - 5 entradas para interrupções. - Interface serial. - Controle de D.M.A. - Controle de sincronização para periféricos lentos. - Clock típico de 3 Mhz. 1.7.2) - Análise da arquitetura interna e pinagens: Figura 9 1.7.2.1) - Descrição das principais funções internas: - U.L.A: realiza operações aritméticas (soma, subtração, incrementação e decrementação) e operações lógicas (AND, OR, OR EXCLUSIVO, Inversão, deslocamentos bit a bit e comparação). - FLAG: registrador que sinaliza o resultado de operações da U.L.A. - Acumulador: registrador de 8 bits com multiplas funções (armazena resultados e operandos da U.L.A., dados de dispositivos de E/S, máscara de interrupções, etc). - Registradores de uso geral: 6 registradores de 8 bits (armazenando dados) podendo ser utilizados como pares de 16 bits (armazenando endereços). B C / Pares Fixos D E \ H L -> par de registrador mais utilizado como ponteiro de memória. - Registrador contador de programa (PC): registrador de 16 bits com a função específica de armazenar o endereço de busca da próxima instrução. Quando carregado através de instrução altera o fluxo seqüencial do programa ( realizando uma salto simples - instrução 'jump' - ou chamando uma subrotina - instrução 'call'). - Registrador apontador de pilha (SP): registrador de 16 bits com a função específica de armazenar o endereço final da área de memória denominada "pilha" (onde são armazenados parâmetros de retorno das subrotinas) - Decodificador de instruções: bloco lógico interno com a função de receber as instruções (códigos de operação que entram pela via de dados), decodificando-as e gerando sinais de controle e temporização. - Buffer de endereços alto (A8-A15): via de endereços mais significativa formando junto com A0-A7 os 16 bits totais da via de endereço. - Controle Serial: o 8085 possui uma saída serial de dados (SOD) controlada pela instrução SIM (coloca o oitavo bit do acumulador no pino SOD) e uma entrada serial de dados (SID), controlada pela instrução RIM (coloca o bit da entrada serial no oitavo bit do acumulador). 1.7.2.2) - Análise da pinagem do microprocessador 8085: - Alimentações +5V e GND: alimentação única. Recomenda-se a colocação de um capacitor cerâmico de desacoplamento com valor variando entre 10100 nF para eliminar ruídos. - X1 e X2: pinos de entrada do cristal. Possui um oscilador interno com a função de gerar um sinal de clock de 2 fases. Dispensa o circuito dedicado gerador de clock. - CLOCKOUT: saída de clock para periféricos. freqüência do cristal ligado ao X1 e X2. Tem a metade da - RESETIN: entrada de reset do 8085. Inicializa o 8085 (colocando o PC = 0000h e portanto buscando a primeira instrução) quando temos um nível baixo por mais de 10 mseg. - RESETOUT: saída ativa em nível alto com a função de inicializar os periféricos ligados ao 8085. Sincronizado com o sinal RESETIN. - RD: saída ativa em nível baixo indicando processo de leitura de memória ou periférico. Coloca o barramento de dados como entrada. - WR: saída ativa em nível baixo indicando processo de leitura na memória ou periférico. Coloca o barramento de dados como saída. _ - IO/M: sinal de saída. Em nível alto indica acesso a periféricos. Em nível baixo indica acesso a memórias. - S0 e S1: 0 0 1 1 0 1 0 1 -> -> -> -> sinais de saída indicando status. 8085 parado processo de processo de processo de (HALT) leitura escrita busca de instrução ("fetch") - READY -> sinal de entrada com a função de sincronizar periférico ou memória mais lenta que o 8085. Em nível alto habilita a operação do 8085. Em nível baixo para o 8085, fazendo-o permanecer em estado de 'WAIT'. - HOLD: sinal de entrada. Em nível alto coloca barramentos de dado, endereço e controle em "tri-state". Desta forma, um sistema externo (controlador de D.M.A. ou um outro microprocessador mais prioritário) assume um controle do barramento: - HOLDA: saída ativa em nível alto indicando barramento em tri-state para o controlador de D.M.A. ou para o microprocessador paralelo. 1.7.3) - Sistema Mínimo com o 8085: FIGURA 10 Exemplo: 1) – Projetar um sistema mínimo com o 8085 com as seguintes características: Clock – 4 Mhz Reset automático / manual 5 periféricos ligados a 5 interrupções Sistema DMA (representar em blocos) Desabilitar sinal READY. 32 Kbytes de memória EPROM (2764) 32 Kbytes de memória RAM (6264) 8 Periféricos (endereço 00 – ff). Representar cada periférico por um bloco. Exercícios / Pesquisa Complementares 1) – Comparar o microprocessador Z80 com o 8085. 2) – Projetar um sistema mínimo com o 8085 com as seguintes características: Clock – 1 Mhz Reset automático / manual Desabilitar as interrupcões através de resistores de pull-down Sistema DMA (representar em blocos) Desabilitar sinal READY. 32 Kbytes de memória EPROM (27256) 32 Kbytes de memória RAM (62256) 8 Periféricos (endereço 00 – ff). Representar cada periférico por um bloco. 3) – Projetar um sistema mínimo com o 8085 com as seguintes características: Clock – 2 Mhz Reset automático / manual Desabilitar as interrupcões através de resistores de pull-down Sistema DMA (representar em blocos) Desabilitar sinal READY. 16 Kbytes de memória EPROM (2764) – endereço 0-3fffh 32 Kbytes de memória RAM (62256) – endereço 8000h-bfffh 8 Periféricos (endereço 00 – ff). Representar cada periférico por um bloco. 4) – Pesquisar no Painel de Controle do PC os endereços de memória e periféricos do computador. Qual é a faixa de memória de vídeo? 5) – Projetar um banco de memória de um computador com 1 Mbytes tendo 512 K de eprom (271000) e 512 K de ram (621000). AULA 7 1.7.4) – Análise de 1 ciclo de temporização: Temporização da Instrução 'OUT <end>' (2 bytes) – Ex: OUT 20H (D3 20) Figura 11 Exercício: Fazer um diagrama de tempo para a instrução IN 40H 1.7.5) - Periféricos Paralelos: O periférico paralelo se caracteriza por controlar 2 ou mais sinais simultaneamente. Uma forma simples de implementação é através de "latchs" octais (8 flip-flops tipo D), como o 74LS373 apresentado na figura abaixo: Figura 12 1.7.5.1) - Utilização dos "latchs" como interface de saída: Ex.: Projeto de acionamento de 8 lâmpadas de 100 W (de um sistema de iluminação) com o "latch" 74LS373. Utilizar o sinal de endereço A8 para selecionar o "latch". Fazer um programa para acender apenas a lâmpada 3. Figura 13 1.7.5.2) - Utilização dos "latchs" como interface de entrada: Ex.: Projeto da leitura de 8 sensores de presença (tipo ultra-som utilizado em alarmes) com o "latch" 74LS373. Utilizar o sinal de endereço A8 em nível baixo para selecionar o "latch". Fazer um programa para ler os 8 sensores e colocar sua condição na posição de memória 2000H. Figura 14 Exemplo: Primeiro sensor controlando primeira lâmpada na o microprocessador 8085 IN ANI JZ MOV OUT JMP SALTA: MOV OUT FIM: ..... 20H 01 SALTA A,#01 00 FIM A,#00 00 Exercício: 1) - Fazer um programa para o primeiro sensor de um sistema (endereço 20H-3fH) ligue e desligue o quinto motor (endereço 0-1fH). Exercícios / Pesquisa Complementares 1) – Representar o diagrama de tempo da instrução IN 20H do 8051 (lê o periférico de entrada de endereço 20h e coloca dado no acumulador). 2) – Utilizando os latchs 74373, fazer um sistema mínimo para o 8085 com as seguintes características: Clock – 4 Mhz Reset automático / manual Desabilitar as interrupcões através de resistores de pull-down Sistema DMA (representar em blocos) Desabilitar sinal READY. 16 Kbytes de memória EPROM (2764) – endereço 0-3fffh 32 Kbytes de memória RAM (62256) – endereço 8000h-bfffh Controle de 8 lâmpadas (endereço 0-1fh) Entrada de 8 interruptores (endereço 20h-3fh) 3) – Fazer um controle de 8 motores (40h – 5fh) chaves 8 chaves (60h – 7fh). Fazer a quinta chave ligar ou desligar os 8 motores. AULA 8 2. MICROCONTROLADORES 2.1) - Quadro comparativo entre Microprocessadores / Microcontroladores Características Velocidade Consumo Memória de Programa Memória de Dados Arquitetura de Memória Barramento Aplicação Microcontrolador Lenta ( típico < 1Mhz) Baixo (uA) Pequena capacidade (kbytes) Mínima (bytes) Hardware (típica) 8 bits (dados) fechada, firmware Microprocessador Rápida (típico > 1 Ghz) Alto ( ventilador, fonte chav.) Grande capacidade (mbytes) Grande capacidade (mbytes) Von- Newmann > 64 bits (dados) aberta, multimidia 2.2) - Família de Microcontroladores INTEL MCS-51: A linha de microcontroladores MCS-51 de 8 bits sucedeu a antiga família MCS-48. Os principais recursos destes microcontroladores são: - Memória de Programa de 4 kbytes: ROM (8051), EPROM (8751). Versão "romless" (8031). - 256 bytes de RAM (registradores) - 4 ports (latchs bidirecionais programáveis) com 8 bits. - 2 temporizadores ("timers") de 16 bits - 1 unidade serial assíncrona (UART) "full-duplex". - 5 interrupções (2 externas, 2 "timers" e 1 "UART"). - Oscilador interno para geração de temporização. - Acesso a até 64 Kbytes de RAM externa (dados) e 64 Kbytes de EPROM (programa) externa através do controle de 2 sinais de leitura (PSEN -> área de programa - RD -> área de dados). Esta estrutura é conhecida como 'arquitetura HARVARD'. - 256 instruções otimizadas para controle. 2.3) - Arquitetura do Microcontrolador 8051: Figura 15 2.3.1) - Descrição da pinagem: - Vcc,Gnd: alimentação única de 5 Vcc. - X1-X2: conectada ao cristal externo (12 Mhz típico). O sistema de temporização interno divide a freqüência do cristal por 12, proporcionando um ciclo típico de máquina de 1 mseg. - RST: entrada de inicialização ativa em nível alto __ - EA ("external acess"): em nível baixo, desabita os 4 kbytes de memória de programa interna. Toda a busca de instrução é realizada externamente (através de uma EPROM). Em nível alto habilita a memória interna. Figura 16 - ALE ("Address Latch Enable"): na utilização de memória de programa externa, este pino tem a função de indicar a presença de endereço (em nível alto) ou dado (em nível baixo) no barramento de endereço/dado multiplexado (AD0-AD7). ____ - PSEN ("Program Strobe Enable"): em nível baixo indica leitura de uma instrução da área de programa. Normalmente ligado ao pino RD da memória de programa. - Port P0 (P0.0-P0.7): seus 8 pinos podem ter dupla função. Se não houver memória externa, são utilizados como sinais de entrada/saída do "latch" bidirecional P0. Se houver memória externa, atua como 8 sinais multiplexados de dados/endereço (AD0-AD7). O sinal de ALE indica a condição deste barramento. - Port P1 (P1.0-P1.7): bidirecional P1. 8 pinos de entrada/saída do "latch" - Port P2 (P2.0-P2.7): seus 8 pinos também podem ter dupla função. Se não houver memória externa com mais de 256 endereços, são utilizados como sinais de entrada/saída do "latch" bidirecional P2. Se houver necessidade de endereçamento maior que 8 bits, atua como 8 sinais de endereço A8-A15. - Port P3 (P3.0-P3.7): P3.6 - P3.0: P3.1: P3.2: P3.3: P3.4: P3.5: P3.6: novamente, seus 8 sinais tem dupla função: RxD (recepção serial) / port P3.0 TxD (transmissão serial) / port P3.1 INT0 (interrupção 0) / port P3.2 INT1 (interrupção 1) / port P3.3 T0 (entrada Timer 0) / port P3.4 T1 (entrada Timer 1) / port P3.5 WR (sinal de escrita da RAM externa)/port P3.7: RD (sinal de leitura da RAM externa)/port 2.3.2) - Descrição das funções internas: - U.L.A.: unidade lógia aritmética de 8 bits, responsável pela execução das 4 operações aritméticas básicas e das operações lógicas tradicionais (AND, OR, OR EXCLUSIVE, INVERSÃO e SHIFT). - Acumulador: registrador de 8 bits mais utilizado pelo microcontrolador. Normalmente utilizado para colocar resultados da U.L.A. ou fatores utilizados nas operações lógico / aritméticas. No caso das operações de multiplicação, o registrador B também é utilizado para colocação dos resultados, pois o resultado é apresentado em 16 bits. - Flag PSW: registrador sinalizador das operações aritméticas da U.L.A., configurador dos registradores R0-R7 e para uso geral. Abaixo é mostrado a posição e nome de seus 8 bits: CY AC F0 RS1 RS0 OV - P CY (PSW.7): indica presença de bit CARRY (vai um) nas operações aritméticas da U.L.A. AC (PSW.6): indica presença do bit Auxiliar Carry quando ocorre vai um entre os 3 e 4 bits nas operações aritméticas da U.L.A.. F0 (PSW.5): bit para uso livre do programador. RS1 e RS0 (PSW.4 E PSW.3): R0-R7 será acessado. 0 0 1 1 - 0 1 0 1 -> -> -> -> configura qual banco de registradores primeiro banco segundo banco terceiro banco quarto banco Ex.: MOV PSW,#00001000B ;RS0=1 E RS1=1 -> SEGUNDO BANCO OV (PSW.2): indica presença de bit CARRY (bit 8 ativado) nas operações de multiplicação da U.L.A. Auxilia também as operações de subtração. P (PSW.0): indica paridade do acumulador. Se setado, indica número par de '1' no acumulador. Caso contrário indica número ímpar. - Contador de Programa (PC): registrador de 16 bits que guarda o endereço da próxima instrução. Quando o 8051 é resetado, este registrador é zerado, fazendo o 8051 buscar a primeira instrução da memória. - Apontador de Pilha (SP): registrador de 8 bits indicador do endereço inicial da pilha do 8051. A pilha necessariamente tem que estar localizada entre os endereços 30H e 7FH da área RAM interna do microcontrolador. O tamanho da pilha deve ser suficiente para permitir os diversos acessos de subrotinas do programa (considerando os armazenamento dos endereços do PC e dos parâmetros da instrução PUSH). - Ponteiro de Memória Externo (DPTR): registrador de 16 bits utilizado para armazenar endereços de memória externa. - Registrador B: registrador auxiliar nas operações de multiplicação e divisão. - Decodificador e Registrador de Instruções / Controle e Temporização: sistema responsável pelo armazenamento, decodificação e execução dos códigos de operação (bytes) das 256 instruções do 8051. Controla os sinais externos de controle (reset, ALE, configuração da memória interna de programa e sinal de leitura da memória externa). - Timers: o 8051 possui 2 sistemas de temporização de 16 bits. Maiores detalhes serão fornecidos nos capítulos subsequentes. - Unidade Serial: sistema para comunicação serial assíncrona fullduplex. Maiores detalhes serão fornecidos nos capítulos seguintes. - Memória de Dados (SFR) e de Programa: o 8051 possui um estrutura de acesso ao sistema de memória conhecida como HARVARD, onde o acesso a memória de programa é diferenciado do acesso a memória de dados (através de sinais de leitura distintos). Desta forma, o microcontrolador não permite que um determinado programa fique localizado na área de dados ou vice-versa. A grande vantagem deste sistema é a otimizacão do sistema no acesso as instruções do programa e aos dados. O programa dos sistemas com microcontroladores normalmente são dedicados (FIRMWARE). Observe que este modo de acesso a memória é diferente dos microcomputadores padrão IBM-PC, onde normalmente os programas localizam-se na área de dados (daí o fato de cada vez mais ser importante uma grande área de memória RAM dentro dos computadores). - Memória de Dados (SRF): o 8051 possuir 256 bytes de memória de dados interna e permite o acesso de mais 64 Kbytes de memória de dados externa (unicamente através das instruções MOVX). Na maioria das vezes a memória interna de dados é suficiente, pois as aplicações de controle normalmente não exigem muita quantidade de memória volátil (já que os programas não são armazenados na área de RAM). A memória RAM interna é divida em 4 áreas: - Área de Registradores R0-R7 (00-1FH): o 8051 possui 4 bancos de registradores selecionados através dos bits RS1 e RS0 do registrador PSW. Normalmente estes registradores armazenam endereços da área de rascunho (modo de endereçamento indireto). - Área Booleana (binária) (20H-2FH): 16 bytes endereçados bit a bit (totalizando 128 bits). Pode-se acessar cada bit individualmente indicando uma determinada condição binária (por exemplo: a tecla A de um teclado foi acionada). Estes bits são acessados pelas instruções booleanas do 8051. - Área de Rascunho (30H-7FH): localiza a pilha do sistema. memória de uso geral onde se - Área de Registradores Especiais (SFR) (80H-FFH): área onde se localiza todos os registradores com função especial. O número destes registradores varia de acordo com as funções disponíveis dentro do processador. Os registradores especiais mais comuns são: - PO (80H): port P0. - P1 (90H). - P2 (A0H). - P3 (B0H). - ACC (E0H): acumulador. - B (F0H) - PSW (D0H): registrador de status - SP (81H): apontador de pilha - DPL (82H): byte menos significativo do registrador DPTR. - DPH (83H): byte mais significativo do registrador DPTR. - PCON (87H): registrador de controle de consumo do 8051. - IE (A8H): registrador de habilitação do sistema de interrupções. - IP (B8H): registrador indicador de prioridade do sistema de interrupção. - TMOD (89H): registrador de modo dos timers. - TCON (88H): registrador de controle do timer 1 - T2CON (C8H): registrador de controle do timer 2. - TL0 (8AH): byte inferior do timer 1. - TH0 (8CH): byte superior do timer 1. - TL1 (8DH): byte inferior do timer 2. - TH1 (8BH): byte superior do timer 2. Exercícios / Pesquisa Complementares 1) – Fazer um download de um arquivo .PDF com a arquitetura do 8051 (preferencialmente da Philips ou Intel). 2) – Fazer um levantamento dos fabricantes que possuem microcontroladores com a arquitetura do 8051 (www.8052.com). 3) – Fazer um levantamento dos microcontroladores fabricados pela Philips e pela ATMEL. 4) – Obter um compilador para Assembler diferente do ASM51 utilizado no laboratório. 5) – Levantar o endereço de todos os registradores especiais do 8051. AULA 9 2.4) - Sistema Mínimo com o 8051: - 32 sinais de entrada/saída FIGURA 17 - Interface serial (RxD e TxD), interrupções externas (INT0 e INT1), "timer" duplo externo (T0 e T1). FIGURA 18 2.5) - Sistema Mínimo com o 8031 (ROMLESS): - EPROM 4 kbytes (2732) Exemplo: 1) – Sistema com o 8031 com as seguintes características: lâmpada Eprom Externa 27128. RAM 6264 (end. 0 – 1fffh). Clock de 11.059Mhz Reset automático e manual Alarme com uma chave liga/desliga, 4 sensores ultrasônicos, 1 e 1 buzina. 2) – Sistema com o 8051 com as seguintes características: - Clock de 12 Mhz Reset automático e manual. Controle de 12 motores . 12 entradas de chaves. Exercícios / Pesquisa Complementares 1) – Obter na internet um projeto com o 8051. 2) – Projetar um coletor de dados com o 8031 com as seguintes características: - Eprom Externa 27128. RAM 62512 Clock de 11.059Mhz Reset automático e manual 8 ports para um teclado. Comunicacao serial Previsão de utilizar 2 ports para controle de um display. AULA 10 3) - Linguagem Assembler 3.1) - Introdução: A linguagem Assembler é uma linguagem de nível intermediária, composta basicamente de mnemônicos (palavra representando o código de operação da instrução), diretivas (pseudo-instruções), labels e comentários. Pelo fato de estar bem próxima a linguagem de microprocessador (linguagem de máquina composta de bits compreensível pelo processador), exige um compilador (programa que converte o programa fonte em linguagem de máquina) bastante simples e portanto rápido. É ideal para utilização na área de projeto e testes de microprocessadores, pois exige conhecimento da estrutura do microprocessador utilizado (ao contrário das linguagens superiores transparentes a estrutura do processador). Tem a desvantagem de não possuir a estrutura de linguagens como PASCAL e C. HARDWARE<-L.MÁQUINA<-L.ASSEMBLER<-L.SUPERIOR<-APLICATIVO ^ | BITS ^ ^ ^ | | | | ESTRUTURAS | | | MENMEUMÔNICOS INTERATIVA PSEUDO-INSTRUÇÕES AO USUÁRIO LABELS A medida que a linguagem fica mais interativa ao programador, o compilador necessita de ser mais complexo e portanto mais lento. - Instrução: código binário composto de 1 ou mais bytes com a função de orientar o processador a realizar uma tarefa específica. Estes códigos serão lidos seqüencialmente da memória e, através da via de dados, entrarão no decodificador de instruções do microprocessador, gerando uma série de sinais internos e externos de controle. - Tamanho das instruções no 8085: memória. podem ocupar 1, 2 ou 3 bytes de - 1 byte: o código de operação já especifica completamente a função da instrução, não necessitando de complemento algum. D7 D6 D5 D4 D3 D2 D1 D0 -> código de operação Ex: MOV B,A (desloca o dado do acumulador para o registrador B) -> não necessita de complemento Código de operação -> 01000111 - 47H - 2 bytes: necessita de 1 byte de complemento D7 D6 D5 D4 D3 D2 D1 D0 -> código de operação D7 D6 D5 D4 D3 D2 D1 D0 -> segundo byte de compl. Ex: MVI A,07 (carrega o acumulador com o dado 07) Primeiro Byte (cód. operação) -> 00111110 - 3EH Segundo Byte (complemento) - 3 bytes: -> 00000111 - 07H necessita de 2 bytes de complemento D7 D6 D5 D4 D3 D2 D1 D0 -> código de operação D7 D6 D5 D4 D3 D2 D1 D0 -> primeiro complemento D7 D6 D5 D4 D3 D2 D1 D0 -> segundo complemento Ex: LXI H,2000H (carrega H com 20H e L com 00H) Primeiro Byte (cód. operação) -> 00100001 - 21H Segundo Byte (primeiro compl.)-> 00000000 - 00H Terceiro Byte (segundo compl.)-> 00000010 - 20H - Modos de endereçamento do 8051: - Direto: o dado do operando indica o endereço de transferência do dado. Ex: MOV A,50H ; o dado do endereço 50H da RAM interna do 8051 é transferido para o acumulador - Registrador: o dado do operando Rn é transferido para o destino. Ex: MOV A,R6 transferido para o acumulador - Imediato (#dado): ; o dado do registrador R6 é o dado seguido de # é transferido para o destino Ex.: MOV R1,#70H - Indireto (@Rn): o dado armazenado no endereço da memória com endereço guardado no registrado Rn é transferido para o destino Ex.: MOV MOV acumulador. R0,#50H ; o dado 50H é carregado em R0 A,@R0 ; o dado do endereço 50H é carregado no 3.2) - Estrutura e diretivas da Linguagem Assembler: Um programa em assembler é composto basicamente de comentários, códigos de operação, operandos, pseudo-instruções (diretivas) e labels. Os comentários são sempre precedidos de ponto e vírgula e tem a função de documentar o programa, esclarecendo funções e procedimentos. O "label" (rótulo) pode ser de 2 tipos: quando seguido de ':', determinada com um nome um determinado endereço. Quando seguido da expressão EQUATE (EQU), associa um nome a uma constante. Uma linha em Assembler completa costuma ter a seguinte estrutura: LABEL: CÓDIGO DE OPERAÇÃO Ex: INICIO: MOV -------label cód.oper. OPERANDO ;COMENTÁRIO SP,70H ;CARREGA SP COM END. DA PILHA ---------------------------------operando comentário As pseudo-instruções (diretivas) são instruções especiais, não codificáveis (para linguagem de máquina), com o objetivo de melhorar a estrutura do programa e facilitar o processo de programação. As diretivas mais utilizadas såo: - ORG (origem): indica endereço inicial da memória onde devem ser armazenadas as instruções posteriores. Um programa pode possuir mais de uma diretiva ORG. - EQU (equate): define equivalência entre nomes (labels) de dados ou endereços que serão substituidos no processso de compilação para se obter os códigos executáveis finais. Tem a função de otimizar possíveis alterações nos dados e endereços nomeados pelo EQU. - DB (define byte): define valor a ser colocado na memória - DS (define espaço): define número de espaços reservados na memória para posterior utilização. - END: finaliza a edição do programa. 3.3) - Códigos de operação do microcontrolador 8051: Com o objetivo de introduzir as instruções do 8051 da forma mais didática possível, dividiremos os 256 mnemônicos em 5 grupos: instruções de transferência de informação, aritméticas, lógicas, transferência de controle e booleana. 3.3.1) - Instruções de transferência de informação: Conjunto de instruções com o objetivo de transferir ou carregar dados da área de memória/registradores. Normalmente são instruções voltadas para a área de RAM interna, havendo apenas 4 instruções que envolvem acesso a RAM externa. Utilizaremos a seguinte notação: - Rn: registradores R0-R7 (banco selecionado em PSW) - Ri: registradores R0-R1 utilizados para endereço indireto - Direto: endereço direto da área de memória interna - MOV destino,fonte destino Ex.: MOV Acumulador MOV MOV MOV MOV A,R7 ;transfere (copiando) o dado da fonte para o A,Rn A,direto A,@Ri A,#dado ; copia o dado contido no registrador R7 para o MOV A,40h ; copia o dado do endereço 40h da RAM interna ; para o acumulador MOV A,P1 ; copia o dado do PORT 1 (registrador ;localizado na área SFR da RAM interna) para ;o acumulador MOV A,@R0 ; copia o dado contido na área de RAM cuja o ; endereço esta em R0 para o acumulador MOV A,#40h ; carrega o dado 40h no acumulador - MOV Rn,A - MOV Rn,direto - MOV Rn,#dado Ex.: MOV MOV A,07 R5,A ;carrega o dado 07 no registrador R5 MOV R2,30H ;carrega o dado do endereço 30H no reg.R2 MOV R3,#00 ;carrega o dado 00 em R3 3333 Ex.: MOV MOV MOV MOV MOV direto,A direto,Rn direto,direto direto,@Ri direto,#dado MOV P1,A MOV 45h,R0 ;carrega o port P1 (SFR) com dado de A MOV 45h,40h ;copia dado do end. 40h para o end. 45h MOV MOV MOV 40h,#05h R0,40h 50h,@R0 ;carrega end. 50h com dado 05 - MOV @Ri,A - MOV @Ri,direto - MOV @Ri,#dado Ex.: MOV MOV MOV A,#0FFh R1,#50h @R1,A ;carrega dado FFH no end. 50h MOV MOV R1,#60h @R1,#00h ;zera posição 60h da memória - MOV DPTR,#dado (16);carrega DPTR com dado de ;16 bits (pois a memória ;externa tem capac. de ;64k) - Instruções de leitura de tabela: tabela é um conjunto de constantes colocadas na área de programa com a finalidade de relacionar uma variável com uma dado de saída. Por exemplo: os valores de seno de 0 a 90 graus podem ser tabelados ao invés de executar-se cálculos através de processos numéricos. A tabela sempre é composta de um endereço inicial e de uma variável conhecida por offset. Retomando o exemplo do seno, o endereço inicial seria da tabela de seno e a variável seria o grau de seno que desejamos conhecer. - MOVC A,@A+DPTR ;leitura de tabela da ROM com endereço armazenado em A (offeset) + DPTR (início da tabela) - MOVC Ex.: MOV MOV MOVC ASCII: MOV . . . DB DB DB . . . A,@A+PC ;idem com end. inicial em PC DPTR,#ASCII ;carrega DPTR com inicio da ;tab. A,#0 ;indica 0 para conversão A,@A+DPTR ;carrega A com valor de 0 ;em ASCII P1,a 30H 31H 32H - Instruções de acesso a memória externa: a memória de dados externa tem capacidade máxima de 16 bits com endereçamento através do DPTR ou Ri (R0 ou R1). - MOVX A,@Ri ;le dado de mem. ext. ;endereçado por Ri - MOVX A,@DPTR - MOVX @Ri,A - MOVX @DPTR,A ;escreve dado no acum. na ;memória ext. - XCH A,Rn ;troca dados do acum. com reg. - XCH A,direto - XCH A,@Ri - XCHD Ex.: A,@Ri ;troca apenas nibble inferior MOV MOV XCH A,#00H 30H,#5AH A,30H ;ACUM=5AH e end. 30h=00H MOV MOV MOV XCHD A,#0F5h R0,#30h @R0,#6Ah A,@R0 ;ACUM=FAH e end. 30H=65H 3.3.2) - Instruções Aritméticas: A U.L.A. do 8051 tem condições de realizar as 4 operações aritméticas básicas. As operações normalmente envolvem o acumulador como um dos parâmetros e o resultado normalmente são armazenados no acumulador. As operações aritméticas normalmente afetam os bits do flag (PSW). - Instruções de Soma: - ADD A,Rn ;Acum + Rn = Acum. ADD A,direto ADD A,@Ri ADD A,#dado ADDC A,Rn ;Acum + Rn + Carry = Acum. ADDC A,direto ADDC A,@Ri ADDC A,#dado ADDC A,Rn INC A ;Acum+1 = Acum INC Rn - INC direto - INC @Ri - INC DPTR - Instruções de Subtração: - SUBB A,Rn ;Acum - Rn = Acum. SUBB A,direto SUBB A,@Ri SUBB A,#dado DEC A ;Acum-1=Acum DEC Rn DEC direto DEC @Ri - Multiplicação: o resultado de 16 bits é armazenado no Acumulador (LSB) e no registrador B (MSB). - MUL A,B ;multiplica dado de A por B - Divisão: a parte inteira do resultado é armazenado no acumulador e o resto no registrador B - DIV A,B ;divide A por B - Ajuste decimal: soma o número 6 ao nibble superior a 9. Instrução para ajuste decimal. - DA A 3.3.3) - Instruções Lógicas: A C.P.U. do 8051 realiza as seguintes operações lógicas: AND, OU, OU EXCLUSIVO, COMPLEMENTAÇÃO, ROTAÇÃO (SHIFT REGISTER) PARA ESQUERDA E ROTAÇÃO PARA DIREITA. - Instruções AND: - ANL ANL ANL ANL A,Rn A,direto A,@Ri A,#dado ;A ^ Rn = A - Instruções OU: - ORL ORL ORL ORL A,Rn A,direto A,@Ri A,#dado ;A OU Rn = A - Instruções OU-EXCLUSIVO: - XRL A,Rn ;A OU-EXC Rn = A - XRL A,direto - XRL A,@Ri - XRL A,#dado - Rotação: divisão/multiplicação binária - RR A ;rotaciona todo os bits do ;acumulador 1 posição para a ;direita. O bit 1 é deslocado para ;o oitavo bit - RRC A ;o primeiro bit o acumulador é ;rotacionado para o carry e o bit ;deste para o oitavo bit do ;acumulador - RL - RLC A A ;idem a RR mas invertendo a direção ;idem a RLC mas invertendo a dir. - Complementação: - CPL A - CLR A - SWAP ;complementa todos os bits do acum. ;zera acumulador A ;troca os nibbles do acumulador Exercícios / Pesquisa Complementares 1) – Obter um download do conjunto de instruções do 8051. 2) – Explicar a diferença entre as instruções abaixo: mov a,@r0 movx a,@r0 3) – Fazer um programa para somar os dados da memória interna 30H com o dado da memória externa 30h. Incrementar o resultado e fazer uma operação OU exclusivo com o dado do registrador R3. Guardar o resultado final no registrador R7. AULA 11 3.3.4) - Instruções de Transferência de Controle: Instruções que alteram o valor do PC (fluxo do programa) e utilizam a pilha para salvamento de parâmetros. Podemos ter 2 tipos de salto no programa: sem retorno (não há salvamento do PC na pilha) e com retorno (tipo subrotina onde há o salvamento do PC na pilha). - Instruções de Salto sem retorno: temos 3 tipos de instruções "jump" que não salvam o conteúdo do PC. Normalmente pode-se apenas utilizar a instrução JMP que o compilador transformará no tipo conveniente (dependendo do tamanho do endereço): - SJMP end(8) ;carrega PC com endereço de 8 bits AJMP end(11);carrega PC com endereço de 11 bit LJMP end(16);carrega PC com endereço de 16 bit JMP @A+DPTR ;carrega PC com endereço (A+DPTR) JNZ end(8) ;se Z=0, salta para endereço JZ end(8) ;se Z=1, salta para endereço - Instruções de chamada e retorno de subrotina: instruções que carregam o PC com um determinado endereço mas salvam o endereço anterior do PC na área de pilha (PCH -> (SP+1) e PCL -> (SP+2)). Por isso, podem retornar através da instrução RET que resgatam o endereço do PC na pilha. - ACALL end(11) ;salta para a subrotina de endereço PCH->(SP+1), PCL->(SP+2) e SP->SP+2 - LCALL end(16) ;idem com end. de 16 bits - RET ;resgata endereço da pilha, retornando ao ponto da chamada de subrotina. SP->PCL, SP-1->PCH e SP=SP-2 - RETI ;retorno de subrotinas de interrupção. - PUSH direto ;salva na pilha (SP+1) dado direto - POP direto ;resgata da pilha (SP-1) dado direto indicado. - Instruções de comparação: compara-se dois dados. Se diferentes, saltam, caso contrário não. São instruções condicionais presentes nas estruturas de decisão. - CJNE CJNE CJNE CJNE A,direto,end(8) ;se A A,#dado,end(8) ;se A Rn,#dado,end(8) ;se @Ri,#dado,end(8) ;se direto, saltam #dado, saltam Rn #dado, saltam (Ri)#dado, saltam - Instruções para "loop" de contagem: instruções que permitem o retorno a um determinado endereço se um determinado contador não chegar a zero. Ao retornar, o conteúdo do contador é decrementado. - DJNZ Rn,end(8) ;decrementa Rn. Se Rn0, ;retorna ao endereço - DJNZ direto,end(8) ;idem utilizando dado ;direto como contador. 3.3.5) - Instruções Booleanas: Instruções que envolvem processamento binário. Muito comuns em operações de controle onde ligamos/desligamos equipamentos (motores, solenóides, lâmpadas, leds, etc) ou lemos entradas (chaves, sensores, etc) que estão ligados/desligados. Os bits do sistema se localizam em duas áreas: área boolena da RAM interna (20H-2Fh, ou bits 0 a 127) e bits dos registradores especiais (SFR). Os bits da área boolena podem ser designados de 2 formas: - 20.0 ou 0-> primeiro bit do primeiro byte da área boolena - 2F.7 ou 7F-> último bit do último byte da área boolena Os bits dos registradores especiais (SFR) podem ser designados pelos nomes do registrador endereçado pela posiçao no bit ou pelo próprio nome do bit: - PSW.7 ou Cy-> bit carry do flag O bit Cy (ou simplesmente C) é bastante utilizado nas instruções boolenas. - CLR C ;zera bit Cy CLR bit ;zera bit especificado SETB C ;seta bit Cy SETB bit ;seta bit especificado CPL C ;complementa Cy CPL bit ;complementa bit ANL C,bit ;operação "and" entre o Cy e o bit ANL C,/bit;operação "and" entre o Cy e o inverso ;do bit especificado - ORL C,bit ;operação "OU" entre o Cy e o bit - ORL C,/bit;operação "OU" entre o Cy e o inverso ;do bit especificado - MOV C,bit ;copia bit especificado para o Cy - MOV bit,C ;copia Cy para o bit - JNC end(8);salta para o endereço especificado se ;Cy é zero - JC end(8);salta para o endereço especificado se ;Cy é um - JB bit,end(8) ;salta para o endereço espec. ;se bit=1 - JNB bit,end(8) ;salta para o endereço espec. ;se bit=0 - JBC bit,end(8) ;salta e zera o bit se o mesmo ;estiver setado AULA 12 3.4) - Exercícios de Linguagem Assembler do 8051: 1) - Carregar o dado do PORT P1 nos registradores internos R0-R7 do terceiro banco. 2) - Somar o dado do endereço 30H da memória interna com o dado 30H da memória externa. Complementar o resultado e fazer uma operação AND com o dado do PORT P1. Guardar o resultado no endereço 50H da memória interna. 3) - Carregar a memória RAM interna do 8051 com o dado AAH. 4) - Idem para uma área de memória RAM externa entre 8000H e FFFFH. 5) - Fazer uma rotina de 0,5 segundos, utilizando um 8051 com cristal de 12 Mhz. 6) - Fazer uma rotina de tempo genérica, utilizando um 8051 com cristal de 12 Mhz. Esta rotina receberá pelo par de registradores R6 e R7 o periodo de tempo em mseg. 7) - Zerar todos os bits dos ports P1 e P3 se o bit P0.0 estiver em nível alto. 8) - Ler o bit P1.0 com uma rotina de "debouced" de 10 mseg. Se este bit estiver em nível alto, acender de forma consecutiva 7 lâmpadas controladas pelos outros bits do port P1 com intervalo de 1 segundo. AULA 13 3.5) - Projetos com o 8051: 1) – Projetar um sistema mínimo com o 8051 para um sensor fotoelétrico ligar 15 lâmpadas 1 minuto apos o sensor indicar condição de escuro e desligar 1 minuto após o sensor indicar claridade. 2) – Projetar um sistema com o 8031 com as seguintes características: - Alarme com 1 chave liga/desliga, 1 sensor ultra-sônico e 1 buzina - Cristal de 12 Mhz - Reset automático e manual - Memória externa de programa 2764 - Fazer um programa para ativar o alarme se a chave liga/desliga estiver ativa. Monitorar o sensor de tal forma que se o mesmo indicar violação e 10 segundos depois de verificado a chave liga/desliga (no caso de alarme ter sido desligado pelo dono), se o mesmo ainda estiver ativado, disparar a buzina e desligá-la apenas se o alarme estiver desativado. 3) – Idem para ligar a buzina por um período máximo de 5 minutos. 4) – Idem para 8 sensores. Aula 14 3.5) - Projetos com o 8051: 3) - Projetar um forno de micro-ondas com o 8051 com as seguintes caracteristicas: - Cristal de 12 Mhz - Reset automático - Comunicação Serial - Memória ROM de programa interna - Entrada para chave da porta, 4 bits para o display de LCD - Controle de teclado de 16 teclas através de 8 bits e de 1 chave de início de operaçao. - Controle de 1 motor para o prato, lâmpada de iluminação interna e 1 válvula de microondas. - Firmware ativando o motor, a lâmpada e a válvula se forem acionada a tecla de início e se a porta estiver fechada. 4) - Fazer um projeto de uma máquina de lavar roupas utilizando o microcontrolador 8031 com as seguintes características: - 4 Kbytes de EPROM externa. - Controle do relê de acionamento do motor principal, solenóide para abrir a válvula de entrada de água fria e água quente, solenóide para saída de água, solenóide para saída de detergente e amaciante, 4 leds para indicações gerais e 1 sonorizador. - Entrada do sensor de nível máximo de água de 2 teclas de programação para o usuário. - Possibilidade de comunicação serial. 5) - Fazer um projeto de um FIRMWARE para o projeto acima com as seguintes características: - Inicializar o sistema desligando todas as saídas e acendendo o primeiro led indicando espera de programação. - Esperar a primeira tecla de programação estar ativada. Quando estiver, ligar o solenóide para água fria ou quente, dependendo da condição da segunda tecla de programação. Aguardar indicação do sensor de nível máximo de água e desligar o solenóide em questão. - Acionar solenóide para saída do detergente e amanciante por 1 minuto. - Ligar o motor principal por 15 minutos. - Abrir a válvula de saída de água por 5 minutos. - Acionar led de fim de operação e acionar o sonorizador por 5 segundos. Primeira Lista de Exercícios - Microprocessadores I Turma 7E/F - Escola de Engenharia Colaboração: Monitor Carlos Henrique 1) - Sistemas de Numeração: 1.1) - Converter os seguintes números para decimal: 1011 1011B 1111 0001 1001 1111B 8ABF H 3459FE5A H O endereço inicial da memória de vídeo do seu PC 1.2) - Converter os seguintes números para hexadecimal: 1011 1111 1011 0010 1111 1110 1010 1001 B 1253 D 543 D 2) - Por que o computador utiliza no seu processamento símbolos digitais? Por que não é analógico se nós o somos e o computador procura nos copiar. Comente como o transistor bipolar / cmos colabora para este processamento. 3) - Pesquise o número de transistores dos processadores: 8088-80286-80386-80486-Pentium I até o Pentium IV. Qual a relação entre o número de transistores e a capacidade de processamento. 4) - Explicar por que um SISTEMA PROGRAMÁVEL favorece a escala de produção industrial. Comenta o fato das placas centrais (mother board) possuirem poucos fabricantes e custarem cerca de US$ 200,00 (placa + processador + memória RAM), um preço baixo comparado ao seu poder de processamento. 5) - PESQUISA: investigar as técnicas de fabricação de Circuitos Integrados e Microprocessadores na Biblioteca e na Internet. 6) - Mostrar o estrutura de um sistema programável (computador), explicando seus 3 blocos e os tipos de barramentos. 7) - Qual a diferenças entre um microprocessador e um microcomputador. 8) - PESQUISA: identificar as 3 estruturas de um sistema programável nos microcontroladores 12F629 (www.microchip.com) e MSP430F135 (www.ti.com). 9) - Comparar funcionalmente a estrutura de um computador com o ser humano. 10) - Quais são os tipos de memória semicondutoras. Qual o tipo de memória utilizado na BIOS do PC e da memória de dados. Qual o tamanho da memória BIOS e da RAM do seu computador (pesquise no painel de controle do seu computador os endereços iniciais / finais do seu PC). 11) - Pesquise: quais são as principais características da EPROM 27512 e da RAM 62512. 12) - Qual a função da BIOS, Sistema Operacional e Aplicativos no computador. Cite qual é o fabricante da BIOS e do Sistema Operacional e o aplicativo mais utilizado no seu computador. 13) - Qual a diferença entre as expressões Firmware e Software. Cite 3 exemplos de Firmware que você conhece. 14) - PESQUISA: qual a diferença entre memória EEPROM e FLASH. Qual o tamanho da memória Flash do chip 12F629. 15) - PESQUISA: citar as diferenças entre os barramentos ISA, PCI e AGP do computador. 16) - PESQUISA: procurar as diferenças entre os barramentos seriais I2C e SPI. 17) - Explicar a estrutura básica da arquitetura de um microprocessador. Qual a função de cada componente básico? 18) - PESQUISA: levantar no livro do A. Malvino (Microcomputadores e Microprocessadores) a arquitetura da ULA, Decodificador de Instruções e Registradores implementada através de lógica discreta. 19) - Qual a única operação aritmética implementada físicamente na ULA dos microprocessadores? Qual a estrutura lógica utilizada para implementar um somador binário completo. Pesquise um circuito integrado TTL (família 74XXX) discreto utilizado para implementar uma ULA. 20) - Quais são as 4 operações lógicas booleanas implementáveis? 21) - Qual a função do acumulador e do registrador FLAG em uma estrutura de microprocessador. 22) - Qual o conteúdo do Acumulador, do FLAG do 8085 e registrador D nos 2 programas MOV A,85H MOV A,85H ADI A,FEH MOV B,A7H JZ SALTO ADD A,B MOV D,87H JNP SALTO JMP CONT MOV D,00H SALTO MOV D,9AH JMP CONT CONT ..... SALTO MOV D,FFH CONT ...... 23) - Explicar o conceito de pilha e de subrotina em programação. Quais as vantagens de utilizar uma subrotina em programação? 24) - Qual a diferença das instruções JMP <END> e CALL <END>? O que acontece com o registrador PC nos 2 exemplos. 25) - Mostrar os osciladores a cristal e RC. Quais dos 2 é mais estável com relação a temperatura? 26) - Definir ciclo de instrução e ciclo de máquina. 27) - Considerando um oscilador a cristal (fc = 32 Khz, divisão de freqüência por 2), qual o periodo do ciclo de instrução e ciclo M1 (busca) e M2 (execução) das instruções abaixo: ADD A,B (1 BYTE) LXI B,2000H (3 BYTES) M1 -> 4 CLOCKS M1 -> 4, 3, 3 CLOCKS M2 -> 3 CLOCKS M2 -> 3 CLOCKS 28) - Representar o sistema de inicialização (reset) ativo em nível alto e nível baixo. 29) - Definir e explicar o funcionamento de um supervisório WATCH DOG. Como o WD evita o travamento do microprocessador? 30) - Explicar o funcionamento de um sistema BROWN-OUT. 31) - Por que consideramos um sistema com reset externo não confiável? 32) - Calcular o capacitor mínimo para um sistema de reset ativo em 0: R = 100 K Vcc = 3,3 V 50 pulsos de clock (100 kHz) para inicialização Vreset = ½ Vcc 33) - Explicar como funciona um sistema de interrupção em um microprocessaodor. Dar 3 exemplos aplicáveis ao computador PC. O que é um vetor de interrupção? 34) - Levantar as 16 interrupções do PC e qual o vetor de cada um deles. 35) - Se você instalar uma placa de rede em um computador e surgir uma mensagem de conflito com o mouse. Qual a razão do programa e qual uma possível solução. 36) - Sob o ponto de vista de interrupção, como um sistema PLUG AND PLAY instala uma nova placa de rede? 37) - Qual a diferença entre uma interrupção com o vetor fixo e com vetor variável. Cite uma interrupção de cada tipo no 8085. 39) - Explicar o funcionamento de um sistema de DMA. 40) - Explicar como o sistema de DMA atua em uma placa de vídeo no PC. 41) - Como o sinal de ALE ajuda a separar os dados AD0-AD7 no 8085. Mostre o circuito utilizando um buffer para dado e endereço. 42) - Mostrar um circuito de separação de AD0-AD7 utilizando apenas um latch. 43) - Mostrar um circuito de separação de um barramento AD0-AD15. 44) - Mostrar a função dos sinais RD, WR e IO/M. Qual a condição destes sinais nas instruções MOV M,A, OUT 20h e MOV A,M. 45) - Calcular os tempos de Wait-State do sinal READY no acesso de uma memória RAM de 100 nseg e um disco rígido de 1 mseg. 46) - Qual a vantagem de termos uma memória cache de grande capacidade dentro de um microprocessador. 47) - Por que é importante ter-se uma grande quantidade de memória RAM de dados no seu computador no aspecto do tempo de Wait State. 48) - Descrever os 40 pinos do 8085. 49) - Comparar o 8085 e o Z80. 50) - Fazer o diagrama de tempo da instrução IN 80H. 51) - Pesquisar a temporização da instrução MOV A,B do 8085. 52) - PESQUISA: Fazendo paginação de memória, colocar 1 Mbyte de memória 62512 em um sistema com o 8085. Quais os endereços iniciais e finais de cada chip de memória. 53) - Projetar um sistema de 8 periféricos com o 74LS373: 8 solenóides, 8 motores, 8 ventiladores, 8 lâmpadas, 8 sensores fotoelétricos, 24 chaves liga/desliga. 54) - Para o circuito acima, fazer um programa para o primeiro sensor fotoelétrico ligar / desligar a quinta lâmpada. 55) - Comparar a arquitetura entre os microprocessadores 8088-80286-80386-80486-Pentium I até o Pentium IV. 56) - Obter as características dos circuitos integrados 74LS373, 74LS245, 74LS138. Segunda Lista de Exercícios - Microprocessadores I Turma 7E/F - Escola de Engenharia Segunda Lista de Exercícios – Microprocessadores I 1) - Fazer um projeto de um controlador residencial com um microcontrolador 8031 com as seguintes característicias: - Eprom para armazenar programa 2764 - Cristal com frequência de 10Mhz e reset automático. - Saídas controladas através de relês de 4 lâmpadas. - Entrada de 1 sensor fotoelétrico. 2) - Fazer os seguintes programas em linguagem assembler 8051 para o projeto acima: a) - Inicializar a pilha no endereço 70H (carregar SP) e fazer um programa para carregar os endereços 40H e 60H com o dígito de controle do seu código de matrícula. b) - Somar os dados do endereço 30H com 31H. Fazer uma operação AND com o resultado e o dado 0FH. Colocar o resultado no endereço 32H. c) - Fazer um programa para desligar todas as saídas acima. Ligar as 4 lâmpadas se o sensor fotoelétrico estiver em nível alto. d) - Fazer um programa para desligar todas as saídas do projeto acima. Ligar apos 1 munuto as 4 lâmpadas se o sensor fotoelétrico estiver em nível alto. Fazer um rotina de "debouced" no sensor de 10 msegundos. Desligar as lampadas se o mesmo sensor estiver em nível baixo. 3) - Fazer um projeto de um controlador residencial com um microcontrolador 8031 com as seguintes característicias: - Eprom para armazenar programa 27256 - Cristal com frequência de 12Mhz e reset automático. - 4 saídas para controle de lâmpadas da residência, 1 saída para controle de motor de até 1 KW e 3 saídas para tomadas 110 V genéricas. - Entrada de 4 sensores infravermelho de presença. (1 para cada lâmpada) - 1 sensor fotoeletrico. - 1 porta de comunicação serial full-duplex (rx e tx). 4) - Fazer os seguintes programas em linguagem assembler 8051 para o projeto acima: a) - Fazer um programa para desligar as saidas do exercicio anterior. Ligar o motor se o sensor indicar luminosidade e desligar se o sensor indicar falta de luminosidade. b) - Fazer um programa para desligar todas as saídas do projeto acima e acender as 4 lâmpadas sequencialmente com intervalo de 0,5 segundos se o segundo sensor acusar a presença de alguém. Mostrar o cálculo da rotina de tempo. 5)a)(3,0 pontos) - Fazer um projeto de um controlador industrial com um microcontrolador 89S51 com as seguintes características (as saídas devem ser implementadas com um transistor e um rele): - Cristal com freqüência de 12Mhz e reset automático. - 4 saídas para controle de lâmpadas, 1 saída para controle de motor de até 1 KW e 3 saídas para tomadas 110 V genéricas. - Entrada de 4 sensores infravermelho de presença. (1 para cada lâmpada) - 1 sensor fotoelétrico (nível alto -> dia, nível baixo -> noite). - 1 porta de comunicação serial full-duplex (RS232) - Fazer um programa para desligar as saídas. Ligar o motor se o sensor indicar luminosidade e desligar se o sensor indicar falta de luminosidade. 6) - Fazer um PROJETO de um CONTROLADOR DE SINALIZAÇÃO FERROVIÁRIO com um microcontrolador 8031 com as seguintes característicias: - Eprom para armazenar programa 27128 - Cristal com frequência de 11.059Mhz e reset automático. - 4 saídas para controle de lâmpadas de sinalização vermelhas, 4 entradas de sensores de passagem de trem e 2 saidas de potencia (reles) para controle de trafego dos trilhos. - 1 porta de comunicação serial full-duplex (rx e tx). 7) - Fazer os seguintes programas SEPARADAMENTE em linguagem assembler 8051 para o projeto acima: a) - Fazer um programa para piscar a segunda lâmpada vermelha com intervalo de 0,5 segundos. Fazer a rotina de tempo. b) - Fazer um programa para voce ler a primeira entrada do sensor de passagem. Se estiver em 1 ligar a primeira saida de potencia. Se estiver em 0 desligar a mesma saída. 8) – Fazer os seguintes programas em Linguagem Assembler - Carregar o dado do PORT P1 nos registradores internos R0-R7 do quarto banco. - Somar o dado do endereço 50H da memória interna com o dado 40H da memória externa. Complementar o resultado e fazer uma operação XOR com o dado do PORT P2. Guardar o resultado no endereço 2000H da memória externa. - Carregar a memória RAM interna do 8051 (endereços 30h-7Fh) com o dado 55H. - Idem para uma área de memória RAM externa entre 6000H e CFFFH. - Fazer uma rotina de 1 segundo, utilizando um 8051 com cristal de 12 Mhz. - Fazer uma rotina de tempo 1 minuto, 1 hora e 12 horas. – Considerando 8 leds no Port P1. freqüência 3 hz. Ligar sequencialmente os leds com