Sunday, September 19, 2021

Programing AT89C2051 using SDCC compiler on Debian Linux

My Homemade AT89C2051 Development Board

First and foremost we need to install a compiler and we need a programmer to load the code into the microcontroller. In my case, I use TL866A Universal Programmer.

SDCC
minipro

So let's start with the installation of the compiler:

// install SDCC package:
apt install sdcc

// test instalation
sdcc --version

TL866A Universal Programmer

The next step is to install the programmer software:

// install dependencies for minipro
apt install build-essential pkg-config git libusb-1.0-0-dev

// get source code of minipro
git clone https://gitlab.com/DavidGriffith/minipro.git

// compile minipro software
cd minipro
make

// install application
sudo make install

// udev configuration
sudo cp udev/*.rules /etc/udev/rules.d/
sudo udevadm trigger

// add user to the plugdev group
sudo usermod -a -G plugdev YOUR-USER

// test instalation
minipro --version

For this occasion, I wrote the Blink c program for AT89C2051 and compiled it using SDCC on Debian Linux.

// ********************************************************
// Program:     Blink LED example
// Author:      Elvis Baketa
// Processor:   AT89C2051
// Oscillator:  12 MHz
// Compiler:    SDCC (Linux)
// Version:     0.1
// Comment:     
// ********************************************************

#include "at89x051.h"

// declare function
void delayms(void);
void delay(int data);

// main function
void main(void)
{
    // declare variable
    int i = 0;
    
    // run once
    P1_0 = 1;
    
    // loop forever
    while(1)
    {
        // turn LED on
        P1_0 = 0;
        // wait 1 second
        delay(1000);
        // turn LED off
        P1_0 = 1;
        // wait 1 second
        delay(1000);
    }
}

// delay one milisecond
void delayms(void)
{
    int i;
    // count to 33 for 1 ms delay
    for (i = 0; i < 34; i++);
}

// amount of milisecond to delay
void delay(int data)
{
    int i;
    for (i = 0; i < data; i++)
    {
        delayms();
    }
}

You can find source code on GitHub repo blink at89c2051.

Until next time.

2 comments: