EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e.

Slides:



Advertisements
Apresentações semelhantes
Parte 1: Organização de Computadores
Advertisements

Software Básico Silvio Fernandes Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 05:
Capitulo 6: Entrada e Saída
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Arquitetura de Computadores
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Arquitetura e organização de computadores
Técnicas para operações E/S
Linguagem de Montagem Visão geral.
Capítulo 5 Sub-rotinas e Estruturação da Linguagem de Programação “Assembly” aplicadas a família de microcontroladores MCS-51 da Intel Prentice Hall Microcontroladores.
Autor: Salvador P. Gimenez
A Arquitetura: conjunto de instruções
Chip-Select e Controle de Interrupção
Unidades de Execução e de Controle Sistemas Digitais.
Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados.
Arquitetura dos Microprocessadores 8086 e 8088
Configuração de Periféricos
PROCEDIMENTOS COM RECURSIVIDADE
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
Problemas com Entrada e Saída
Conhecendo Hardware Parte 1
EEL Microprocessadores
EEL Microprocessadores
EEL Microprocessadores
O MICROPROCESSADOR INTEL 8080
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Arquitetura de Computadores
Implementação da CPU Análise de um computador simplificado Implementação da Unidade de Controle para o computador simplificado.
Interrupções do DSP Desvios do programa principal para um endereço definido com o objetivo de atender a um evento; As interrupções podem ser de hardware.
Autor: Fernando de Mesentier Silva
Arquitectura de Computadores II
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte III Jadsonlee da Silva Sá
PROGRAMAÇÃO I UNIDADE 1.
EEL Microprocessadores
Linguagem de Montagem.
Representação de Instruções
Sistemas Operacionais
Linguagem de Montagem PROVA 4 – 3/12.
ORGANIZAÇÃO DE COMPUTADORES
Organização e Arquitetura de Computadores
2 -1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório.
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Processamento de dados na UCP e memória UCP
Prof. Remy Eskinazi - Microcontroladores
SISTEMAS OPERACIONAIS I
Unidade Central De Processamento: Processador
Geração de Código aula-12-geração-de-código.pdf.
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e.
Unidade Central De Processamento: Processador
Arquitetura de Computadores
Disciplina: Microcontroladores Prof. Remy Eskinazi, MSc UPE - POLI
Disciplina: Microcontroladores Prof. Remy Eskinazi, MSc
Microprocesadores x Microcontroladores
8088 Assembly Software Básico Mitsuo Takaki.
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Parte 3 Seção de Dados e Unidade de Controle
1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos.
Lucas Aranha ASSEMBLY Lucas Aranha
Algoritmos e Programação MC102
Engenharia de Sistemas Embarcados Aula 5: Um Conjunto Básico de Ferramentas.
Engenharia de Sistemas Embarcados Aula 4: O Ambiente de Desenvolvimento.
Afonso Ferreira Miguel
Introdução à Computação
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
EA869 Interrupção Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
NEANDERWin - Simulador
Transcrição da apresentação:

EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e I/O. 3 – 8086 – Estrutura basica Prova2; Nota=raiz(lab*teoria) REC

Elementos de um computador Linhas de Controle CPU Memória I/O Barramentos de endereços e dados 8 BIT >>>> 16 BIT >>>>> 20 BIT >>>>>>

Funcionamento basico Memória código CPU 04 3C 3E 25 RI PC ACC SP BC DE HL 04 – INR B 3C – INR A 3E 25 – MVI A 25

Linguagem – Assembly Características Gerais Uma linguagem de montagem é uma representação simbólica para uma linguagem de máquina (numérica). É o primeiro nível a fazer uso de palavras e abreviaturas (mnemônicos) familiares às pessoas para representar as instruções de máquina. Cada comando em Assembly de montagem corresponde a uma instrução de linguagem de máquina.

Linguagem – Assembly Permite a livre atribuição de nomes simbólicos a dados e endereços. O que pode ser feito em linguagem de máquina pode ser em Assembly. Este nível e os superiores são suportados por tradução. O tradutor para uma linguagem de montagem é denominado montador (assembler). É o primeiro nível dirigido aos programadores de aplicação. O programador em Assembly tem acesso a todos os recursos e instruções disponíveis na CPU. Os programas em Assembly têm pouca ou nenhuma portabilidade.

Comparação entre Linguagem de Montagem e Linguagem de Alto Nível Será que os grandes programas comerciais, que serão muito vendidos, precisam ser escritos inteiramente em linguagem de montagem para serem eficientes? O custo de desenvolver um grande programa inteiramente em assembly é muito mais alto do que o custo de desenvolvê-lo em uma linguagem de alto nível. A produtividade do programador em uma linguagem de alto nível é muito maior do que quando ele programa em linguagem de montagem. O programador tem uma visão muito melhor do problema e do algoritmo quando utiliza uma linguagem de alto nível. Portabilidade do projeto entre plataformas e entre diferentes programadores. Facilidade de compreensão, depuração e atualização de código-fonte em linguagem de alto nível. Mas um programa feito em linguagem de montagem ainda é bem mais rápido do que um equivalente feito em linguagem de alto nível e compilado. Solução: Combinar as duas linguagens!

Quando Utilizar Assembly? Quando for necessário extrair o máximo desempenho dos procedimentos críticos de um programa em linguagem de alto nível. Em microprocessadores voltados para sistemas pequenos (dedicados), o Assembly pode ser a única alternativa. Geralmente os compiladores de linguagens de alto nível também executam o processo de montagem. Portanto, entender de Assembly é essencial para entender o funcionamento dos compiladores.

O Processo de Montagem É bastante semelhante entre máquinas diferentes. O código assembly contém muitas referências futuras. Os montadores podem ser de dois passos ou de um passo. Montador de dois passos: Lê o programa-fonte duas vezes.  No passo 1: Elimina todas as referências futuras; Coleciona as definições de todos os símbolos em uma tabela.  No passo 2: Cada comando pode ser lido, montado e dar saída. Montador de um passo: Lê o programa-fonte somente uma vez para fazer a montagem. Os comandos com referências futuras são guardados em uma tabela para serem montados após o término da leitura do programa. A maioria dos montadores é de dois passos.

Estrutura do 8085 Registradores de 8 Bit A – Acumulador B C - podem formar o par B D E - podem formar o par C H L - Apontador de memória-H SP – Stack Pointer – 16 bit PC – Programm Counter – 16b

Estrutura do 8085

Instruções Só o Código da instrução 04 INR B Código e um byte de Dado 0E 22 MVI C22H Código e dois bytes de Dados ou endereço CD 2541 CALL Soma; Comentário

Instruções - Endereço - Código - Instrução - Dado - Comentário INR A MVI A,25H 2000 3C INR A ; Atualiza cont 2001 3E 25 MVI A,25; ???? 2002 CD 2541 CALL Soma

Sub routinas

Monitor Eprom 0000H- 2000H RAM 2000H – 2400H Programa Rotinas do Monitor KIT 8085 Monitor Eprom 0000H- 2000H RAM 2000H – 2400H Programa

Rotinas do Monitor Letecla 02E7 A H L Ler p/A Nome endereço altera função Letecla 02E7 A H L Ler p/A MostraA 036E todos MostraA MostraD 0363 todos MostraDE Delay 05F1 A D E Atraso ( D=1 = 100ms) ( D=0 ??? ) LOOP xxxx ; atraso DCR D JN Z LOOP

Sistema de Desenvolvimento Editor Montador Compilador Simulador Gravador Emulador Crossware – Edita e Compila Abacus – Simulador PINNACLE – para 8051

Para contar com 4 dígitos ? JNC endereço ; EXEMPLO CONT1.ASM ; Este programa realiza uma contagem decimal a partir de 7 MOSTRAA equ 036EH MOSTRAD equ 0363H DELAY equ 05f1H ORG 2000h LXI SP,20C2H LOOP: ADI 1 ; INCREMENTAR DAA ; AJUSTE PARA DECIMAL STA MEMORIA ; SALVAR Valor MOV E,A MVI D,0 CALL MOSTRAD ; Mostrar em DE LDA MEMORIA ; RECUPERAR JMP LOOP MEMORIA DB 7 END Para contar com 4 dígitos ? JNC endereço

; Por fazer no programa anterior CONT1.asm 1) Iniciar o contador com valor de 1 ou 2 dígitos lido ao iniciar o programa 2) Contador hexadecimal ou decimal ( Escolher por tecla ou INT) 3) Contador com 4 dígitos 4) Contagem deve ser zerada toda vez que uma chave for pressionada 5) Contagem deve ser iniciada em 3344 toda vez que ocorrer a Int Trap 6) Controlar a velocidade do contador ( chave, tecla, Int ???) 7) Outras sugestões ??

Problemas no desenvolvimento de programas!! Erros de Sintaxe Não colocar END Não definir a pilha Definir a pilha em local inadequado Definir endereços errados Erros de lógica !!!!!!!!!!!!!!!!!

Diretivas ORG 2000H - Origem END Dado DB 25H – define dado=25 Dado DW 25H – define dado=0025 MSG DB ‘ Microprocessador’ DELAY EQU 05F1 LETECLA EQU 02E7H CHAVES EQU 21H LEDS EQU 22H

Porta paralela 8155 REGISTRO END. 8155 COMANDO 20H PORTA A 21H PORTA B

Porta paralela 8155 ;Chaves.asm - Utilização de I/O COMMAND EQU 20H CHAVES EQU 21H LEDS EQU 22H ORG 2000H MVI A,02H ; Porta A entrada, ; B como saída OUT COMMAND LOOP: IN CHAVES ; Le chaves p/A OUT LEDS ; Acende LEDs JMP LOOP END

Porta paralela 8155 REGISTRO END. 8155 COMANDO 20H PORTA A 21H PORTA B

Porta paralela 8155 Deslocar um led para a Esq. A int TRAP alterna entre led ligado ou apagado COMMAND EQU 20H CHAVES EQU 21H LEDS EQU 22H MVI A,02H ; B é saída OUT COMMAND SIM EI LOOP: LDA DADO OUT LEDS ; Acende o LEDs RLC ; Rotaciona LED STA DADO MVI D,02H ; Atraso de 200ms CALL DELAY ; p/ ver LED JMP LOOP

Porta paralela 8155 TTRAP: PUSH PSW LDA DADO CMA STA DADO EI POP PSW RET DADO DB 01 ; valor inicial ORG TRAP JMP TTRAP END RSTxx – Alterna SENTIDO !!

Porta paralela 8155 TTRAP: PUSH PSW LDA DADO CMA STA DADO EI POP PSW RET DADO DB 01 ; valor inicial ORG TRAP JMP TTRAP END RSTxx – Alterna SENTIDO !!

Manipulação de bits Operações booleanas !! Manipulação com mascaras Registro 11111x00 Mascara 00001110 Operação OR 11111110 SETAR o BIT definido com 1 na mascara

Manipulação de bits RESETAR UM ou mais bits Registro 11111100 Mascara 00001111 Operação AND 00001100 Reseta o BIT cuja mascara for zero !!!!

Manipulação de bits COMPLEMENTAR UM ou mais bits Registro 11111100 Mascara 00001111 Operação XOR 00000011 Complementa os bits cuja mascara for um !!!

;Testar o Bit0 de DADO ;Se tiver em 1 Resetar o BIT7 ; e caso contrário Setar o BIT6 INICIO: LDA DADO ANI 01 JZ SETA6 LDA DADO ANI 7FH ;resetar bit7 STA DADO JMP INICIO SETA6: LDA DADO ORI 01000000B;set B6 DADO DB 0FFH END

Interrupções São desvios do programa ocasionados por eventos externos. Interrupção por Software Interrupção por Hardware Nível Borda Ascendente Borda Descendente Borda e nível

Interrupções no 8085 Prioridade RST0 0000H 2000H ........ CPU RAM RST0 0000H 2000H ........ RST3 0018H 2018H RST4 0020H 2020H RST5 0028H 2028H Prioridade TRAP 0024 1 20D1H RST5.5 002C 4 20C8H RST6 0030 2030H RST6.5 0034 3 20CBH RST7 0038H 2038H RST7.5 003C 2 20CEH

Interrupções no 8085 Flags usados IP – Interrupt Priority IE – Interrupt Enable 5.5 6.5 7.5 EA 5.5 6.5 7.5

Interrupções no 8085 ; A Interrupção 7.5 deve zerar o contador ; Teste quais são os problemas ???? LXI SP,2060H ; Inicializa pilha MVI A,18H ; Habilita 5.5, 6.5 7.5 SIM inicio: MVI A,00H EI LOOP: ADI 01H ; INR A não CY) DAA ; utiliza CY flag na corr. PUSH PSW ; Salva contagem MVI D,0 MOV E,A CALL MOSTRAD MVI D,05H ; Atraso de 500ms CALL DELAY POP PSW ; Recupera A JMP LOOP

Interrupções no 8085 T75 MVI A,0 EI RET ORG RST5.5 ; Evitar RST 5.5 ORG RST7.5 ; Desvio da RST 7.5 JMP T75 ORG TRAP ; não Mascarável END

Interrupções no 8085 LXI SP,20C0H ; Inicializa pilha MVI A,18H ; Habilita 5.5, 6.5 e7.5 SIM EI LOOP: LDA CONTA ADI 01H DAA ; Ajusta p/Decimal STA CONTA CALL MOSTRAA MVI D,05H ; Atraso de 500ms CALL DELAY JMP LOOP TRATADOR: MVI A,00H RET CONTA: DB 00H ORG RST7.5 ; Desvio da RST 7.5 JMP TRATADOR END ints85a.asm

Interrupções no 8085 LXI SP,20C0H ; Inicializa pilha MVI A,18H SIM ; Habilita 5.5, 6.5 e 7.5 MVI A,00H STA STATE ; Flag de contagem STA COUNT ; Inicializa EI LOOP: LDA COUNT ADI 01H DAA ; Utiliza CY na correção STA COUNT CALL MOSTRAA MVI D,05H ; Atraso de 500ms CALL DELAY LDA STATE CPI 00H ; Testa se houve INT JZ LOOP ; Continua contando

Interrupções no 8085 LDA STATE CPI 00H ; Testa critério JZ LOOP ; Continua MVI A,00H STA COUNT ; zera a contagem STA STATE ; Reinicializa flag JMP LOOP HNDLR: PUSH PSW MVI A,01H STA STATE EI POP PSW RET STATE DB 00H ; Flag global INT COUNT DB 00H ; Contagem ORG RST7.5 ; Desvio da RST JMP HNDLR END

Interrupções no 8085 Um contador cujo incremento deve ser alternado entre 1 e 2 com int7.5 MVI A,00H STA STATE ; Flag de reset STA COUNT ; Inicializa cont. EI LOOP: LDA COUNT LXI H,INCRE ADD M ; DAA ; Utiliza CY STA COUNT CALL MOSTRAA MVI D,05H ; Atraso de 500ms CALL DELAY LDA STATE CPI 00H ;Testa de houve INT JZ LOOP ;Continua ate STATE = 0

Interrupções no 8085 LDA INCRE CPI 1 JZ DOIS MVI A,1 STA INCRE JMP CONTINUA DOIS: MVI A,2 CONTINUA ; STA COUNT ; CASO MVI A,0 STA STATE ; reinicializa Flag JMP LOOP T75: PUSH PSW MVI A,01H STA STATE EI POP PSW RET

Interrupções no 8085 STATE DB 00H ; Flag global COUNT DB 00H ; Contagem incremento DB ORG RST7.5 ;Desvio RST 7.5 JMP T75 END

Interrupções Caracteristicas de um tratador de interrupção Local do tratador Tamanho - Pequeno Não alterar Registradores Não alterar a pilha

Exercício1 Deslocar um LED ligado para a esquerda no conjunto de Leds. As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e 5 ....

Exercício2 Deslocar um LED ligado para a esquerda no conjunto de Leds. As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e 5 ....

Exercício3 Deslocar um LED ligado para a esquerda no conjunto de Leds. As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e 5 ....

Exercício4 Deslocar um LED ligado para a esquerda no conjunto de Leds. As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e 5 ....