Mudanças entre as edições de "MIC29004-2015-1 Microprocessadores - Engenharia"
(56 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 148: | Linha 148: | ||
− | * [https://www.dropbox.com/s/vqim8orn9vt7xdr/bip-v2.pdsprj?dl=0 | + | =Aula 31/03/2015= |
+ | |||
+ | ==Objetivos== | ||
+ | |||
+ | *Apresentar a estrutura do BIP II | ||
+ | |||
+ | * [https://www.dropbox.com/s/vqim8orn9vt7xdr/bip-v2.pdsprj?dl=0 BIP I com Unidade de Controle - Proteus] | ||
* [https://www.dropbox.com/s/ttqyd6pft75rdf5/novo.hex?dl=0 - novo.hex ] | * [https://www.dropbox.com/s/ttqyd6pft75rdf5/novo.hex?dl=0 - novo.hex ] | ||
+ | |||
+ | * [https://www.dropbox.com/s/qcwobusi7y00yx1/bip2.pdsprj?dl=0 BIP II] | ||
+ | |||
+ | * [https://www.dropbox.com/s/ujbmlion0v1xm9z/decode-bip2.pdsprj?dl=0 Unidade de Controle BIP II] | ||
+ | |||
+ | * [https://www.dropbox.com/s/sg8ippgdh2zbrpc/bip2-decode-table.ods?dl=0 Tabela de Decoficação 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= | ||
+ | |||
+ | [http://www.sj.ifsc.edu.br/~eraldo/MIC/2013-1/Arquitetura8051.pdf Arquitetura8051] | ||
+ | |||
+ | [[Media:Aula8-ModosEndereçamento-Exercícios.pdf]] | ||
+ | |||
+ | [[arquivo:ControleFluxo.pdf| Controle de Fluxo/Pilha e Subrotinas]] | ||
+ | |||
+ | =Aula Dia 11/05/2015= | ||
+ | |||
+ | ==Objetivo== | ||
+ | |||
+ | *Operações com bits | ||
+ | |||
+ | [[arquivo:OperacoesBinarias.pdf| Operações com Bits]] | ||
+ | |||
+ | =Dia 12/05/2015= | ||
+ | |||
+ | |||
+ | [[arquivo:Controle-Fluxo-Parte2.pdf| Controle de Fluxo - Parte 2]] | ||
+ | |||
+ | |||
+ | =Dia 19/05/2015= | ||
+ | |||
+ | ==Objetivos== | ||
+ | |||
+ | *Temporizadores e Contadores no 8051 | ||
+ | |||
+ | ==Referências== | ||
+ | |||
+ | *[[Arquivo:MIC_8051-TemporizadoresContadores.pdf | Temporizadores-Contadores]] | ||
+ | |||
+ | |||
+ | =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= | ||
+ | |||
+ | *[[Arquivo:MIC_8051-Serial.pdf | Serial]] | ||
+ | |||
+ | =Dia 9/6/2015 Proteus e 8051= | ||
+ | |||
+ | ==Código Serial== | ||
+ | |||
+ | <code> | ||
+ | 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== | ||
+ | |||
+ | *[[Arquivo:MIC_8051-Interrupcoes.pdf | Interrupções]] | ||
+ | |||
+ | 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 | ||
+ | |||
+ | *[[Arquivo:DsiplayLcd-unicamp.pdf | display lcd]] | ||
+ | |||
+ | ==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= | ||
+ | |||
+ | *[[Arquivo:MICEstruturaPorta.pdf | Estrutura da Portalcd]] | ||
+ | *[[Arquivo:MICOperacoesAritmeticas.pdf | Operações Aritméticas]] | ||
+ | |||
+ | =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 = | ||
+ | |||
+ | *[[Arquivo:MIC_8051-LinguagemC.pdf | Linguagem C para Microcontroladores]] | ||
+ | |||
+ | Nova versão do [http://sdcc.sourceforge.net/doc/sdccman.pdf SDCC] | ||
+ | ==Programa exemplo== | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #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(); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
=Outros= | =Outros= | ||
+ | |||
+ | http://www.q.hscott.net/reads/paulos-part-i.pdf | ||
http://www.dca.ufrn.br/~pablo/index.php?corpo=arquitetura.html | http://www.dca.ufrn.br/~pablo/index.php?corpo=arquitetura.html |
Edição atual tal como às 14h11min de 29 de junho de 2015
Informações Gerais
- Professor: Eraldo Silveira e Silva
- email: eraldo@ifsc.edu.br
Plano de Ensino
Recursos
- Apostila Memória
- Slides Memória
- Introdução à Microprocessadores
- Arquitetura e Organização do BIP
- Microcontrolador e 8051
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
- Links:
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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:
- Entrar no Windows.
- Baixe o arquivo de projeto. Coloque em um diretório conhecido.
- Clique sobre o arquivo. O PROTEUS será executado e o projeto aberto.
- 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.
- Grave o dado Ah na posição 0 de memória e Bh na posição 8.
- 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.
- 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
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:
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
Media:Aula8-ModosEndereçamento-Exercícios.pdf
Aula Dia 11/05/2015
Objetivo
- Operações com bits
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