Basics of microcontrollers programming, Książki, Wprowadzenie do mechatroniki

[ Pobierz całość w formacie PDF ]
Basics of microcontrollers programming.
Introduction to AVR Studio and basic operations on I/O of ATMEAGA32 microcontroller
1. Aims
The aim of the experiment is to make students familiar with the following topics:
 programming environments for ATMEL microcontrollers,
 internal architecture of ATMEGA 32 microcontrollers and evaluation board.
2. Equipment
Software
:
 AVR Studio – software version 4.12,
Hardware
:
 Personal computer.
 ZL3AVR evaluation board for microcontrollers ATMEGA32
3. Program of experiment
This experiment is divided into two parts. The first part is related to descriptions of AVR Studio structure and
operation. In the second part - usage of simple I/O commands in exemplary programs is presented.
3.1. Programming environments of AVR Studio
AVR Studio environment consists of the following components – subprograms:
1. Design Manager
2. Text Editor
3. Compiler
4. Process Simulator
Fig. 1.
Main window of AVR Studio after starting
AVR Studio can be started with the help of main button “Start” in Microsoft Windows XP
system, in the following way: “START – Programs – Atmel AVR - Project”. It results in a
window presented in Fig.1.
Starting new project
New project can be open, as it is shown in Fig.2.
Fig. 2.
Starting new project
In the next step we have to decide what programming language to be used and where our
project will be stored. When a new window is started, we have to choose on the left hand side
“Atmel AVR Assembler” as programming language and create path to our project in
“Location” window – see Fig. 3. Then, it is necessary to press “Finish” button. In this way,
we are ready to write our first program.
Fig. 3.
Dialog window for choosing programming language and path for project
In the next step we can choose type of microcontroller which will be used, (in our case – Atmega32), as it is
shown in Fig.4.
Fig. 4.
Dialog window for microcontroller selection
Use of I/O ports – Examples
Experiments No. 1. – Switching on the LED’s
Scheme of the hardware connections is presented in Fig.5.
Fig. 5.
Scheme hardware of electrical connections of LED’s to ATMEGA32
Write the following programs:
Project 1-2
Command:
; description of commands
.include "m32def.inc"
; assigning value “Temp” into register R16
.equ One = 0x01
; assigning value “1” to constant “One”
.org 0x0000
; declaration of program beginning address
Start:
; procedure “Start”
ldi Temp, 0xFF
; writing value “FFh into register R16”
out DDRD, Temp
; loading value from register R16 into direction port D
ldi Temp, One
; writing value from register One into register Temp
out PORTD, Temp
; sending value of register into data register of port D – switching on the LED’s
Project 1-3
Command:
; description of commands
.include "m32def.inc"
; file including registry definitions
.def Temp = R16
; assigning value “Temp” into register R16
.org 0x0000
; declaration of program beginning address
ldi Temp, 0xFF
; writing value “FFh” into register R16
out DDRD, Temp
; loading value from register R16 into direction port D
sbi PORTD, 0
; setting 0 in register PORTD – switching on the LED’s
Project 1-4
Command:
; description of commands
.include "m32def.inc"
; file including registry definitions
.equ jeden = 0x01
; assigning value “Temp” into register R16
.def pom = R17
; assigning value “pom” into register R17
.org 0x0000
; declaration of program beginning address
Start:
; procedure “Start”
.def Temp = R16
; file including registry definitions
Start:
; procedure “Start”
.def Temp = R16
; assigning value “1” for constant “jeden”
out DDRD, Temp
; loading into direction port D value from register R16
ldi pom, jeden
; loading into register “pom” value “1”
mov Temp, pom
; sending value from register “pom” into register “Temp”
out PORTD, temp
; switching on the LED’s
Project 1-5
Command:
; description of commands
.include "m32def.inc"
; file including registry definitions
.equ jeden = 0x01
; assigning value “Temp” into register R16
.def pom = R17
; assigning value “pom” into register R17
.org 0x0000
; declaration of program beginning address
Start:
; procedure “Start”
ldi r18, 0x00
; writing into register R18 value “0”
ldi Temp, 0xFF
; writing into register R16 value “FFh”
out DDRD, Temp
; loading into direction port D value from register R16
ldi pom,jeden
; loading into register “pom” value “1”
add r18,pom
; addition register R18 into register “pom”
mov Temp,r18
; sending value from register R18 into register “Temp” value “1”
out PORTD, temp
; switching on the LED’s
Project 1-6
Command:
; file including registry definitions
def Temp = R16
; assigning value “Temp” into register R16
.equ jeden = 0x01
; assigning value “1” for constant “jeden”
.def pom = R17
; assigning value “pom” into register R17
.org 0x0000
; declaration of program beginning address
Start:
; procedure “Start”
ldi r18, 0x00
; writing into register R18 value “0”
ldi Temp, 0xFF
; writing into register R16 value “FFh”
out DDRD, Temp
; loading into direction port D value from register R16
inc pom
; increasing value of “1” of register “pom”
out PORTD, pom
; switching on the LED’s
Petla:
; subprogram “petla” (loop)
rjmp Petla
; jump into subprogram “petal” – loop of the program
Project 1-7 (in language C)
/*********************************************
* Chip type : ATmega32
* Clock frequency : 16,000000 MHz
*********************************************/
#include <avr/io.h>
#include <util/delay.h>
int TabCyfr[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98};
int TabKol[4] = {Kol1,Kol2,Kol3,Kol4};
#define Kol1 0xFe
#define Kol2 0xFd
#define Kol3 0xFb
#define Kol4 0xF7
ldi Temp, 0xFF
; writing into register R16 value “FFh”
.def Temp = R16
; assigning value “1” for constant “jeden”
.include "m32def.inc"
; description of commands
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • milosnikstop.keep.pl
  •