From:
Subject: Prac 3 - AVR Assembly Language Programming
Date: Thu, 2 Aug 2007 11:31:26 +1000
MIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----=_NextPart_000_005F_01C7D4F8.A96E3B20"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138
This is a multi-part message in MIME format.
------=_NextPart_000_005F_01C7D4F8.A96E3B20
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.itee.uq.edu.au/~elec2002/pracs/prac_3/index.html
Prac 3 - AVR Assembly Language Programming
ELEC2002 - Prac 3
AVR Assembly Language Programming
Goal
- Gain some experience with AVR assembly language programming.=20
- Using assembly language you should understand:=20
- How the I/O ports of AT90S8515 are used as inputs and outputs.=20
- The polling method for sensing the inputs.
- Learn how to use the 7-segment displays on the logic workstation. =
See the following topics:=20
Back to =
Lab=20
Experiment Index=20
Preparation
-
Bit Reversal
Write an assembly language program for the AVR8515 Project Board to =
- Input 8 bits of data from the Port C pins.=20
- Invert the data.=20
- Output the result to Port B.
The skeleton code for this program is provided in pra=
c3-1.asm.=20
Replace the lines ";<-YOUR CODE=20
HERE->" with your code.=20
The following IO registers will be used:=20
| DDRB=20
| Port B Data Direction Register=20
|
| PORTB=20
| Port B Data Register=20
|
| DDRC=20
| Port C Data Direction Register=20
|
| PINC=20
| Port C Input Pins Address |
Bit Recognition
Write an assembly language program for the AVR8515 Project Board to =
- Input 8 bits of data from the Port C pins.=20
- Determine the position of the bit that is set to 1.=20
- Output the result as a decimal number to Port B.
Only a single bit should be set to 1. The decimal number output to =
Port B=20
will be in the range of 0 to 7. For example, if bit 6 of the input =
data is set=20
to 1, then $06 (00000110 in binary) is output to Port B. If more than =
one bit=20
is set or no bits are set then output $FF (i.e. all ones) to Port B.=20
The following flowchart illustrates an algorithm for solving this =
problem.=20
This algorithm compares the value read in from port C with values =
0x80, 0x40,=20
0x20, 0x10, 0x08, 0x04, 0x02, 0x01 (i.e. all the 8-bit patterns with =
only one=20
bit set). The bitpos counter counts down from 7 to 0 and will be the =
number we=20
output if we find a pattern that matches. If no pattern matches when =
we reach=20
the end then we output all ones to port B.
The skeleton code for this program is provided in pra=
c3-2.asm.=20
Replace the lines ";<-YOUR CODE=20
HERE->" with your code.=20
The following IO registers will be used:=20
| DDRB=20
| Port B Data Direction Register=20
|
| PORTB=20
| Port B Data Register=20
|
| DDRC=20
| Port C Data Direction Register=20
|
| PINC=20
| Port C Input Pins Address |
Bit Recognition - only when flagged
Write an assembly language program for the AVR8515 Project Board to =
carry=20
out the following steps only when a pushbutton connected to the PORTD2 =
(i.e.=20
bit 2 of port D) input is set to 0.=20
- Input 8 bits of data from the Port C pins.=20
- Determine the position of the bit that is set to 1.=20
- Output the result as a decimal number to Port B.
The skeleton code for this program is provided in pra=
c3-3.asm.=20
Replace the lines ";<-YOUR CODE=20
HERE->" with your code. Much of this code will be the =
same as=20
for part 2 above.
The following IO registers will be needed:=20
| DDRB=20
| Port B Data Direction Register=20
|
| PORTB=20
| Port B Data Register=20
|
| DDRC=20
| Port C Data Direction Register=20
|
| PINC=20
| Port C Input Pins Address=20
|
| DDRD=20
| Port D Data Direction Register
|
| PIND
| Port D Input Pins Address |
Back=20
to Contents=20
Procedure
-
Bit Reversal
Assemble the program that you have written and and program it into =
the=20
device on the AVR8515 Project Board.=20
With your program in the device on the project board, carry out the =
following steps:=20
- When using the Grey-Box power supply (47-311):=20
- Switch off the power supply to the project board and =
logic=20
workstation.
- Connect wires from the eight PORT B pins on the project board to =
the=20
LEDs on the logic workstation.=20
- Connect wires from the eight PORT C pins on the project board to =
the=20
toggle switches on the logic workstation.=20
- Connect a wire from the GND pin on the project board to a GND =
pin on the=20
logic workstation.=20
- When using the Grey-Box power supply (47-311):=20
- Switch on the power supply to the project board and logic =
workstation.=20
- Press the red reset button on the project board.=20
- Set various values on the switches and check that the complement =
of=20
these values is indeed shown on the LEDs.
-
Bit Recognition
Assemble the program that you have written and and program it into =
the=20
device on the AVR8515 Project Board.=20
Use the same wiring connections for this program as you did for the =
Bit=20
Reversal program except use the 7-segment displays instead of the =
LEDs for=20
PORT B. Carry out the following steps:=20
- Set various values on the switches and check that the values =
shown on=20
the 7-segment displays are correct.
-
Bit Recognition - only when flagged
Assemble the program that you have written and and program it into =
the=20
device on the AVR8515 Project Board.=20
Use the same wiring connections for this program as you did for the =
"Bit=20
Recognition" program. Carry out the following steps:=20
- When using the Grey-Box power supply (47-311):=20
- Switch off the power supply to the project board and =
logic=20
workstation.
- Connect a wire from the Port D2 pin on the project board to a =
pushbutton=20
on the logic workstation.=20
- When using the Grey-Box power supply (47-311):=20
- Switch on the power supply to the project board and logic =
workstation.=20
- Press the red reset button on the project board.=20
- Repeatedly, set a value on the switches, press and release the=20
pushbutton and check that the value shown on the LEDs is correct. =
The value=20
on the LEDs should only change when the pushbutton value is 0 - =
never when=20
the pushbutton value is 1.=20
Back=20
to Contents=20
Equipment
- Computer=20
- 12V Power Supply=20
- AVR8515 Project Board with STK200 Download Cable=20
- Logic Workstation=20
- Hookup Wire
Back=20
to Contents=20
References
Back=20
to Contents=20
------=_NextPart_000_005F_01C7D4F8.A96E3B20
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.itee.uq.edu.au/~elec2002/pracs/prac_3/flowchart.gif
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
------=_NextPart_000_005F_01C7D4F8.A96E3B20--