Interface the Atmega 16/32 with the PC

May 18, 2009 at 20:19 (microcontroller, Uncategorized)

There are many ways to interface your microcontroller to computer , the most easiest way is using serial port and MAX-232.In this tutorial is about how to interface a ATMEGA32 to your computer using serial  port , max232 and programming the atmega32 using CodeVisionAVR.


ATMEGA32 is a 8-bit AVR microcontroller with 32K Bytes In-system Programmable Flash. In Atmega32pins pin no.14 and 15 are RxD and TxD resp. For basics of atmega32 click here


In computing, a serial port is a serial communication physical interface through which information transfers in or out one bit at a time.Throughout most of the history of personal computers, data transfer through serial ports connected the computer to devices such as terminals and various peripherals.

MAX232: As we know for serial port we require TIA/EIA-232-F voltage level i.e. it can accept ±30-V. MAX232 has a capacitive voltage generator to supply TIA/EIA-232-F voltage levels from a single 5-V supply. Each receiver converts TIA/EIA-232-F inputs to 5-V TTL/CMOS levels.

So, to interface the atmega32 to the computer we will be connecting atmega32 (pin no 14 & 15) to serial port via max232. We are using max232 because atmega32 works at TTL voltage level and for serial port we require other voltage level, max232 converts the TTL voltage level to the required voltage level.

Atmega32 will receive the signal from MAX232 and transmit to max232 which will be received by serial port. Do the following connections:

  1. connect pin no 2 (Tx) of serial port to Tx out of the MAX 232 IC (pin no 14)
  1. connect pin no 3 (Rx) of serial port to Rx in of the MAX 232 IC (pin no 13)
  2. connect pin no 14 (RxD) of Atmega to Rx out of MAX 232 IC (pin no 12)
  3. connect pin no 15 (TxD) of Atmega to Tx in of MAX 232 IC (pin no 11)
  4. Do other necessary connections like ground and Vcc.


  1. By selecting UART tab of the CodeWizardAVR , you can specify the UART configuration
  2. Specify the baud rate and communication parameter.
  3. Click on save, generate and exit.
  4. Write the code.
  5. Burn the program.
  6. Open the terminal in CodeVisionAVR TOOL—-à TERMINAL (shift + F5).
  7. Specify the baud rate and communication parameter.(ensure that you specify the same parameter which you have specify in step 2)
  8. In terminal you monitor the whole operation.


NOTE: instead of terminal of CodeVisionAVR you can use other software like DockLight.

It allows us to specify the following communication modes:

  • Asynchronous
  • Synchronous Master, with the UCSRC register’s UCPOL bit set to 0
  • Synchronous Master, with the UCSRC register’s UCPOL bit set to 1
  • Synchronous Slave, with the UCSRC register’s UCPOL bit set to 0
  • Synchronous Slave, with the UCSRC register’s UCPOL bit set to 1

The serial communication is realized using the Standard Input/Output Function getchar , gets , scanf , putchar , puts and printf.


If we want to write program in which, when button ‘a’ on keyboard is pressed then all the LED connected to PORTA should be ON , when button ‘s’ is pressed all LED should be OFF.

#include <mega32.h>

#include <stdio.h> // Standard Input/Output functions

Void main()




// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud Rate: 9600






while (1)


if (getchar() == ‘a’)




if (getchar() == ‘b’)






In this way you can interface your ATMEGA32 to your computer. In similar way you can control the motor (in semi-autonomous BOT).

u can also view this post @

………………….if you found this tutorial helpful or have any suggestions … do leave a comment.

Permalink 30 Comments

me too is there…..

March 24, 2008 at 16:45 (Uncategorized)

This would be the message from Kimi to Hamilton that this wouldn’t be a one sided season, Kimi Raikkonen’s win in Malaysia show that Lewis Hamilton is not going to have everything his own way this season. Hamilton was on second row but he was penalized by FIA for obstructing BMW Sauber’s Nick Heidfeld by driving slowly on racing line , both races were not good for Massa he hasn’t score any point till now. Malaysian G.P was better for Force India as compare to Australian as fisichella has finished 12, still to open account…..

Permalink Leave a Comment