MIC29004-2015-1 Microprocessadores - Engenharia

De MediaWiki do Campus São José
Revisão de 14h11min de 29 de junho de 2015 por Eraldo (discussão | contribs) (→‎Programa exemplo)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Informações Gerais

  • Professor: Eraldo Silveira e Silva
  • email: eraldo@ifsc.edu.br

Plano de Ensino

Plano de Ensino

Recursos

Aulas

Dia 09/02/2015

  • Apresentação inicial;
  • Visão geral do funcionamento de um sistema microprocessado.

Dia 10/02/2015

Objetivos da Aula

O aluno deverá ao final ser capaz de:

  • identificar uma célula básica de memória com portas lógicas e flip-flops;
  • construir latches a partir de células básicas de memória;
  • identificar o papel dos barramentos de dados, controle e endereços em uma memória;
  • associar a largura dos barramentos de dados e endereços a capacidade da memória;
  • associar memórias.

Desenvolvimento

[1]


Exercícios

1) Construir um banco de memórias RAM de 64Kbytes a partir de CIs de memória de 16K. Mostrar uma tabela com os endereçamentos associados a este banco.

2) Construir um banco de memória de 1Mbytes usando 1 CI de 512Kbytes, 1 CIs de 256Kbytes e 4 CIs de de 64Kbytes.

Dia 23/02/2015

  • Introdução a Memória (cont.):
    • Tamanho da memória e Largura da Palavra (N x M)
    • Capacidade em bits
    • Associação de Memórias

Proteus

Multiples of bytes
Decimal
Value Metric
1000 kB kilobyte
10002 MB megabyte
10003 GB gigabyte
10004 TB terabyte
10005 PB petabyte
10006 EB exabyte
10007 ZB zettabyte
10008 YB yottabyte
Binary
Value JEDEC IEC
1024 KB kilobyte KiB kibibyte
10242 MB megabyte MiB mebibyte
10243 GB gigabyte GiB gibibyte
10244 - - TiB tebibyte
10245 - - PiB pebibyte
10246 - - EiB exbibyte
10247 - - ZiB zebibyte
10248 - - YiB yobibyte
Fonte: http://en.wikipedia.org/wiki/Kilobyte
  • Consolidar o conhecimento sobre memórias e barramentos de endereços, dados e controle através de um experimento no Proteus.
  • Roteiro:
  1. Entrar no Windows.
  2. Baixe o arquivo de projeto. Coloque em um diretório conhecido.
  3. Clique sobre o arquivo. O PROTEUS será executado e o projeto aberto.
  4. Observe que o projeto está parcialmente pronto. Você pode entrar em modo simulação. O sistema está preparado para que se possa inserir ou ler manualmente posições de memória.
  5. Grave o dado Ah na posição 0 de memória e Bh na posição 8.
  6. Note o Chip Select está habilitado sempre. Coloque uma chave adicional para colocar o Chip Select e repita a operação de gravação anterior.
  7. Utilize a nova configuração para gravar o seu número de matrícula a partir da posição 0.

Exercícios

  • Usando a memória do experimento como bloco base, realize a ligação entre elas de modo que se construa um banco de memória de 32 palavras de 8 bits.
  • Usando a memória do experimento como bloco base, realize a ligação entre elas de modo que se construa um banco de memória de 64 palavras de 4 bits.
  • Quais os tamanhos dos barramentos de endereço e dado para uma Memória de 512x8 bits?
  • Determine a capacidade final em bits e o endereço inicial e final em Hexadecimal das memórias com as seguintes características:
    • 512x4
    • 4Kx8
    • 128Kx8
    • 2Mx16

Dia 24/2/2015=

Resolução dos xercícios de associação de memória

Dia 2/3/2015

Objetivos

  • Finalização do assunto memórias;
  • Classificação de memórias;

Material

  • Slides de Memória;

Links interessantes

  • TecnologiaTTL;
  • Tecnologia MOS;


Dia 2/3/2015

  • Introdução aos microprocessadores usando os slides indicados acima.

Dia 9/3/2015

  • Continuação da introdução aos microprocessadores;
  • início da apresentação do BIP.

Dia 10/3/2015

  • Exercício BIP com Associação de Memória;
  • Continuação das trasnparências.

Dia 23/3/2015

  • Experimento 2: Simulação do BIP e Geração de Sinais de Controle de Forma Manual

1.Baixar e descomptar em um diretório os arquivos abaixo

2.Instalar a biblioteca e modelo antes de abrir o projeto usando o Menu System->Settings:

MICtela1Proteus.png

MICtela2Proteus.png

3.Abrir o projeto do BIP

4.Simular e gerar os sinais de controle conforme a instrução.


Dia 30/03/2015

Objetivos

  • Exercícios de BIPv1 e v2

Exercícios


Aula 31/03/2015

Objetivos

  • Apresentar a estrutura do BIP II

Proposta de Trabalhos

Proposta I (Adalvir e Lucas Gomes)

  • Acrescentar hardware no BIP 2 para controlar 8 LEDs no endereço de memória 0x7FF. Desabilitar os últimos 512 bytes da RAM para IO;
  • Desenvolver um programa de loop infinito para acender de forma incremental os LEDs.

Apresentação: Quinta - 30/4 - 10h00

Proposta II (Helen e Maria)

  • Acrescentar hardware no BIP 2 para controlar 8 LEDs no endereço de memória 0x0FF. Desabilitar os primeiros 512 bytes da RAM para permitir acesso ao IO;
  • Desenvolver um programa de loop infinito para rotacionar a direita um bit nos LEDs.

Apresentação: Quinta - 30/4 - 10h30

Proposta III (Cantú e Lucas)

  • Acrescentar hardware no BIP 2 para ler um número inteiro de 16 bits na posição 0x7ff. Desabilitar os últimos 512 bytes da RAM para IO;
  • Implementar um programa para calcular a soma deste número com o valor 18 e armazenar o resultado na posição de memória RAM 0x0e0;

Apresentação: Quinta - 30/4 - 11h00

Proposta IV (Anderson e Rafael)

  • Acrescentar hardware no BIP 2 para ler um número inteiro de 16 bits na posição 0x05f. Desabilitar os primeiros 512 bytes da RAM para IO;
  • Implementar um programa para calcular subtrair deste número o valor 18 e armazenar o resultado na posição de memória RAM 0x7c0;

Apresentação: Quinta - 30/4 - 11h30


Proposta V (Marcos e Iago)

  • Acrescentar um hardware no BIP v2 para mostrar em um display BCD 7 segmentos valores de 0x00 a 0xFF acessado no endereço 0x7FF. Desabilitar os últimos 512 bytes da RAM para IO;
  • Implementar um programa para realizar a contagem crescente mostrando somente números pares.

Apresentação: Quinta - 7/5 - 10h00

Proposta VI (irmãs Fertig)

  • Acrescentar um hardware no BIP v2 para mostrar em um display BCD 7 segmentos valores de 0x00 a 0xFF acessado no endereço 0x0FF. Desabilitar os primeiros 512 bytes da RAM para IO;
  • Implementar um programa para realizar a contagem crescente mostrando somente números ímpares.

Apresentação: Quinta - 7/5 - 10h30

Proposta VII (Kleiton e Gustavo)

  • Acrescentar hardware no BIP 2 para controlar 8 LEDs no endereço de memória 0x7FF e ler o estado de uma chave neste mesmo endereço. Desabilitar os últimos 512 bytes da RAM para IO;
  • Desenvolver um programa parar rotacionar a direita ou a esquerda os LEDs conforme o estado da chave.

Apresentação: Quinta - 7/5 - 11h00

Proposta VIII (Jessica e Letícia)

  • Acrescentar hardware no BIP 2 para controlar 8 LEDs no endereço de memória 0x0FF e ler o estado de 8 chaves neste mesmo endereço. Desabilitar os primeiros 512 bytes da RAM para IO;
  • Desenvolver um programa parar piscar todos os LEDs mas somente piscar àqueles habilitados pelas chaves.

Apresentação: Quinta - 7/5 - 11h30

Proposta IX (João e Gabriel)

  • Acrescentar um hardware no BIP v2 para mostrar em um display BCD 7 segmentos valores de 0x00 a 0xFF acessado no endereço 0x2FF. Desabilitar o terceiro bloco de 256 bytes da RAM para IO;
  • Implementar um programa para realizar a contagem decrescente mostrando somente números pares.

Apresentação: Quinta - 30/4 - 9h30

Aula Dia 13/4/2015

  • Introdução ao microcontrolador 8051
  • Uso slides e quadro negro

Aula Dia 14/4/2015

  • Introdução ao microcontrolador 8051
  • Uso slides e quadro negro

Procedimento para associar um arquivo hex a uma memória:

1.Edite o arquivo com um editor de texto puro (bloco de notas, gedit) e salve o arquivo em um diretório conhecido.
2.No Proteus, clique com o botão da direita e edite as propriedades.
3.Na janela Outras Propriedades insira
  FILE=C:\Users\eraldo\teste.hex,ASCHEX
Tenha certeza que o caminho está correto. No gerenciador de sistema de arquivos do windows, podes clicar com a direita e ver propriedades para verificar o caminho correto.
4.Salve e verifique que aparece ao lado da memória a propriedade inserida.
5.Caso queira mudar novamente podes clicar diretamente no nome ao lado da memória.

Aula Dia 27/4/2015

Arquitetura8051

Media:Aula8-ModosEndereçamento-Exercícios.pdf

Arquivo:ControleFluxo.pdf

Aula Dia 11/05/2015

Objetivo

  • Operações com bits

Arquivo:OperacoesBinarias.pdf

Dia 12/05/2015

Arquivo:Controle-Fluxo-Parte2.pdf


Dia 19/05/2015

Objetivos

  • Temporizadores e Contadores no 8051

Referências


Dia 25/05/2015

Exercício

Implementar um gerador de onda retangular de 50Khz com duty cycle controlável através dos bits P1.1 e P1.2 (25%,50%,75%). A saída da onda deve ser no P1.0. Usar o Timer 1 com controle por polling em TF1. Considere um cristal de 12Mhz.


AULA Dia 26/05/2013

Objetivos

  • interrrupções

Dia 08/06/2015

Avaliações Projeto I

131001053-6 ADALVIR ASSUNCAO JUNIOR C
122001993-3 ANDERSON DEMETRIO PLACIDO B
132002623-0 GABRIEL COZER CANTU A
132002450-5 GABRIEL WAGNER GONCALVES C
132005742-0 GUSTAVO WAGNER GONCALVES C
132002999-0 HELENLUCIANY CECHINEL A
131004419-8 IAGO SOARES DOS SANTOS FARIA A
131005150-0 JESSICA DA SILVA HAHN A
131001281-4 JOAO VITOR RODRIGUES A
121000492-5 KATHARINE SCHAEFFER FERTIG A
132002417-3 KLEITON CARLOS DE SOUZA C
121000484-4 KRISTHINE SCHAEFFER FERTIG A
132004514-6 LETICIA APARECIDA COELHO A
122001832-5 LUCAS GOMES DE FARIAS C
132002264-2 LUCAS LUCINDO VIEIRA A
131005334-0 MARCOS VINICIOS PINHO B
132004278-3 MARIA LUIZA THEISGES A
142001510-9 RAFAEL TURNES SILVEIRA B
122006713-0 VINICIUS TEIXEIRA MACHADO X

Dia 8/06/2015 Comunicação Serial

Dia 9/6/2015 Proteus e 8051

Código Serial

  org   0100h

Start:

     ; Write your code here
     acall init_uart
     acall envia_texto

final:

     sjmp final
     ;inicia a uart para baudrate 9600

init_uart:

     mov TMOD,#00100000b ; timer 1 em modo 2
     mov TH1, #0FDh ; baudrate 9600
     setb TR1 ; liga timer 1
     mov SCON,#01010000b ; porta serial modo 1
     clr TI ; para garantir clear TI mas nao eh necessario
     ret
envia mensagem texto
     envia_texto:
     mov DPTR,#texto

tx_msg:

     mov A,#0
     movc A,@A+DPTR
     acall envia_car
     inc DPTR
     jnz tx_msg

fim_tx: ret

 ;envia um caracter

envia_car:

     mov SBUF,A

loop: jnb TI,loop

     clr TI
     ret

texto: db "Alo Mundo"


====================================================================
     END

</syntaxhighlight>


Referencias

Projeto 1

  • Controle de acesso para 10 usuarios diferentes. Os usuários podem ser programados no sistema.
    • teclado
    • display LCD

Projeto 2

  • Sistema de controle de presença: o aluno entra com um número de matrícula e registra a sua presença em sala. O professor determina os alunos da turma.
    • teclado
    • display LCD

Projeto 3

  • Sistema de Controle de Estoque. Consulta a quantidade de uma peça dado o seu ID. O gerente pode inserir peças no sistema (ID da peça e a quantidade).
    • teclado
  • display LCD

Aula dia 15/06/2015

  • Uso do LCD

Ver link ftp://ftp.dca.fee.unicamp.br/pub/docs/ea079/complementos/Lcd.pdf

Adendo ao trabalho

  • Todos os trabalhos deverão implementar um código para que o sistema quando não estiver sendo utilizado mostre uma animação no display. O desenho usado na animação deve ser programa no display. O sistema deve entrar em modo de operação via interrupção.

Aula dia 16/06/2015

Aula dia 22/06/2015

  • Estrutura do Relatório
1.Introdução
Definição do projeto
2.Fundamentação Teórica.
2.1.Display LCD (2 linhasx 16 ou caracteres (padrão Hitachi)
2.2.Teclados em Sistemas com Microcontrolador
(discutir como gerar interrupção)
3.Sistema Proposto
3.1.O Esquema de Hardware
3.2.O Software
(apresentar um diagrama blocos, fluxograma e texto; pedaço de código)
4.Testes Realizados
5.Conclusão
Referências
Anexos

Recomendação: Usar o sharelatex http://wiki.sj.ifsc.edu.br/index.php/Uso_do_ShareLaTeX_na_IFSC-CLOUD

Aula dia 29/06/2015

Nova versão do SDCC

Programa exemplo

#include <mcs51reg.h>

#include <at89x52.h>

#define OSCILADOR 11059200

 // timer 0 used for systemclock
#define TIMER0_RELOAD_VALUE 0x10000-OSCILADOR/12/1000 // 0.999348ms para 11.059Mhz

static __data long miliSegundos;
volatile unsigned char UmSeg;

// Rotina de Tratamento de Interrupcao
void ClockIrqHandler (void) __interrupt(1) __using(3)
{
 TL0 = TIMER0_RELOAD_VALUE&0xff;
 TH0 = TIMER0_RELOAD_VALUE>>8;
 miliSegundos++;
 if (miliSegundos==1000) {
   UmSeg = 1;
}
}

void delay(void)
{
 ET0 = 0;

 miliSegundos = 0;
 UmSeg = 0;
 ET0 = 1; while (!UmSeg);
 return;
}

void init_timer() 
{
 // initialize timer0 for system clock
 TR0=0; // stop timer 0
 TMOD =(TMOD&0xf0)|0x01; // T0=16bit timer
 // timeout is xtal/12
 TL0 = TIMER0_RELOAD_VALUE&0xff;
 TH0 = TIMER0_RELOAD_VALUE>>8;

 TR0=1; // start timer 0
 ET0=1; // enable timer 0 interrupt
 EA=1; // enable global interrupt

 return;
}

void main()
{
 init_timer();
 for (;;) {
   P1_1 = 1;
   delay();
   P1_1 = 0;
   delay();
 }
}

Outros

http://www.q.hscott.net/reads/paulos-part-i.pdf

http://www.dca.ufrn.br/~pablo/index.php?corpo=arquitetura.html

http://bipide.com.br/wp-content/uploads/

http://www.eecis.udel.edu/~portnoi/classroom/sistemas_computacao/2006_1/lecture_slides/aula04.pdf

http://usuarios.upf.br/~rebonatto/organizacao/organizacao.pdf

https://realboyemulator.files.wordpress.com/2013/01/ife.pdf