Introdução¶
O 8051 HAT é uma placa para ensino sobre o microcontrolador 8051, desenvolvida especialmente para ser utilizada em conjunto com um microcomputador Raspberry Pi 3. Pode também ser utilizada em modo isolado, sendo para tal necessário recorrer a um programador ISP, como por exemplo o USB ASP.

O microcontrolador que equipa este HAT é o AT89S8253 da Microchip, uma dos derivados do 8051 original e totalmente compatível com a família MCS-51, possui 12Kb de memória flash de programa e 2Kb de memória EEPROM.
Esta placa é vocacionada para o ensino de microcontroladores 8051, e tem por base um conjunto de ferramentas de desenvolvimento totalmente abertas e gratuitas em Linux.
Raspberry Pi¶

O Raspberry Pi é um computador de baixo custo e que tem o tamanho de um cartão de crédito desenvolvido no Reino Unido pela Fundação Raspberry Pi. Para usá-lo, basta ligar um teclado e um rato USB e de seguida ligar tudo a um Monitor ou Televisão.
A função básica do Raspberry Pi é oferecer uma alternativa barata, prática e acessível para que pessoas de várias idades possam explorar todas as capacidades da computação. Além disso, também visa facilitar a aprendizagem de programação em linguagens como Scratch e Python.
Sobretudo, apesar do tamanho diminuto e de aspecto pouco convencional, o Raspberry Pi é um computador como outro qualquer. Isso quer dizer que ele pode servir para navegação na internet, reprodução de conteúdo multimédia, criação de conteúdo em forma de texto, imagens e, é claro, para jogos. Atualmente bastante utilizado como Media Center de complemento à TV, ou como maquina de jogos Arcade.
Especificações¶
O 8051 HAT tem as seguintes características:
Processador:
- AT89S8253
- Oscilador de 12MHz
- Malha de RESET
- Programação in-circuit
Alimentação:
- Regulador de tensão interno
- A placa funciona a 3.3V
- Alimentação a partir do RPi (a partir dos +5V) ou externa (USB) seleccionável
Outros:
- EEPROM com as informações do HAT (cumpre com as especificações do Raspberry Pi)
- Header para programação ICSP
- Quase todos os portos de E/S interligam com os GPIO do RPi
- Pode funcionar em modo Stand-Alone
Instalação¶
Este capítulo aborda os passos necessários para a configuração do Raspberry Pi e da instalação do software necessário para a utilização correcta do 8051 HAT.
Configuração do Raspberry Pi¶
Para que se possam aproveitar ao máximo as potencialidades de comunicação entre o Raspberry Pi e o microcontrolador presente no 8051 HAT, será necessário habilitar o funcionamento dos portos SPI e I2C no RPi.
Para tal será necessário aceder ao menu de configuração do mesmo, neste caso, via linha de comandos:
$ raspi-config
SPI¶
Aparecendo o seguinte menu:

Seleccionar a opção 5 Interfacing Options usando as teclas de direcção.

Escolher a opção P4 SPI, e confirmar a escolha.

E obtemos a confirmação.

Atenção! - No final desta operação, o Raspberry Pi solicita se pretendemos efectuar um reboot para activar esta opção, responder Não, pois é ainda necessário efetuar a activação da interface I2C.
I2C¶
Para activar a interface I2C, seleccionar novamente a opção 5 Interfacing Options

Agora escolher a opção P5 I2C, confirmar, e após resposta positiva à activação, então sim, permitir que o Raspberry Pi efectue um reboot para activar estas opções.
Instalação de software¶
Para o desenvolvimento, simulação, compilação de programas para o 8051 e respectiva programação do microcontrolador, será necessário proceder à instalação de alguns programas no Raspberry pi:
- Sdcc
- MCU 8051 IDE
- AVRDUDE
Sdcc¶
O Sdcc (Small Device C Compiler) é um programa open-source que permite a compilação de programas em linguagem C para diversos tipos de microcontroladores de 8 bits.
Para a sua instalação, a partir da linha de comandos, ou se estiver no ambiente gráfico, abrir uma janela de terminal, e executar a seguinte instrução:
$ sudo apt-get install sdcc
Para mais informações sobre o sdcc, podem aceder à página do projecto.
MCU 8051 IDE¶
O MCU 8051 IDE é um ambiente gráfico de desenvolvimento intergrado para microcontroladores da família 8051. Tem um compilador de assembly próprio e um simulador integrado. Permite também o desenvolvimento de programas para o 8051 em linguagem C, através da integração com o sdcc.
No modo de Debug, o MCU 8051 IDE permite simular diversos tipos de hardware externo, tais como:
- Botões
- LEDs
- Matriz de LEDs
- Display de 7 segmentos simples e multiplexado
- Teclado matricial
- LCD de texto
O MCU 8051 IDE tem ainda um grande conjunto de utilitários que facilitam o desenvolvimento de programas e aplicações para o microcontrolador 8051.
A instalação do MCU 8051 IDE faz-se através da seguinte instrução:
$ sudo apt-get install mcu8051ide
NOTA: Apesar da página oficial do projecto estar off-line, ainda se pode aceder à primeira versão da mesma no Sourceforge.
AVRDUDE¶
O AVRDUDE (AVR Downloader/UploaDEr) é um gravar/ler e manipular o conteúdo da ROM e EEPROM de diversos tipos de microcontroladores, e suporta uma grande variedade de programadores, incluíndo o interface SPI nativo do Raspberry Pi. Para instalar o AVRDUDE, basta executar o seguinte comando:
$ sudo apt-get install avrdude
Embora o AVRDUDE seja descrito na sua página como um programa destinado a funcionar com microcontroladores AVR, pode também ser utilizado para microcontroladores da família 8051.
Por defeito, o AVRDUDE não suporta a programação do microcontrolador AT89S8253. Para adicionar a capacidade de programar este microcontrolador, será necessário editar o ficheiro avrdude.conf.in e acrescentar todos os dados necessários.
O 8051 HAT¶
é uma placa para ensino sobre o microcontrolador 8051, desenvolvida especialmente para ser utilizada em conjunto com um microcomputador Raspberry Pi 3. Pode também ser utilizada em modo isolado, sendo para tal necessário recorrer a um programador ISP, como por exemplo o USB ASP.
A grande vantagem desta placa é o facto de quase todos os pinos de E/S estarem ligados aos pinos de GPIO do Raspberry Pi, permitindo a interacção entre os dois.
Esta interligação, permite diversos tipos de situações, em que quer o microcontrolador, quer o RPi, podem para actuação ou leitura de sinais. O exemplo mais básico da interacção entre eles é a utilização do RPi para verificar o funcionamento do clássico blinky no microcontrolador sem necessitar de recorrer a uma resistência e um LED, bastanto para tal cirar/utilizar um pequeno programa, por exemplo, em Python para ler o estado de um pino de GPIO do RPi e apresentar essa informação ao utilizador.
Interligação RPi <-> microcontrolador¶
A tabela apresenta a correspondência entre os pinos E/S do microcontrolador e os GPIO do Raspberry Pi, bem como as suas funcionalidades.
Raspberry Pi | 8051 | ||||
---|---|---|---|---|---|
GPIO | Pino | Função | Pino | Porto/bit | Função |
02 | 03 | SDA1, I2C | 42 | P1.2 | |
03 | 05 | SCL1, I2C | 43 | P1.3 | |
04 | 07 | GPCLK0 | 08 | P3.2 | /INT0 |
05 | 29 | GPCLK1 | 10 | P3.4 | T0 |
06 | 31 | GPCLK2 | 11 | P3.5 | T1 |
07 | 26 | CE0_N SPI0 | 12 | P3.6 | |
08 | 24 | CE1_N SPI0 | 44 | P1.4 | /SS |
09 | 21 | MISO SPI0 | 02 | P1.6 | MISO |
10 | 19 | MOSI SPI0 | 01 | P1.5 | MOSI |
11 | 23 | CLK SPI0 | 03 | P1.7 | SCK |
12 | 32 | PWM0 | 40 | P1.0 | T2 |
13 | 33 | PWM1 | 09 | P3.3 | /INT1 |
22 | 15 | 13 | P3.7 | ||
23 | 16 | 37 | P0.0 | ||
24 | 18 | 36 | P0.1 | ||
25 | 22 | 35 | P0.2 | ||
14 | 08 | TxD0 | 05 | P3.0 | RxD |
15 | 10 | RxD0 | 07 | P3.1 | TxD |
16 | 36 | CE2 SPI1 | 34 | P0.3 | |
17 | 11 | CE1 SPI1 | 33 | P0.4 | |
18 | 12 | PWM2 CE0 SPI1 | 41 | P1.1 | T2EX |
19 | 35 | PWM3 MISO SPI1 | 32 | P0.5 | |
20 | 38 | MOSI SPI1 | 31 | P0.6 | |
21 | 20 | SCLK SPI1 | 30 | P0.7 | |
26 | 37 | 18 | P2.0 | ||
27 | 13 | 19 | P2.1 |