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
Sistemas Embarcados Microcontroladores PIC
Arquitetura dos Microprocessadores 8086 e 8088
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
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
EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e.
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
Exercícios Referentes à Prova P2
PIC16F877A Linguagem C e Assembly
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
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 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 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 PC – Programm Counter

Estrutura do 8085

Instruções Só o Código 04 INR B Código e um byte de Dado 0E 22 MVI C22H Código e dois bytes de Dados 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

Eprom 0000H- 2000H RAM 2000H – 2400H Programa Rotinas do Monitor KIT 8085 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

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 Lo Pequeno Não alterar Registradores Não alterar a pilha

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 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 !!

Manipulação de bits Operações booleanas !! Manipulação com mascaras Registro 11111x00 Mascara 00001110 Operação OR 00001110 SETAR o BIT definido 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 !!!

Manipulação de bits TESTAR UM ou mais bits ANI 03 Registro 1111100x Mascara 00000001 Operação AND 0000000x ANI 01 JZ SETA6 Xxx ................... ANI 03 JNZ SETA6 YYY

;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

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 ....