Página Inicial > Engenharia > Programando Microcontroladores 8052 no Linux

Programando Microcontroladores 8052 no Linux

Kit8051LS MicrogeniosPassei um bom tempo procurando como programar microcontroladores da família 8051 no Linux, as opções para M$ Win são várias(infelizmente) mas consegui encontrar as soluções para Linux a contento.

Software

Uso os seguintes programas para programar o 8052 no linux:

SDCC - http://sdcc.sourceforge.net/ - Compilador C ANSI - Open Source.
UISP - http://savannah.nongnu.org/projects/uisp - Universal In System Programmable.

S.O. que usei os programas: Ubuntu Linux 7.10(Gusty) - http://www.ubuntu.com.

Hardware

Estou usando o Kit8051LS, da Microgenios. A programação é feita via porta paralela do PC, é um kit que é muito bom tanto para quem está aprendendo(como eu) quanto para quem já é profissional.

Exemplo

Este programa de exemplo é bem simples, funciona como se fosse um semáforo, acendendo três LED’s em seqüencia.

//Projeto Semaforo - exemplo

#include "8052.h"

// Protótipos de funções
void fun_temp(char);
void main (void)
{

    P2=0xFF;               // Apaga todos os leds pares

    while (1)              // Rotina principal do programa
    {
        // Luz verde
        P2_0=0;           // Acende a luz verde
        fun_temp(2);      // Chama função de tempo com parâmetro 2

        // Luz amarela
        P2_0=1;          // Apaga a luz verde
        P2_1=0;          // Acende a luz amarela
        fun_temp(1);     // Chama função de atraso

        // Luz vermelha
        P2_1=1;          // Apaga a luz amarela
        P2_2=0;          // Acende a luz vermelha
        fun_temp(3);     // Chama função de atraso

        P2_2=1;          // Apaga a luz vermelha
    }
}

void fun_temp(char cont)// Função de tempo com recebimento de
                                 //parâmetro: variável "cont"
{
    unsigned char contador1;
    unsigned int contador2;

    while (cont)
    {
        for (contador1 = 0 ; contador1<=50 ; contador1++)
        for (contador2 = 0 ; contador2<=1000 ; contador2++);
        cont--;
    }

}

Compilação > Programação

Depois de escrever o programa em seu editor de texto preferido(uso o GEdit) e salvá-lo abra o Terminal(ou Konsole se você usa o KDE):

cd diretorio_onde_seu_programa_esta #exemplo cd /home/felipe/programas/semaforo

sdcc semaforo.c #compila seu programa e gera o arquivo .ihx

packihx semaforo.ihx > semaforo.hex #transforma seu arquivo .ihx para .hex e deixa pronto pra ser enviado ao seu microcontrolador

uisp -dlpt=/dev/parport0 -dprog=paravrisp -d89 –erase –upload if=semaforo.hex #talvez voce precise de privilegios de superusuario para acessar a porta paralela do pc

Vou explicar o que está escrito nessa linha de comando:

-dlpt: Aqui você digita o endereço de sua porta paralela. Se estiver usando a porta serial para o seu programador, use o parâmetro -dserial no lugar de -dlpt e coloque o endereço da porta serial que você está usando.

-dprog: É o tipo de programador. Já que eu não sabia qual era o tipo do meu, só sabia que era pela porta paralela(claro), então fui testando as opções para porta paralela.

-d89: É para indicar ao programador que você está usando microcontroladores baseados na família 8051.

erase: Apaga algum programa que estiver gravado na memória FLASH do microcontrolador.

upload: Depois de apagar a memória, já se pode inserir o arquivo .hex que você deseja.

Pronto! Agora é só desconectar o cabo de programação do Kit e ver o exemplo funcionando.

Arquivos do programa de exemplo no formato zip e tar.gz.

Engenharia

  1. Ricardo Barbosa
    1, julho, 2008 em 21:02 | #1

    Parabéns pela iniciativa do post Felipe. Vc deve saber como é difícil achar material de microcontroladores e Linux (ainda mais em português).

    Nessas férias de julho vou começar a testar o SDCC para compilar programas para PIC. Parece que esse compilador SDCC é uma das poucas alternativas para o microcontrolador que vou usar.

    Até mais e abraços

  2. 7, setembro, 2008 em 17:52 | #2

    tenho curso de programação, mas ttrabalho de eletricista pela prefeitura de pirassununga, e tenho, a até o programador de pic para ele.
    Pois gostei do trabalho.
    voce sabe como obter uma placa de hardwere paraa este programa.
    POSSO FAZER ESTE TESTE?

  3. 8, setembro, 2008 em 13:34 | #3

    Você pode testar o sdcc(compilador) junto com o uisp(programador) na placa que você tem, você só tem que definir se a programação é pela porta paralela ou serial, isso vai depender da sua placa.

  4. 14, setembro, 2008 em 05:49 | #4

    Parabéns pelo site. Uma pergunta, vocês como colocar uma rotina nesse programa semarforo para programar o tempo de cada led pelo teclado e incluir um LCD?

  1. Nenhum trackback ainda.