You are on page 1of 8

AVR Studio Assembler/Simulator


AVR Studio 4 is a professional Integrated Development Environment (IDE) for writing and
debugging AVR applications in Windows 9x/NT/2000/XP environments. This tutorial assumes
that you have installed AVR Studio 4 on your computer. If you do not have AVR Studio yet, you
may obtain a copy of AVR Studio 4 from one of 3 places:
1. Atmel Corporation:
2. AVR Freaks:
3. Borrow a CD from your instructor

This tutorial will guide you through the steps required for:
1. Executing the AVR Studio 4 Integrated Development Environment (IDE),
2. Typing in a program,
3. Assembling the program, and
4. Simulating a program

The first program you will enter is shown below (Figure 1). This program will initialize the B
and D ports on the ATMega128 AVR processor and then turn on a single LED connected to
PortB, pin 0.

;Project #1
;Written by: Steve Kuyath
;Date: 5/21/2007
;ver: 1.0
;file: C:\Documents and Settings\Stephen Kuyath\My Documents\AVR\Pr1
;Device: ATMega128

.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\"

; Declarations

.def temp =r16

; Start Program

rjmp Init

Init: ser temp
out DDRB,temp
out DDRD,temp

clr temp
out PortB,temp
out PortD,temp

sbi PortB,0
cbi PortB,0
rjmp Start

Figure 1: LED On Program

Last update: May 24, 2007 1

AVR Studio Assembler/Simulator Tutorial

Step 1: Open AVR Studio 4 IDE. You should see the program banner shown below:

Figure 2: AVR Studio 4 Banner

Step 2: When IDE opens, you will see the programming and simulator environment as well as a
dialog box (Figure 3) requesting information: are you starting a new project or opening a saved

Figure 3: AVR Studio IDE

Step 3: Click on the “New Project” button:

Figure 4: Welcome Dialog Box

Last update: May 24, 2007 2

AVR Studio Assembler/Simulator Tutorial

Step 4: In the next dialog box, choose the Atmel AVR Assembler as the project type:

Figure 5: Choose Atmel AVR Assembler

Step 5: Type in a project name and the initial file name:

Click on this box if you need to change directories

Figure 6: Type Project and Initial File Names

Step 6: Click on the “Next” button

Last update: May 24, 2007 3

AVR Studio Assembler/Simulator Tutorial

Step 7: Choose “AVR Simulator” for the Debug Platform and then scroll down the right window
to choose the ATmega128 AVR processor

Figure 7: Choose Simulator and ATmega128

Step 8: Click on the “Finish” button. You should then see the IDE (you may have to maximize
the editing window to see the same thing as shown in Figure 8):

Figure 8: AVR Studio 4 IDE

Last update: May 24, 2007 4

AVR Studio Assembler/Simulator Tutorial

Step 9: Type in the program as shown in Figure 1. Note the color-coded text. This is done
automatically by the IDE and helps you to make corrections as you go.

Figure 9: Typed Program

Step 10: When you have completed the program save it. It is also good practice to periodically
save your program as you type.

Step 11: Assemble your program. You may do this by selecting “Build” from the “Build Menu”
or by striking the [F7] key:

Figure 10: Program Assembled

Last update: May 24, 2007 5

AVR Studio Assembler/Simulator Tutorial

Step 12: Continue assembling and correcting errors until the program assembles without error
(note the green dot in the lower window and the comment that states: “Assembly complete, 0
errors, 0 warnings”) you are ready to simulate.

Step 13: Simulate the program. To start the simulator you may choose “Start Debugging” from
the “Debug Menu” or you may click on the arrow button as shown below:

Start Debugging button

Note: The arrow points to the next instruction (in

this case the 1st) to be executed

Figure 11:Start Simulation

Step 14: In the I/O View, open the “I/O ATMEGA128,” and the “PortB” views by clicking on
the + symbol.

Figure 12: I/O Views

Last update: May 24, 2007 6

AVR Studio Assembler/Simulator Tutorial

Step 15: Single step through your program by striking the [F11] key:

Figure 13: FF sent to Data Direction Register B (all pins outputs)

Figure 14: bit 0 set

Note: The “sbi PortB,0” (sbi is the “set bit”) instruction has been executed, although the pointer
is pointing at the next instruction. So, bit 0 in PortB is set (equal to 1). It is important to note 2
1. Pin 0 (PinB0) on PortB has not gone high yet, even though bit 0 in PortB is set. PinB0
will go high as the next instruction is executed
2. The instruction: “cbi PortB,0” has not been executed yet.

Last update: May 24, 2007 7

AVR Studio Assembler/Simulator Tutorial

Step 16: Continue stepping through the program until you are sure that the program is executing
as designed.

Note: The next few screens may be a little confusing because the program sets bit 0 in PortB and
then immediately clears bit 0 in PortB. The simulators shows this, but shows that bit 0 on PinB
(the actual pin on the Atmega128) is one cycle behind bit 0 in PortB:

Figure 15: PinB0 is high

Figure 16: PinB0 is low

Last update: May 24, 2007 8