Embora profissionalmente já tenha feito programas para microcontroladores baseados na arquitetura 8051, não tinha ainda brincado com eles. Um post de uma conhecida despertou a minha curiosidade. Vendo que alguns modelos estão disponíveis por preço acessível, que existem ferramentas livres para programação em assembly e C e que a gravação de programas neste modelos parece simples, não deu para segurar o clique do mouse...
Meus novos brinquedos |
Se não me engano, já tinha ouvido falar no 8051 desde de recém formado. Acho que ele foi usado no teclado do Nexus, mas posso estar confundindo com o 8048/8035. Com certeza um microcontrolador baseado no 8051 era utilizado nos coletores de dados da empresa italiana Idware (depois comprada pela Datalogic), que eu programei no final dos anos 90 e começo dos anos 2000.
O coletor Formula 734 |
Estes terminais Idware eram bastante simples e as bibliotecas do fabricante rudimentares. Uma esquisitice era que quando a tela era apagada (para economia de energia) o seu conteúdo era perdido e tinha que ser refeito pela aplicação quando ela voltasse a ser ligada. A ferramenta oficial de programação era o compilador C da Keil.
Acordos de NDA me impedem de dar detalhes sobre os projetos seguintes com 8051, já neste século. O que posso dizer é que era um microprocessador voltado para comunicação por rádio frequência que usava a arquitetura 8051. A maior parte da programação foi em C (novamente com o Keil), mas desta vez cheguei a escrever algumas linhas em assembly como parte do bootloader.
Mas vamos voltar ao início. O 8051 foi lançado pela Intel (com o nome MCS-51) em 1980. É um microcontrolador de 8 bits, com vias internas separadas para as memórias de programa e dados (como é costume nos microcontroladores de 8 bits). Ao contrário dos PICs e AVRs as instruções seguem a filosofia CISC, com instruções que realizam tarefas complexas específicas.
No próximo post vamos ver a arquitetura com mais detalhes, mas um ponto que vale adiantar é o endereçamento da memória de dados, que pode ser feita de três formas:
- Diretamente, através de um endereço de 8 bits. O primeiro modelo lançado tinha 128 bytes de Ram com endereços de 0x00 a 0x7F (as primeiras posições são usadas por algumas instruções como registradores). Os endereços 0x80 a 0xFF foram dedicados aos registradores de controle (SFR - Special Function Registers), portanto eventual Ram nestes endereços não podem ser endereçada diretamente.
- Indiretamente, através de um endereço de 8 bits contido em um registrador (R0 ou R1). Esta forma permite acessar qualquer um dos primeiros 256 bytes da Ram.
- Através da instrução MOVX, para acesso da chamada "memória externa" (que, dependendo do modelo, pode estar dentro do microcontrolador). A memória externa usa uma faixa separada de endereços também iniciando do zero.
Um comentário:
Boa esta sua introdução acerca do 8051, obrigado por disponibilizar seus conhecimentos.
Postar um comentário