Before we go in detail of how to blink an LED(light emitting diode) with microcontroller, let us have a brief introduction on GPIO (general purpose I/O (input / Output)).
Intro to GPIO
The GPIO line of any microcontroller can be used mainly to perform two things
1. Generate a digital signal
2. Read a digital signal
The digital signal can be of TTL / CMOS logic depending up on the microcontroller .In general, the microcontrollers are provided with GPIO lines except for some microcontrollers which are very application specific and may not have GPIO lines.
The process of controlling GPIO lines for most of the controllers are similar in nature. There are mainly two configurations for any GPIO
- GPIO configured as an input
- GPIO configured as an output
The GPIO which is configured as input can read a digital signal from an external device, the external device can be a battery charge indicator, signal from a sensor or any device which you intend to use in performing certain functions. Same way when you wish to generate a digital signal then the GPIO will be configured as an output and the GPIO output can generate a digital signal, which can be fed to an external device.
Let us see an example to understand a practical application of a GPIO.
Example: Design an indicator for a battery charger using GPIO
Now let us assume that there is a circuitry which gives a digital signal to microcontroller when ever the battery is charged. So, microcontroller reads the digital signal from the battery charger and then generates a digital signal to blink an LED indicator.
GPIO configuration procedures
The configuration of GPIO for various microcontrollers have almost similar procedure, but the procedure is not completely same for all microcontrollers. There may be few more steps to be considered, depending on the microcontroller. In this document the common configuration procedure is explained.
Steps to generate a digital high using GPIO
Step 1: Configure the GPIO bit direction register as output
Step 2: Set the GPIO bit data/port register as high
Steps to read digital signal using GPIO
Step 1: Configure the GPIO bit direction register as input
Step 2: Read the GPIO bit data/port register
Example program to blink an LED(Code implemented with microcontroller atmega8535)
/* This program is compiled using WINAVR platform*/
PORT B0 pin of the microcontroller atmega8535 is connected to an LED circuit */
unsigned int i =0;
/* Configure the GPIO B0 bit direction register as output */
DDRB = 0x01;
/* Set the GPIO bit data/port register as low */
PORTB = 0x00;
/* Set the GPIO bit data/port register as HIGH */
PORTB = 0x01;
/* End of Program */
LED blinks continuously as long as the microcontroller is powered ON.