You are on page 1of 0

AUTO.

NLU

For more details and questions, contact me: thanhtam.h@gmail.com
CNG HC AVR
AVR1 LM QUEN AVR

Tho thu#n: ti li&u ny thu(c quy*n s+ h-u c0a tc gi, b2n c th3 t5 do tham kho
ti li&u nh.ng khng 6.7c php s8 d9ng 63 in thnh sch bo, 6:ng ln cc di<n 6n
hay website, nh.ng b2n c th3 dng 6.>ng link http://www.dieukhientudong.net 63
h.@ng t@i ti li&u. Lin h& tc gi qua email: thanhtam.h@gmail.com.

I. Gi#i thi&u
Khi tm hiu v$ vi %i$u khin b&n s) b+t g.p c/m t1 AVR 8 bits RISC Microcontroller,
trong % AVR l tn c4a c4a 1 h6 vi %i$u khin do Atmel (Na Uy) s8n xu9t (Atmel c:ng l nh
s8n xu9t cc vi %i$u khin h6 89C51 m b&n c th % t1ng nghe %;n), 8 bits l c9u trc c4a thanh
ghi bn trong chip, RISC (Reduced Instruction Set Computer) l 1 kiu c9u trc ph< bi;n c4a cc
b= x> l.
- T)i sao AVR: so v?i cc chip vi %i$u khin 8 bits khc, AVR c nhi$u %.c tnh h@n
hBn, h@n c8 trong tnh Cng d/ng (dD s> d/ng) v %.c biFt l v$ chCc nGng.
GHn nh2 chng ta khng cHn m+c thm b9t kI linh kiFn ph/ no khi s> d/ng AVR,
thKm ch khng cHn nguLn t&o xung clock cho chip (th2Mng l cc khNi th&ch anh).
Thi;t bO lKp trnh (m&ch n&p) cho AVR r9t %@n gi8n, c lo&i m&ch n&p chQ cHn vi
%iFn trS l c th lm %2Tc. m=t sN AVR cn hU trT lKp trnh on chip bVng
bootloader khng cHn m&ch n&p
Bn c&nh lKp trnh bVng ASM, c9u trc AVR %2Tc thi;t k; t2@ng thch C.
NguLn ti nguyn v$ source code, ti liFu, application noter9t l?n trn internet.
HHu h;t cc chip AVR c nhWng tnh nGng (features) sau:
C th s> d/ng xung clock ln %;n 16MHz, ho.c s> d/ng xung clock n=i ln %;n
8 MHz (sai sN 3%)
B= nh? ch2@ng trnh Flash c th lKp trnh l&i r9t nhi$u lHn v dung l2Tng l?n,
c SRAM (Ram tXnh) l?n, v %.c biFt c b= nh? l2u trW lKp trnh %2Tc
EEPROM.
Nhi$u ng vo ra (I/O PORT) 2 h2?ng (bi-directional).
8 bits, 16 bits timer/counter tch hTp PWM
Cc b= chuyn %Ni Analog Digital phn gi8i 10 bits, nhi$u knh.
ChCc nGng Analog comparator.
Giao diFn nNi ti;p USART (t2@ng thch chuYn nNi ti;p RS-232)
Giao diFn nNi ti;p Two Wire Serial (t2@ng thch chuYn I
2
C) Master v Slaver.
Giao diFn nNi ti;p Serial Peripheral Interface (SPI)
.
M=t sN chip AVR:
AT90S1200
AT90S2313
AT90S2323 and AT90S2343
AT90S2333 and AT90S4433
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
AT90S4414 and AT90S8515
AT90S4434 and AT90S8535
AT90C8534
ATtiny10, ATtiny11 and ATtiny12
ATtiny15
ATtiny22
ATtiny26
ATtiny28
ATmega8/8515/8535
ATmega16
ATmega161
ATmega162
ATmega163
ATmega169
ATmega32
ATmega323
ATmega103
ATmega64/128
AT86RF401.
Trong bi vi;t ny ti s> d/ng chip ATmega8 % lm v d/, ti ch6n ATmega8 v
%y l lo&i chip thu=c dng AVR m?i nh9t, n c %Hy %4 cc tnh nGng c4a AVR
nh2ng l&i nhZ g6n (gi PDIP c 28 chn) v low cost nn cc b&n c th mua % t[
mnh t&o Cng d/ng.
- T)i sao ASM (Assembly): b&n c th khng cHn bi;t v$ c9u trc c4a AVR v\n c th
lKp trnh cho AVR bVng cc phHn m$m hU trT ngn ngW c9p cao nh2 BascomAVR
(Basic) hay CodevisionAVR (C), tuy nhin % khng ph8i l m/c %ch c4a bi vi;t
ny. ] hiu th9u %o v$ AVR b&n ph8i lKp trnh bVng chnh ngn ngW c4a n, ASM.
Nh2 vKy lKp trnh bVng ASM gip b&n hiu t2Mng tKn v$ AVR, v t9t nhin % lKp
trnh %2Tc bVng ASM b&n ph8i hiu v$ c9u trc AVR.M=t l do khc b&n m ti
khuyn b&n nn lKp trnh bVng ASM l cc trnh dOch (compiler) ASM cho AVR l
hon ton miDn ph, v nguLn source code cho AVR vi;t bVng ASM l r9t l?n. Tuy
nhin m=t khi b&n % thnh th&o AVR v ASM b&n c th s> d/ng cc ngn ngW c9p
cao nh2 C % vi;t Cng d/ng v 2u %im c4a ngn ngW c9p cao l gip b&n dD dng
th[c hiFn cc php ton %&i sN 16 hay 32 bit (vNn l v9n %$ kh khGn khi lKp trnh
bVng ASM).
II. Cng c+
- Trnh bin d-ch: c r9t nhi$u trnh bin dOch b&n c th s> d/ng %; bin dOch code
c4a b&n thnh file intel hex % n&p vo chip, m=t sN trnh dOch quen thu=c c th k
%;n nh2 sau:
AvrStudio: l trnh bin dOch ASM chnh thCc cung c9p bSi Atmel, %y l trnh bin
dOch hon ton miDn ph v t9t nhin l tNt nh9t cho lKp trnh AVR bVng ASM. Phin
b8n hiFn t&i l 4.12 SP4, b&n c th download phHn m$m AvrStudio t&i trang web
chnh thCc c4a Atmel: http://atmel.com/dyn/products/tools_card.asp?tool_id=2725
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
Wavrasm: c:ng %2Tc cung c9p bSi Atmel, n chnh l ti$n thn c4a AvrStudio.
HiFn t&i wavrasm khng cn %2Tc s> d/ng nhi$u v so v?i AvrStudio trnh bin dOch
ny c nhi$u h&ng ch;, n;u b&n quan tm c th download t&i %y:
ftp://auto.vnlug.org/AUTO.NLU/Softwares/3-Microcontroller/AVR/Compiler/
WinAvr hay Avrgcc: l b= ch2@ng trnh %2Tc pht trin bSi gnu, ngn ngW s> d/ng
l C v th2Mng %2Tc vi;t tch hTp v?i AvrStudio (dng Avrstudio lm trnh bin
tKp editor). ].c biFt b= bin dOch ny c:ng miDn ph v %a sN nguLn source code C
%2Tc vi;t bVng b= ny, v vKy n r9t l t2Sng cho b&n khi vi;t cc Cng d/ng chuyn
nghiFp. ViFc lKp trnh bVng avrgcc ti s) %$ cKp trong nhWng phHn sau.
CodeVisionAvr: m=t ch2@ng trnh bVng ngn ngW C r9t hay cho AVR, hU trT nhi$u
th2 viFn lKp trnh. Tuy nhin l ch2@ng trnh th2@ng m&i. B&n c th download b8n
demo (%Hy %4 chCc nGng nh2ng nh2ng gi?i h&n dung l2Tng b= nh? ch2@ng trnh
2KB) t&i: http://www.hpinfotech.ro/html/download.htm. ho.c b8n full t&i
ftp://auto.vnlug.org.
ICCAVR: lKp trnh C cho avr, b8n demo t&i: http://www.imagecraft.com/
BascomAVR: lKp trnh cho AVR bVng basic, %y l trnh bin dOch kh hay v dD s>
d/ng, hU trT r9t nhi$u th2 viFn. Tuy nhin r9t kh debug lUi v khng thch hTp cho
viFc tm hiu AVR. V vKy ti khng b&n khuy;n khch b&n s> d/ng trnh dOch ny.
B&n c th downlaod b8n demo (4K limit) t&i %y:
http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=73
&Itemid=54
V cn r9t nhi$u trnh bin dOch khc cho AVR m ti khng k ra %y, nhn chung
t9t c8 cc trnh bin dOch ny hU trT C ho.c Basic ho.c thKm ch Pascal..ViFc ch6n 1
trnh bin dOch ty thu=c vo m/c %ch, vo mCc %= Cng d/ng, vo kinh nghiFm s>
d/ng v nhi$u l do khc nWa. V d/ ti th2Mng dng Avrstudio v avrgcc khi h6c
s> d/ng AVR v khi vi;t th2 viFnnh2ng khi cHn vi;t ch2@ng trnh Cng d/ng ti
th2Mng ch6n CodeVisionAVR.
Trong bi vi;t ny ti h2?ng d\n b&n s> d/ng AvrStudio % vi;t ch2@ng trnh cho
AVR bVng ASM.
- Ch/$ng trnh n)p (Chip Programmer): %a sN cc trnh bin dOch (AvrStudio,
CodeVisionAVR, Bascom) %$u tch hTp s^n 1 ch2@ng trnh n&p chip hU trT nhi$u
lo&i m&ch n&p nn b&n khng qu lo l+ng. Trong tr2Mng hTp khc, b&n c th s> d/ng
cc ch2@ng trnh n&p nh2 Icprog hay Ponyprogl cc ch2@ng trnh n&p miDn ph
cho AVR. ViFc ch6n v s> d/ng ch2@ng trnh n&p s) %2Tc gi?i thiFu trong cc bi
sau.
- M)ch n)p: m&ch n&p cho AVR c nhi$u chuYn, c th s> d/ng c<ng nNi ti;p (COM)
hay song song (LPT) c4a my tnh lm %2Mng n&p. Nhn chung m&ch n&p cho AVR
th2Mng %@n gi8n, r9t dD lm, d2?i %y ti gi?i thiFu 2 lo&i m&ch n&p %2Tc coi l %@n
gi8n nh9t, b&n c th tham kh8o v t[ lm (phHn h2?ng dHn lm m&ch n&p s) %2Tc %$
cKp trong 1 bi vi;t khc).
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
P1
CONG LPT 25
R1
100k
C1 100nF
A1
2
A2
4
A3
6
A4
8
1OE
1
Y1
18
Y2
16
Y3
14
Y4
12
V
C
C
2
0
G
N
D
1
0
A5
11
A6
13
A7
15
A8
17
Y5
9
Y6
7
Y7
5
Y8
3
2OE
19
U1
74ALS244/SO
1
2
3
4
5
6
J1
HEADER 6
D1
DIODE
0
0
0
GND
VCC
RESET
MOSI
MISO
0
CLK

Hnh 1 : mch np theo STK200

Hnh2 : mch np AVR ISP v#i ch& 4 )i*n tr- !!!!
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
- Ch/$ng trnh m ph0ng: avr simulator l ch2@ng trnh m phZng %2Tc tch hTp s^n
trong Avrstudio, avr simulator cho php b&n quan st tr&ng thi cc thanh ghi bn
trong AVR nn r9t ph hTp % b&n debug ch2@ng trnh. Trong bi vi;t c:ng s) h2?ng
d\n b&n s> d/ng avr simulator % m phZng ch2@ng trnh v d/. Proteus l ch2@ng
trnh thC hai ti muNn ni %;n, Proteus khng m phZng ho&t %=ng bn trong chip m
m phZng k;t qu8 ch2@ng trnh, n l trnh m phZng m&ch %iFn t> gi8 thMi gian th[c
nn b&n c th s> d/ng % kim tra ch2@ng trnh 1 cch tr[c quan h@n. Proteus l 1
cng c/ hWu ch khi khi cc b&n ch2a c %i$u kiFn lm cc m&ch %iFn t>.
III. Vi3t v d+ 56u tin.
- Trong bi vi;t ny ti s> d/ng 2 phHn m$m l AvrStudio v Proteus. Sau khi
download AvrStudio, b&n hy ci %Gt phHn m$m trn my c4a b&n, qu trnh ci %.t
r9t %@n gi8n, b&n hy theo cc m.c %Onh v nh9n next % ci %.t.
- Trong bi %Hu tin ny chng ta s) vi;t th> 1 ch2@ng trnh %@n gi8n cho AVR sau %
ch&y m phZng bVng Proteus. C th c m=t sN cu lFnh cc b&n s) khng hiu,
nh2ng %1ng bKn tm qu, trong bi 2 chng ta s) h6c v$ c9u trc AVR cc b&n s)
%2Tc gi8i thich r h@n.
- B+t %Hu v?i AvrStudio4: b&n ch&y AvrStudio t1 Start/ All Programs/ Atmel AVR
Tools/ AvrStudio 4
- _ lHn %Hu ch&y AvrStudio, 1 dialog Welcome to AvrStudio 4 xu9t hiFn, hy bZ
check S show dialog at Startup v nh9n cancel

Hnh 3: Welcome to AVR studio 4 Diaolg






AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
- B&n th9y giao diFn AVR Studio 4 nh2 sau:

Hnh 4: giao di*n AVR Studio
- Giao diFn AVR Studio r9t dD s> d/ng, v vKy chng ta s) k;t hTp tm hiu trong lc
vi;t v d/.
- T&o Project m?i: t1 menu Project, ch6n Project/New Project

Hnh 5: to Project m#i
- M=t dialog m?i xu9t hiFn cho php b&n setting Project c4a b&n, trong vng Project
Type ch6n Atmel AVR assembler, tCc lKp trnh bVng ngn ngW Assembly v trnh
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
dOch l Atmel AVR assembler (trnh dOch tch hTp trong AVR Studio); Location,
ch6n n@i chCa Project (trong v d/ ny ti ch6n th2 m/c D/AVR1); Project name,
tn Projetc c4a b&n, hy %.t l avr1.

Hnh 6: setting Project
- Nh9n Next % ti;p t/c ch6n Platform v device, viFc ny ph/c v/ cho m/c %ch debug
ch2@ng trnh hay m phZng bVng avr simulator. B&n hy ch6n AVR Simulator
trong Platform v Atmega8 trong device (chng ta s) vi;t ch2@ng trnh cho chip
Atmega8).

Hnh 7: Ch.n Platform v device
- Nh9n finish % k;t thc setting project, b&n th9y cc c>a sN c4a Project chCa cc
thng tin Project c4a b&n, b&n th9y trong m/c Source files c 1 file avr1.asm l
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
source code c4a b&n. B&n c th nh9n vo switch tab bn d2?i c>a s< Project % xem
c>a sN I/O View, c>a sN ny chCa thng tin chip dng khi m phZng. C>a sN Build
chCa thng tin k;t qu8 bin dOch. Editor l vng vi;t ch2@ng trnh, trong tr2Mng
hTp ny % l file avr1.asm c4a b&n.

Hnh 8: cc c0a s2 l4p trnh
- B&n vi;t %o&n code sau vo file avr1.asm c4a b&n (c4a s< Editor) rLi nh9n nt cng c/
Save all trn thanh cng c/ % l2u Project.
.CSEG
.INCLUDE "M8DEF.INC"
.ORG 0x000
RJMP BATDAU

.ORG 0x020
BATDAU:
; KHOI TAO CAC DIEU KIEN DAU
LDI R16, HIGH(RAMEND)
LDI R17, LOW(RAMEND)
OUT SPH, R16
OUT SPL, R17
LDI R16, 0xFF;
OUT DDRB, R16
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

; CHUONG TRINH CHINH
MAIN:
LDI R16, 0B00000001
OUT PORTB, R16
RCALL DELAY

LDI R16, 0B00000010
OUT PORTB, R16
RCALL DELAY

LDI R16, 0B00000100
OUT PORTB, R16
RCALL DELAY

LDI R16, 0B00001000
OUT PORTB, R16
RCALL DELAY

LDI R16, 0B00010000
OUT PORTB, R16
RCALL DELAY

LDI R16, 0B00100000
OUT PORTB, R16
RCALL DELAY

LDI R16, 0B01000000
OUT PORTB, R16
RCALL DELAY

LDI R16, 0B10000000
OUT PORTB, R16
RCALL DELAY

RJMP MAIN






AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
; CHUONG TRING CON DELAY 65535 chu ky (khoang 65535us neu xung ;clock
dung cho chip la 1MHz)
DELAY:
LDI R20, 0xFF
DELAY0:
LDI R21, 0xFF
DELAY1:
DEC R21
BRNE DELAY1
DEC R20
BRNE DELAY0
RET
- Tr2?c khi tm hiu nghXa %o&n code, hy nhn 1 l2Tt qua %o&n code. Tr2?c h;t viFc
vi;t HOA hay vi;t th2Mng l khng quan tr6ng, b&n c th vi;t %o&n code v?i b9t cC
hnh thCc no miDn %ng c php, t1 kha l %2Tc. Trong %o&n code:
i. B&n th9y 1 sN t1 c mu BLUE (v d/ LDI, OUT, RJMP, RCALL, RET)%
l cc INSTRUCTOR, tCc l cc cu lFnh c4a ngn ngW ASM, b&n c th
%6c ti liFu AVR INSTRUCTION % tm hiu t9t c8 cc INSTRUCTION.
Cc INSTRUCTION sau % s) %2Tc trnh dOch dOch thnh cc m t2@ng Cng.
ii. M=t sN t1 b+t %Hu bVng bVng d9u ch9m . l cc DIRECTIVE (v d/
.INCLUDE hay .ORG )% c:ng l nhWng t1 kha m.c %Onh c4a ASM AVR,
cc DIRECTIVE khng ph8i l m lFnh m chQ l cc chQ d\n v$ %Oa chQ b=
nh?, khSi %=ng b= nh?, %Onh nghXa macrov khng %2Tc trnh dOch dOch
thnh m. Chi ti;t v$ DIRECTIVE c th tm th9y trong cc ti liFu v$ ASM
AVR, d2?i %y ti tm t+t cc DIRECTIVE v chCc nGng c4a chng nh2
sau:

AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
iii. Thng th2Mng 1 INSTRUCTION %2Tc theo sau bSi 2 ton h&ng operand
(tuy nhin c nhi$u tr2Mng hTp chQ c 1 ton h&ng ho.c khng c ton h&ng),
khi % ton h&ng thC nh9t s) l cc THANH GHI c4a AVR (nh2 % %$ cKp,
chng ta s) kh8o st thanh ghi AVR trong cc bi sau), v d/ : LDI R16,
0xFF; trong % ton h&ng R16 l tn 1 thanh ghi trong AVR, v 0xFF l
1 hVng sN d&ng hexadecimal c gi trO t2@ng Cng l 255 d&ng thKp phn hay
11111111 nhO phn
iv. Cc t1 theo sau bSi d9u : l cc nhn label (v d/ MAIN, DELAY), %
l t1 do chng ta t[ %.t, n th[c ch9t l 1 vO tr trong b= nh? ch2@ng trnh, c
th s> d/ng nhn nh2 1 ch2@ng trnh con.
v. PhHn %i sau d9u ; g6i l gi8i thch comment, phHn ny khng %2Tc bin
dOch, b&n c th ghi comment S b9t cC %u trong ch2@ng trnh v?i yu cHu
ph8i s> d/ng d9u ; tr2?c n.
- Gi8i thch %o&n code: c th chia %o&n code trn thnh 4 phHn: phHn %Hu chCa cc
DIRECTIVE v lFnh RJMP dng % xc %Onh cc %Oa chQ b= nh? ch2@ng trnh, phHn 2
l khSi t&o m=t sN %i$u kiFn %Hu cho Stack Pointer v PORT, phHn 3 l ch2@ng trnh
chnh, v phHn 4 l ch2@ng trnh con ( ch %y chQ l cch bN tr c4a ring ti, m=t
khi % quen thu=c, b&n c th bN tr ch2@ng trnh theo cch ring c4a b&n).
i. PhHn 1 v phHn 2:
. CSEG
ChQ thO .CSEG: Code Segment bo cho trnh bin dOch rVng phHn code theo
sau l phHn ch2@ng trnh th[c thi, phHn ny s) %2Tc download vo b= nh?
ch2@ng trnh c4a chip
.INCLUDE "M8DEF.INC"
ChQ thO .INCLUDE bo cho trnh bin dOch b+t %Hu %6c 1 file %nh km, trong
tr2Mng hTp trn l file M8DEF.INC, %y l file chCa cc khai bo cho chip
Atmega8 nh2 thanh ghi, ng+tcho viFc truy xu9t trong ch2@ng trnh c4a
b&n, %y l dng b+t bu=c, n;u b&n lKp trnh cho chip khc b&n hy %<i tn
file %nh km, v d/ m32def.inc cho chip ATmega32 b&n c th tm th9y
cc file ny trong th2 m/c C:\Program Files\Atmel\AVR
Tools\AvrAssembler2\Appnotes.

.ORG 0x000
ChQ thO .ORG: Set Program Origin, set vO tr trong b= nh? s) %2Tc tc %=ng
%;n, trong tr2Mng hTp trn, .ORG 0x000 xc %Onh phHn code theo ngay sau s)
nVm S %Oa chQ 000, vO tr %Hu tin, trong b= nh? ch2@ng trnh. V dng lnh
trong vO tr %Hu tin % l:
RJMP BATDAU
RJMP: Relative Jump l lFnh nh8y khng %i$u kiFn %;n 1 vO tr trong b=
nh?, trong tr2Mng hTp trn l nh8y %;n nhn BATDAU, v nhn BATDAU
nVm S vO tr 0x020 (sN hexadecimal, 0x020 =32 decimal) v n %2Tc khai bo
ngay sau DIRECTIVE .ORG 0x020

AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
.ORG 0x020
BATDAU:
Nh2 th; phHn b= nh? ch2@ng trnh nVm giWa 0 v 0x020 khng %2Tc s> d/ng
trong %o&n code c4a chng ta, phHn ny %2Tc s> d/ng cho m/c %ch khc, %
l cc vect@ ng+t ( khng %2Tc %$ cKp S %y). Ti;p theo:
; KHOI TAO CC DIEU KIEN DAU
LDI R16, HIGH(RAMEND)
LDI R17, LOW(RAMEND)
OUT SPH, R16
OUT SPL, R17
BNn dng code trn khSi t&o cho Stack Pointer, chng ta s) tm hiu phHn ny
trong cc bi v$ Stack v ch2@ng trnh con.
L7i khuyn: cc b)n nn kh9i 5:ng 1 ch/$ng trnh theo cch trn v
chng ta s; hi=u chng r h$n sau ny !
LDI R16, 0xFF
OUT DDRB, R16
B&n ch 2 dng trn v nhWng g ti gi8i thch sau %y, 2 dng ny c tc
d/ng khSi %=ng PORTB c4a chip ATmega8 tc d/ng nh2 cc ng xu9t tn
hiFu (OUTPUT). Tr2?c h;t hy quan st chip ATmega8 trong hnh sau

Hnh 9: chip ATmega8
B&n c th th9y chip ny gLm 28 chn, trng % c cc chn %2Tc ghi l
PB0(chn 14), PB1(chn 15),,PB7(chn 10), % l cc chn c4a PORTB.
PORT l khi niFm chQ cc ng xu9t nhKp. Trong AVR, PORT c th giao
ti;p theo 2 h2?ng (bi directional), c th dng % xu9t ho.c nhKn thng tin,
mUi PORT c 8 chn. Chip Atmega8 c 3 PORT c tn t2@ng Cng l
PORTB, PORTC v PORTD (m=t sN chip AVR khc c 4 ho.c 6 PORT).
PORT %2Tc coi l c>a ng then chNt c4a vi %i$u khin.
Trong AVR, mUi PORT lin quan %;n 3 thanh ghi (8 bits) c tn t2@ng Cng
l DDRx, PINx, v PORTx v?i x l tn c4a PORT, mUi bit trong thanh ghi
t2@ng Cng v?i mUi chn c4a PORT. Trong tr2Mng hTp c4a Atmega8 x l B,
C ho.c D. V d/ chng ta quan tm %;n PORTB th 3 thanh ghi t2@ng Cng c
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
tn l DDRB, PINB v PORTB, trong % 2 thanh ghi PORTB v PINB %2Tc
nNi tr[c ti;p v?i cc chn c4a PORTB, DDRB l thanh ghi %i$u khin h2?ng
( Input ho.c Output). Vi;t gi trO 1 vo m=t bit trong thanh ghi DDRB th
chn t2@ng Cng c4a PORTB s) l chn xu9t (Output), ng2Tc l&i gi trO 0 xc
lKp chn t2@ng Cng l ng nhKp. Sau khi vi;t gi trO %i$u khin vo DDRB,
viFc truy xu9t PORTB %2Tc th[c hiFn thng qua 2 thanh ghi PINB v
PORTB.
Quay l&i v?i 2 dng code c4a chng ta, dng %Hu: LDI R16, 0xFF, v?i LDI
LoaD Immediately, dng lFnh c nghXa l load gi trO 0xFF vo thanh ghi
R16, R16 l tn 1 thanh ghi trong b= nh? c4a AVR, 0xFF l 1 hVng sN c
d&ng thKp l/c phn, k hiFu 0x ni ln %i$u %, b&n c:ng c th dng k
hiFu khc l $ % chQ 1 sN thKp l/c phn, v d/ &FF, v 0xFF=255(thKp
phn)=0B11111111 (nhO phn). Nh2 th; sau dng %Hu thanh ghi R16 c gi
trO l 11111111 (nhO phn). Dng thC 2: OUT DDRB, R16 nghXa l xu9t gi
trO t1 thanh ghi R16 ra thanh ghi DDRB, tm l&i sau 2 dng trn gi trO
DDRB nh2 sau:
1 1 1 1 1 1 1 1
C th b&n s) hZi t8i sao chng khng s> d/ng 1 dng duy nh9t l LDI
DDRB, 0xFF hay OUT DDRB, 0xFF, chng ta khng th v lFnh LDI chQ
cho php th[c hiFn trn cc thanh ghi R16,R31 v lFnh OUT khng th[c
hiFn %2Tc v?i cc hVng sN.
V v DDRB=11111111 nn trong tr2Mng hTp ny t9t c8 cc chn c4a
PORTB % s^n sng cho viFc xu9t dW liFu. Lc ny thanh ghi PINB khng c
tc d/ng, thanh ghi PORTB s) l thanh ghi xu9t, ghi gi trO vo thanh ghi ny
s) tc %=ng %;n cc chn c4a PORTB.
ii. PhHn 3: ch2@ng trnh chnh
MAIN:
LDI R16, 0B00000001
OUT PORTB, R16
RCALL DELAY
B&n chQ cHn ch 4 dng trn trong ton b= phHn ch2@ng trnh chnh, tr2?c h;t
MAIN: chQ l 1 nhn do chng ta t[ %.t tn, giNng nh2 1 c=t mNc trong
ch2@ng trnh thi. Dng LDI R16, 0B00000001 th b&n % hiu, chQ c 1
khc biFt nhZ l ti s> d/ng hVng sN d&ng nhO phn cho b&n dD hiu h@n. V
dng OUT PORTB, R16 % xu9t gi trO 0B00000001 c s^n trong R16 ra
thanh ghi PORTB, lc ny chn PB0 c4a chip s) ln 1 (5V) v cc chn cn l&i
s) S mCc 0 (0V). Dng thC 3: RCALL DELAY l lFnh g6i ch2@ng trnh con
DELAY, t&m hon tr2?c khi th[c hiFn cc dng lFnh ti;p theo:
LDI R16, 0B00000010
OUT PORTB, R16
RCALL DELAY
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
Ba dng lFnh ny c:ng giNng ba dng trn, nh2ng gi trO xu9t ra lc ny l
0B00000010, chn PB1 s) ln 5V v cc chn khc xuNng mCc 0V. V cC nh2
th; %;n %o&n cuNi:
LDI R16, 0B10000000
OUT PORTB, R16
RCALL DELAY
RJMP MAIN
Sau khi k;t thCc 3 dng trn chn PB7 s) ln 5V, k;t thc 1 vng xoay. CuNi
cng l quay v; %Hu ch2@ng trnh chnh bVng dng RJMP MAIN
By giM ch+c b&n % %on %2Tc ch2@ng trnh c4a chng ta th[c hiFn viFc g, %
l qut xoay vng cc chn c4a PORTB, n;u chng ta k;t nNi cc chn c4a
PORTB v?i cc LED, chng ta s) c 1 hiFu Cng qut LED xoay vng, chng ta
th[c hiFn %i$u ny bVng phHn m$m Proteus.
iii. PhHn 4 - ch2@ng trinh con DELAY: %o&n ch2@ng trnh ny khng lm g c8
ngoi viFc tr hon 1 kho8ng thMi gian, tuy nhin b&n ch2a th hiu n ngay
%2Tc.
]y chQ l 1 v d/ %@n gi8n, ti cN g+ng th[c hiFn n theo cch dD hiu nh9t cho b&n,
v th; %o&n code c va h@i di dng, b&n hy th[c hiFn l&i %o&n ch2@ng trnh chnh
bVng %o&n code c4a b&n.
Ph6n cu?i cng l bin d-ch 5o)n code thnh file intel hex 5= 5@ vo chip, nhAn
phm F7 5= bin d-ch.
Sau khi bin dOch b&n s) c 1 file tn avr1.hex trong th2c m/c project, chng ta
s) dng file ny %< vo chip sau ny
IV. M ph0ng v d+ cBa chng ta bCng Proteus
Chng ta hy th> nghiFm %o&n ch2@ng trnh c4a chng ta bVng Proteus
- Ch)y Proteus: sau % nh9n vo buton Comonents rLi Pick Devices % ch6n linh
kiFn
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 10: giao di*n Proteus
- ChEn linh ki&n: trong dialog Pick Divices, Keywords nhKp mega8, b&n s) th9y 1
linh kiFn c tn ATMEGA8 bn c>a s< Results, double click vo linh kiFn % %
mang n ra c>a s< Object selector.
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 11: Pick devices
- ] tm %iFn trS, b&n %nh keyword res, ch6n Resistors trong category v
Double click vo link kiFn RES trong Results
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 12: ch.n )i*n tr-
- Th[c hiFn t2@ng t[ % ch6n GREEN - LED bVng keyword green led

Hnh 13: ch.n Green LED
- Sau khi ch6n 3 lo&i linh kiFn cHn thi;t b&n hy nh9n OK v quay v$ c>a sN chnh, khi
% b&n th9y trong c>a s< Object selector nh2 sau:
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 14: cc link ki*n c5n cho m ph6ng
- Thao tc v?i mouse trong Proteus: khc v?i 1 sN ch2@ng trnh v) m&ch %iFn khc,
tho tc mouse trong Proteus h@i l& nn c th gy bNi rNi cho b&n, hy theo h2?ng
d\n sau %y:
o Ch6n linh kiFn % v): left click ln tn linh kiFn trong c>a s< Object
selector
o ].t linh kiFn: Left click ln c>a s< m&ch %iFn Right click ln linh kiFn
trong c>a sN m&ch %iFn s) lm cho linh kiFn % %2Tc bao bSi mu %Z, tCc
b&n %ang ch6n linh kiFn %.
o BZ ch6n linh kiFn th[c hiFn bVng cch Right click ln m=t vO tr trNng trn
c>a s< m&ch %iFn.
o Delete linh kiFn: Right click 2 lHn ln 1 linh kiFn l delete linh kiFn % khZi
c>a s< m&ch %iFn, ho.c Right click 1 lHn ln 1 linh kiFn % %2Tc ch6n tr2?c
% (c mu %Z) c:ng s) xa linh kiFn ny.
o Di chuyn linh kiFn: ch6n linh kiFn tr2?c (right click) v drag % di chuyn
linh kiFn bVng mouse left
o Xoay v lKt linh kiFn: ch6n linh kiFn cHn xoay hay lKt (right click), dng
cc nt cng c/ % xoay ho.c lKt linh kiFn.

Hnh 15: cc nt cng c7 xoay v l4t linh ki*n
o HiFn c>a s< thu=c tnh linh kiFn: r9t nhi$u khi b&n cHn thay %<i 1 sN thu=c
tnh c4a linh kiFn (v d/ gi trO c4a %iFn trS), b&n th[c hiFn %i$u ny trong
c>a s< thu=c tnh c4a linh kiFn. ] hiFn c>a s< thu=c tnh c4a 1 linh kiFn b&n
hy right click tr2?c (% ch6n linh kiFn linh kiFn s) %Z ln) v sau % left
click sau.

AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com
- Theo h2?ng d\n trn, b&n hy click vo ATMEGA8 v %.t linh kiFn ny ln m&ch
%iFn c4a b&n (%.t ln c>a s< lm viFc l?n) bVng cch left - click ln b9t vO tr no trn
c>a s< m&ch %iFn. Th[c hiFn t2@ng t[ cho 8 LED v 1 %iFn trS nh2 hnh v) bn d2?i

Hnh 16: )9t linh ki*n ln mch )i*n
- Ti;p theo l %.t mass cho LED, nh9n vo nt cng c/ Inter sheet Terminal nh2
hnh bn d2?i:
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 17: Nt cng c7 Inter sheet Terminal
- B&n th9y trong c>a s< Object devices c 1 sN thi;t bO, hy ch d;n POWER v
GROUND, %y l nguLn v mass cho m&ch %iFn c4a b&n. Hy ch6n GROUND v
%.t ln m&ch %iFn c4a b&n.
- B2?c ti;p theo, nNi dy: khng cHn cng c/, % nNi dy b&n chQ cHn r mouse %;n
%im cHn nNi c4a linh kiFn, b&n s) th9y xu9t hiFn 1 d9u cho x, lc % hy click
mouse v di chuyn (khng cHn giW mouse) %;n vO tr ti;p theo v click lHn nWa

Hnh 17: n;i dy
- Theo cch ny b&n hy nNi dy cho m&ch %iFn c4a b&n, m&ch %iFn hon chQnh nh2 sau:
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 18: sau khi n;i dy

- By giM hy thay %<i gi trO c4a %iFn trS, gi trO m.c %Onh l 10k, gi trO ny qu l?n,
dng %iFn s) r9t nhZ, khi m phZng b&n s) khng th9y cc LED sang ln. B&n hy
tahy %<i n thnh 100 (100 Ohm). Tr2?c h;t cho hiFn c>a s< thu=c tnh c4a %iFn trS
(right click rLi left click ln %iFn trS), thay %<i resistance c4a n:
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 19: thay )2i gi tr= c?a )i*n tr-
- F@ ch/$ng trnh vo chip Atmega8: hy hiFn c>a s< thu=c tnh c4a chip Atmega8,
trong Program file hy click v tm %;n file avr1.hex m b&n % t&o trong th2
m/c Project sau khi bin dOch. Ch thay %<i thng sN Clock frequency l 1 Mhz

Hnh 20: )2 ch1$ng trnh cho chip
- Hy l2u m&ch %iFn c4a b&n.
- ]y l viFc cuNi cng, ch&y m phZng, s> d/ng thanh cng c/ Play % ch&y m phZng
m&ch %iFn c4a b&n, k;t qu8 nh2 sau:
AUTO.NLU

For more details and questions, contact me: thanhtam.h@gmail.com

Hnh 21:k@t quA m ph6ng
Chng ta k;t thc bi 1 S %y, cc b&n quan tm hy %6c thKt kb, mong rVng bi vi;t ny
gip cho b&n c ci nhn ban %Hu v$ AVR, Trong cc bi ti;p theo chng ta s) tm hiu chi
ti;t h@n v$ AVR, chc cc b&n thnh cng.

You might also like