Professional Documents
Culture Documents
vgrehajtshoz
az
Aritmetikai
logikai egysg (ALU) - t hasznlja fel
Reset ramkr
(ALU)
ragenertor
Soros I/O
Vezrl egysg
Utastsszmll
Idzt/szmll egysg
Prhuzamos I/O
Egyb
Programtrol
Adat trol
PERIFRIK
Cimzs
A PIC16/17
mikrokontroller csald
A PIC mikrokontroller csald gyrtja,
a Microchip Technology Inc. cg
kzpontja az USA Arizona llamban
Chandler-ben tallhat, de a vilg
szmos pontjn vannak rszlegei. A
Mikrochip trtnet 1990-ben a General
2
a mikrokontrollerek ra is alacsony
legyen, nagy szriknl ez mg
kisebb legyen.
Instruments
flvezet
gyrainak
privatizlsval,
a
PIC16C5X
eszkzcsald piacra dobsval indult.
Az elretrs soha nem ltott mrtk
ebben az ipargban. Eladsa szinte
hihetetlen 60-70%-kos mrtkben
nvekszik folyamatosan minden vben
messze az ipari tlag felett, aminek a
kvetkeztben 1993-ra a 8. helyre
lpett el. 1994-rl mg nincs rszletes
adat, de az elzetes hirek szerint a
Philips-et
is
sikerlt
tavaly
megelznie. Az idei vben az els 3
hely valamelyiknek a vromnyosa.
Hogy megrtsk ezen sikeressgnek az
okt, vizsgljuk meg, hogy a
felhasznlk mit vrnak el egy
mikrovezrltl:
EPROM
Program
Memory
Program Counter
Data Bus <8>
Stack1
RAM
Stack2
File Registers
Program
Bus<12>
Addr Mux
Instruction Reg
RTCC
Addr <7>
Indirect
FSR
I/O Ports
STATUS Reg
Mux
MCLR
OSC1
OSC2
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
Ports
A, B, C
ALU
Power on
Reset
W Reg
2. bra
2. OPERANDUS CME
UTASTS SZ
Program-memria
A kzponti egysg a vgrehajtand
utastskdokat a program memribl
olvassa ki. Ez a tr a klnfle ignyek
miatt klnbz tpus: ROM,
EPROM, EEPROM s OTP lehet. Mit
is jelentenek ezek a rvidtsek ?
ROM memria: ennek tartalmt a
gyrts sorn rjk bele a
memriba. Ez - mivel nagy
darabszm esetn a legolcsbb
memriamegolds - akkor elnys,
ha nagy mennyisgben akarjuk az
adott felprogramozott PIC vezrlt
felhasznlni.
Termszetesen
ilyenkor a gyrthoz el kell juttatni
a ROM-ba rand pontos tartalmat,
s ez rjk be a gyrtstechnolgia
adott fzisban a ROM-ba.
EPROM
memria:
ez
a
memriatpus olyan, hogy a
felhasznl kpes ennek tartalmt
3
berni, azaz programozni, majd j
tartalom bersa eltt ultraibolya
fnnyel (pl. kvarclmpa) trlni
(kinapoztatni). Ennek a tpusnak
az
az
elnye,
hogy
a
programfejleszt egyszeren tudja
programjt a PIC EPROM-jba
rva kiprblni, mdostani.
EEPROM memria: hasonl az
EPROM memrihoz, de itt a
trls a kinapozs helyett
elektromos jelekkel trtnik, gy
programfejlesztshez az ilyen
tpus memria mg elnysebb.
OTP memria: az elbbiekben
mr megllaptottuk, hogy a
legolcsbb memriatpus a ROM.
Ennek hasznlata azonban ignyli a
chipgyrtval
val
szoros
kontaktust.
J
lenne
olyan
memria,
amely
olcs,
a
felhasznl
ltal
egyszer
programozhat, de nem kell ezt a
programozst
a
gyrtnl
elvgeztetni. A megolds : az OTP
(nem takarkpnztr!) memria,
(OTP = One Time Programming
(egyszer progra-mozhat) amely az
elbb lert kvetelmnyeknek
eleget tesz.
A
PIC
kontrollerek
esetben
mindegyik kialakts ltezik, amely
nagyon
kltsgkml
megoldst
biztost.
Az EPROM, EEPROM, s OTP
tpusok
programozsa
nagyon
egyszer:
a
Microchip
a
programozsra kt megoldst ajnl: a
gyorsabb
prhuzamos,
s
az
egyszerbb soros mdszert. Soros
programozsnl a program memriba
Soros programozs
Csak 2 lb kell a programozshoz
MCLR/VPP
VPP
VDD
VDD
VSS
VSS
RB6
Clock
RB7
PIC16CXX
Data/in/out
Command in
Parancsok:
- Load data (adatrs)
- Read data (adatolvass)
- Begin programming (programozs indul)
- End programming (programozs vge)
- Increment address (memriacm nvelse)
3. bra
LP-
XTHS-
Adatmemria
RC-
RESET ramkr
4
nagy mrtkben cskkenti, mert
esetleg a rendszert tbbszr ki be kell
kapcsolgatni. Ezt elkerlend a PICekben tp-eszltsg bekapcsolsa utn
egy specilis folyamat jtszdik le:
Bekapcsolskor
a
tpfeszltsg
emelkedik. Amikor egy adott szintet
elr, egy bels, tokon belli
oszcilltorrl
mkd
szmll
ramkr elindul (a neve DEVICE
RESET TIMER vagy POWER UP
TIMER) s tipikusan TPWRT=18 msec
ideig mg fenntartja a tok RESET
llapott. Ez id alatt kpes a tokot
mkdtet
kls
oszcilltoros
rajelgenrtor
elindulni
s
frekvencijt stbilzlni. s ha ez id
alatt mgsem stabilizldik a kls
oszcilltor? Akkor baj van. Ezrt az
jabb PIC tpusoknl (16CXX,
17CXX) a RESET folyamatot mg egy
egy jabb ksleltetst biztost idzt
megnyjta: ez az OSC START UP
TIMER .
A PIC kontrollereknl egy kln lb (a
neve: MCLR) alacsony, majd magas
szintre lltsval is elidzhet
brmikor egy RESET.
Ha erre nincs igny (ami az
alkalmazsok tbbsgnl igaz), akkor
Utp
PIC
PIC
OSC1
fosc/4
OSC2
LP, XT, HS rajel kialakts
Kls rajel
PIC
OSC1
OSC1
OSC2
OSC2
RC rajel kialakts
5. bra
rajel megoldsok
W regiszter
ALU
ltalnosan
felhasznlhat
regiszterek
(File registers)
(RAM)
(24-72)
4. bra
A
mikrokontroller
folyamatosan
mkdse sorn egy ciklikusan
ismtld utasts sorozatot hajt vgre.
Egyik utasts jn a msik utn, s
abban az esetben ha valamilyen kls
ok miatt (ramkri zavar) az utasts
tvesen kerl beolvassra, ez a
ciklikussg megsznik, s a fut
program "eltrl", s nem tr vissza a
Tpfesz (VDD)
VDD
MCLR
MCLR
TPWRT
Power-up
Timer
PIC
TOST
OSC Start-up
Timer
Reset
Mkds
6. bra
A
kvetkezkben
rviden
sszefoglaljuk a PIC kontrollerekben
alkalmazott legfontosabb perifria
egysgeket, nhnyrl majd a konkrt
alkalmazsok ismertetsekor ejtnk
nhny szt.
Ktllapot ki-bemeneti egysgek ms nven digitlis I/O portok: Mivel
a
kontroller
binris
adatokkal
dolgozik, a legkzenfekvbb, ha a
klvilggal val kapcsolat is ilyen
ktllpot jelekkel valsul meg. Mivel
csak egy konkrt alkalmazs esetn
tudjuk mr pontosan, hogy hny be-
"CLRWDT"
Trls
Bels RC
oszcilltor
Tlcsorduls
8 bites szmll
Oszt
tok
resetelse
7. bra
A
kontroller
a
klvilggal
kapcsolatban ll adatok alapjn
mkdik, s az eredmny is oda kell
hogy kerljn.
ltalnosan egy
perifrilis egysg a mkdse sorn
ngy tpus jelet hasznl:
bemen adatok - ezek jnnek a
Kls impulzus
bemenet
Bels
rajel
5
illetve kimenetre van szksg, ezrt a
PIC-ek esetn az I/O vonalak
mindegyike
akr bemenet, akr
kimenet lehet, s ezt a programfutskor
lltjuk be. Ezen I/O vonalaknak a
RAM - ban lv regiszterek felelnek
meg: az irnyregiszterek bitjeibe rt 0k jelzik, hogy a hozztartoz vonal
kimenet, 1-esek pedig az adott I/O
vonalat bemenetre programozzk. Az
adatregiszterek hordozzk az adatokat.
A PIC kontrollerek esetn a kimenetek
terhelhetsge
nagy:
kpesek
kzvetlenl LED-eket meghajtani.
Idzt/szmll egysg (RTCC): (8.
bra) Nagyon sok feladatnl van
szksg idztsre illetve impulzusok
szmllsra. Ezt egy kzs egyszerre
csak
egyik
mdon
hasznlhat egysg valstja meg: egy
szmll ramkr: a lptet jel forrsa
vagy kls impulzus (szmlls) vagy
a bels rajel (idzts) lehet. Egy
eloszt alkalmazsval bvthetjk az
egysg "mrsi tartomnyt". A
szmll rtke mindig a RAM RTCC
regiszterben tallhat, ami rhat
vagy olvashat. Az ELOSZT feladata
a
rugalmasabb
alkalmazhatsg
megvalstsa,
amelynek
osztsviszonya
szintn
programozhat.
A
legegyszerbb
kialakts
PIC16C5X vezrlk esetn ms
perifrit a kontroller nem tartalmaz.
A PIC vezrlk fejlettebb vltozatai
egyb perifrikat is tartalmaznak:
rviden felsorolva:
A/D talakt: a bemeneti analg jelet
alaktja t digitlis adatt,
PWM talakt: egy regiszterben lv
binris rtktl fgg a kimenetn
megjelen ngyszgjel 1 ill. 0
szintjnek arnya,
Capture regiszter: egy kls jel
megjelensekor a bels szmll
rtke ebbe a regiszterbe rdik,
Tlcsorduls
ELOSZT
RTCC
8 bites szmll
8 bites szmll
8. bra
Megszaktsok:
Ha egy kontrollerrel
valamilyen
esemny ltrejttt kivnjuk rzkelni,
ezt szoksos mdon ktflekppen
tehetjk meg. Az els mdszernl a
kls esemnyek ltrejttt egy
bemenet
llapotnak figyelsvel
rzkelhetjk.
Pldul ilyen megolds alkalmazhat,
mikor egy billentyzetrl akarunk
beolvasni.
Brmelyik billenty megnyomsakor a
billentyzet kimenetn lv "adat
rvenyes" jel szintet vlt. Ha ezt egy
bemeneti portra ktjk, akkor az
llapotnak
a programbl
val
figyelse lehetv teszi a billenty
megnyomsnak
az rzkelst,
majd a kd beolvasst. Ezt a
mdszert
ltalnosan
elterjedt
kifejezssel
"polling"-nak
hvjk.
Alkalmazsa azonban lelasstja a
rendszer
tnyleges
mkdsi
sebessgt, hiszen a mikrokontroller
idejnek egy rszt azzal tlti, hogy
ciklikusan megvizsglja a kijellt
bemeneti bit llapott.
Sokkal szerencssebb, ha az esemny
maga jelzi a processzor szmra
llapotnak megvltozst. Ez a
megolds a megszakts vagy ismert
angol kifejezssel az interrupt (e.:
interrapt). (Szoktk IT-nek rvidteni).
A
megszakts
megszaktja
az
utastsok sorozatnak (a program)
vgrehajtst, s a processzor egy
gynevezett megszaktsi alprogramot
hajt vgre, ami az esemny kezelst
elvgzi, majd ennek befejeztvel a
processzor visszatr a megszaktott
program vgrehajtsra.
Az elbbi pldnal maradva, a
billenty megnyomst jelz "adat
rvnyes" jel megszaktst okoz, a
megszaktsi alprogram elvgzi a
lenyomott billentyhz tartoz kd
6
Megjegyzs: a tokok programozsa
sorn egy norml mdon el nem
elrhet memriarekeszbe rjuk be
nhny
bellthat
hardver
tulajdonsgot definil biteket. Ezek:
!"
!"
!"
!"
az oszcilltor tpusa,
WDT engedlyezse,
Power-up timer engedlyezse,
kiolvashatsg tiltsa.
SEBESSG
EPROM
2. A PIC mikrovezrlk
utastskszlete
TIPUSOK
Utastshossz (bit):
Jellemzk
PIC16CXX
12
54
20
512
54A
20
512
R54
20
55
20
512
14
56
20
1K
57
20
2K
57A
20
512
ROM
PIC17CXX
16
58A
20
2K
61
20
1K
64
20
2K
71
20
1K
74
20
4K
72
36
128
36
192
84
10
2K
1K
36
64
EEPROM
25
RAM
25
25
25
25
72
72
EEPROM
1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 3+WDT 1+WDT 3+WDT 1+WDT
IDZTK
CAPTURE/COM1
2
PARE/PWM
SPI/I2C
SOROS PORT
PRHUZAMOS
SLAVE PORT
IGEN
8 bites A/D
MEGSZAKTSOK
12
I/O vonalak
33
33
16C54/56
RA2
RA1
18
RA3
RA0
17
RTCC
OSC1
16
OSC2/CLKOUT
15
MCLR
VSS (GND)
VDD
14
RBO
RB7
13
RB1
RB6
12
RB2
RB5
11
RB4
10
RB3
12
20
12
20
20
3
13
12
8
33
IGEN
8
4
13
12
33
4
13
2.5-6.2 2.5-6.2 2.0-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 3.0-6.0 2.5-6.0 3.0-6.0 3.0-6.0 2.0-6.0
Tpfesz (V)
Utastsszm
U4
12
42
20
2K
33
33
33
33
16C55/57
U5
RTCC
VDD
33
U2
26
16
OSC1
C7 25
C6 24
15
OSC2
NC
VSS
NC
RA0
RA1
RA2
RA3
10
RB0
11
RB1
12
RB2
13
RB3
RB7 17
RB6 16
14
RB4
RB5 15
OSC 2
C5 23
C4 22
C3 21
C2 20
C1 19
C0 18
35
16C84
MCLR 28
OSC 1 27
33
MCLR
RA0
RA1
RA2
RA3
RA4
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
17
18
1
2
3
6
7
8
9
10
11
12
13
U1
4
16
15
35
35
16C71
MCLR
OSC1
OSC2
RA0
RA1
RA2
RA3
RA4
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
17
18
1
2
3
6
7
8
9
10
11
12
13
35
U3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
4+WDT
2
SCI
11
33
4.5-5.5
55
17C42
VDD
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
VSS
RB0/CAP1
RB1/CAP2
RB2/PWM1
RB3/PWM2
RB4/TCLK12
RB5/TCLK3
RB6
RB7
OSC1
OSC2/CLKOUT
35
232
RD0
RD1
RD2
RD3
RD4
RD5
RD6
RD7
MCLR/VPP
VSS
RE0/ALE
RE1/OE
RE2/WR
TEST
RA0/INT
RA1/RT
RA2
RA3
RA4/RX/DT
RA5/TX/CK
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
No Operation
Move W to f
Clear W
Clear f
Subtract W from f
Decrement f
Inclusive OR W and f
AND W and f
Exclusive OR W and f
Add W and f
Move f
Complement f
Increment f
Decrement f, skip if zero
Rotate right f
Rotate left f
Swap halves f
Increment f, skip if zero
Bit clear f
Bit set f
Bit test f, skip if clear
Bit test f, skip if set
NOP
MOVWF
CLRW
CLRF
SUBWF
DECF
IORWF
ANDWF
XORWF
ADDWF
MOVF
COMF
INCF
DECFSZ
RRF
RLF
SWAPF
INCFSZ
f
f
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f,d
f,d
BCF
BSF
BTFSC
BTFSS
f,b
f,b
f,b
f,b
SLEEP
CLRWDT
RETLW
RETFIE
RETURN
CALL
GOTO
MOVLW
IORLW
ADDLW
SUBLW
ANDLW
XORLW
k
k
k
k
k
k
k
k
k
Jellsek::
Parallax-fle utastskszlet
ADD
fr,#lit
ADD
W,fr
AND
fr1,fr2
AND
W,fr
CJA
fr1,fr2,addr9
CJB
fr,#lit,addr9
CJBE
fr1,fr2,addr9
CJNE
fr,#lit,addr9
CLR
fr
CLRB
bit
CSA
fr1,fr2
CSB
fr,#lit
CSBE
fr1,fr2
CSNE
fr,#lit
DECSZ fr
INC
fr
JC
addr9
JMP
W
JNZ
addr9
LJMP* addrll
MOV
fr1,fr2
MOV
OPTION,fr
MOV
!port
fr,fr
MOV
W,fr
MOV
W,++fr
MOV
W,>>fr
MOVB bitl,/bit2
NEG*
fr
NOT
W
OR
fr,W
RET
RR
fr
SETB
bit
SNB
bit
STC
SUB
fr1,fr2
SWAP fr
XOR
fr,#lit
XOR
W,#lit
ADD
fr1,fr2
ADDB* fr,bit
AND
fr,W
CALL
addr8
CJAE
fr,#lit,addr9
CJB
fr1,fr2,addr9
\CJE
fr,#lit,addr9
CJNE
fr1,fr2,addr9
CLR
W
CLZ
CSAE
fr,#lit
CSB
fr1,fr2
CSE
fr,#lit
CSNE
fr1,fr2
DJNZ
fr,addr9
INCSZ fr
JMP
addr9
JNB
bit,addr9
JZ
addr9
LSET* addrll
MOV
fr,W
MOV
OPTION,W
MOV
!port
fr,W
MOV
W,/fr
MOV
W,--fr
MOV
W,<>fr
MOVSZ W,++fr
NOP
OR
fr,#lit
OR
W,#lit
RETW lit,1it,...
SB
bit
SKIP
SNC
STZ
SUB
fr,W
SZ
XOR
fr1,fr2
XOR
W,fr
ADD
fr,W
AND
fr,#lit
AND
W,#lit
CJA
fr,#lit,addr9
CJAE
fr1,fr2,addr9
CJBE
fr,#lit,addr9
CJE
fr1,fr2,addr9
CLC
CLR
WDT
CSA
fr,#lit
CSAE
fr1,fr2
CSBE
fr,#lit
CSE
fr1,fr2
DEC
fr
IJNZ
fr,addr9
JB
bit,addr9
JMP
PC+W
JNC
addr9
LCALL* addrll
MOV
fr,#lit
MOV
OPTION,#lit
MOV
!port fr,#lit
MOV
W,#lit
MOV
W,fr-W
MOV
W,<<fr
MOVB bit1,bit2
MOVSZ W,--fr
NOT
fr
OR
fr1,fr2
OR
W,fr
RL
fr
SC
SLEEP
SNZ
SUB
fr,#lit
SUBB* fr,bit
TEST
fr
XOR
fr,W
3. Alkalmazsok fejlesztsnek
lpsei
A cikksorozat eddigi rszeiben
sszefoglaltuk azokat az alapvet
hardver
ismereteket,
amelyekre
alapozva hozzfoghatunk kisebb, PIC
mikrokontrolleres
rendszerek
fejlesztshez. A mikrokontrolleres
rendszerek fejlesztsvel kapcsolatos
alapvet nehzsg abban van, hogy
egy ilyen feladat megoldsa ketts
tevkenysget ignyel:
KIMENETEK
DEFINILSA
Ehhez hasonl krdseket kell
megvlaszolni a rendszer kimeneteinek
definilsakor is.
A
mikrokontrollert
tartalmaz
rendszerek ltrehozsakor a kvetkez
lpseket kell elvgeznnk:
A feladat megfogalmazsa.
ramkri tervezs.
A mkdtet program megtervezse.
Kdols.
Programvizsglat
(tesztels),
hibakeress
Dokumentls.
A feladat megfogalmazsa
A mikrokrontrollerrel megoldand
feladatok szmos tny s krlmny
pontos rgztst ignylik. Fontos
annak az alapvet krdsnek a
tisztzsa, hogy valban szksges-e
mikroprocesszoros
rendszer
alkalmazsa.
BEMENETEK DEFINILSA
Elszr a rendszer bemeneteit kell
9
Melyik hibk a legvalszinbbek?
(Ha emberi beavatkozs is van, az
emberi hibk a leggyakoribbak.)
Milyen hibk maradhatnak rejtve
egy ideig a rendszerben?
A rendszer hogyan tudja a hibt a
legkevesebb
kvetkezmnnyel
elhrtani?
AZ EMBERI TNYEZ Sok
mikroprocesszor
alap
rendszer
emberi kzremkdssel dolgozik. Az
ilyen rendszerek tervezsekor ezt a
RENDSZERFEJLESZTS
..
A KVETELMNYEK ALAPJN
A RENDSZERTERV ELKSZTSE
A HARDVER KIALAKITSA
PROGRAMTERVEZS
KDOLS
A PROGRAM MEGIRSA
(EDITOR)
A PROGRAM FORDITSA
(ASSEMBLER)
RSZEK KIPROBLSA
(SZIMULTOR)
KIPRBLS, TESZTELS
HIBAKERESS
VGE
A RENDSZERFEJLESZTS BLOKKVZLATA
Milyen
beviteli
mdszer,
beavatkozs a legtermszetesebb a
kezel szmra?
Milyen megjelentsi, visszajelzsi
mdszert
a
legclszerbb
alkalmazni (vizulis, akusztikus,
mechanikus jezsek)?
A kezel hogyan kap jelzst a
rendszer hibs mkdsrl?
Melyek a kezel ltal elkvetett
ramkri tervezs
Mivel a legtbb alkalmazsban a PIC
mikrokontrollernl csupn az rajel
ellltshoz kell kls alkatrsz, ezrt
az ramkri tervezs a klvilghoz
kapcsold
perifriaramkrkre
korltozdik. A megvlaszoland
krdsek:
Mennyi adat/program memria
szksges (tpusvlaszts!),
hny be/kimeneti ramkrt kell
hasznlni (tpusvlaszts!),
milyen egyb kiegszt ramkrk
szksgesek az adott feladat
megoldshoz. Lpsei:
A hardver megtervezse, a
kapcsolsi rajz elksztse,
a rajz alapjn a nyomtatott
ramkri lemez elksztse,
az alkatrszek beltetse a lemezre,
a ksz hardver bemrse, az
egyes funkcik
helyessgnek
ellenrzse.
Nagyon sok alkalmazsnl elegend
"csupalyuk"
krtyn
kzzel
sszehuzalozni az ramkrket.
A mkdtet program megtervezse.
Soroljuk fel a programtervezsnl
hasznlt legfontosabb alapelveket:
Kis lpsekben trtn halads, s
fejleszts.
A nagyobb rszfeladatokat, kis,
egymstl logikailag elklnl
modulokbl kell felpteni, mivel
ezek nllan
tesztelhetk s
esetleges megvltoztatsuk nem
ignyli
a
teljes
rendszer
jratervezst.
A
feladatnak
megfelel
programvezrls lehetleg egyms
Kdols.
A kdols sorn a feladat s a ksztett
programterv
alapjn
megrjuk
programot.
AZ ASSEMBLY PROGRAMOZS
ALAPJAI
Minden
szmtgp,
brmilyen
bonyolult programot is hajtson vgre,
vgs soron a binris szmokat
utasitsknt rtelmezve vgzi el a
mveleteket a szintn binris formj
adatokon. Ez teljesen nyilvnval,
mivel a gpben csak binris 1 s 0
alak
informci
feldolgozsa
lehetsges. Az ilyen 0, 1 szmok
formjban
elll
programot
neveznk gpi kd programnak.
A gpi kdon trtn programozs
azonban az ember szmra rendkvl
nehzkes, mivel meg kell tanulni a
klnbz utastsoknak megfelel
binris, oktlis vagy hexadecimlis
szmrendszerbeli
szmokat
(utastskdok), s ki kell szmtani a
programban szerepl cmek abszolt,
vagy relatv rtkeit.
A gpi kdu programozs ezen
nehzsgei az assembly (esszembli)
szinten
trtn
programozssal
kszblhetk ki.
Az assembly nyelv tulajdonkppen a
legegyszerbb programozsi nyelv. Ez
a nyelv lehetv teszi, hogy azokat az
utastskdokat, amelyeket a gpi
10
kdban szmmal adtunk meg, knnyen
megjegyezhet nevekkel rjuk le.
Ezeket a kdneveket - melyek az
utasts ltal vgrehajtott funkci
megnevezsnek
rvidtsei
mnemonikoknak nevezzk (mnemonik=emlkeztet). Az assembly nyelv
lehetv teszi azt is, hogy a program
egyes belpsi pontjaira, trol
rekeszeire, bjtokra, szavakra (1 sz=2
egymst kvet bjt), valamint a
regiszterekre ugyancsak nevekkel
hivatkozzunk.
Ezen
neveket
szimblumoknak
hvjuk.
A
szimblumokat kt csoportba osztjuk.
Az egyik csoportba tartoznak az
utasts s direktva mnemonikok (ld.
ksbb!), valamint a regiszterek nevei.
Ezek az un. lland szimblumok,
vagyis ezeket tnevezni, vagy j
neveket adni nem lehet. A msik
csoportba tartoznak a belpsi pontok
nevei (cimkk), s az egyes
trolrekeszek nevei. Ezek az un.
felhasznli szimblumok. Ezek nem
rgztettek, a felhasznl maga dnti
el,
hogy
az
ltala
hasznlt
szimblumokat hogyan nevezi el.
Azzal, hogy a klnbz belpsi
pontok s rekeszek nevekkel lthatk
el, lehetsg nylik arra, hogy a
felhasznl (programoz) a program
ksztsekor megszabaduljon a gpi
kdu
programozsnl
szksges
cmszmtstl. Ezzel a gpi kd
programozs fent emltett kt htrnyt
kikszbltk.
Nem
kell
az
utastsokhoz tartaz szmrtkeket
memorizlni,
s
nem kell a
programban cmeket szmolni.
Ezeket a teendket a programoz
vllrl egy specilis program, egy un.
"fordt program" veszi t. Ennek a
programnak
a
feladata,
hogy
"megrtse", s gpi kdu programra
lefordtsa
az
ltalunk
megrt
szimblikus programot. Az assembly
nyelv esetben ezt a fordt programot
assemblernek (esszemblernek) hvjuk.
Az eredeti angol sz sszelltt
(assembly=sszelltani) jelent, ami jl
tkrzi az assembler feladatt: a gpi
kdu program sszeszerkesztst,
ssszelltst a forrsprogram alapjn.
Forrsprogramnak
nevezzk
az
ltalunk szveges formban megrt,
szimblumokat tartalmaz programot.
Az assembler teht megrti s gpi
kdok sorozatv -- un. trgy
CM
UM
OM
;MM
(CM = CMKEMEZ
UM = UTASTSMEZ
OM = OPERANDUSMEZ
MM = MEGJEGYZSMEZ)
fordtsi cm megadsa (a
memriba hova kerljn a
program)
DEFB 1 bjt definilsa
DEFS trterlet definilsa
DEFW 2 bjtos sz definilsa
DEFM szveg definilsa
EQU szimblumnak rtkads
END program vge
11
megjegyzs
mez
kezdett
a
pontosvessz ";" karakter jelzi s a
sorvge "CR" karakterig tart.
Az utastssorokban a mezk kttt
vagy szabad formban kvethetik
egymst. Kttt mezformtum esetn
az egyes mezknek elrt pozcikon
(tabultor pozcik) kell kezddnik,
mg szabad mezformtumnl a mezk
vgt specilis elvlaszt karakter
(kettspont, szkz, pontosvessz)
jelzi.
A
PIC
assemblerben
hasznlt
utastsok mnemonikjt, s magukat az
utastsok mkdst majd a pldknl
ismertetjk.
Feltteles assemblls, makrk
Az OPERANDUSMEZ-ben kell
megadni az utastsmezben szerepl
utasts vagy direktva operandusait.
Az operandusmezben 0, 1 vagy 2
operandus llhat. Kt operandus
esetn,
azok
egymstl
val
elvlasztsra vesszt kell hasznlni.
Az operandusmezben a kvetkez
elemek (melyek kifejezseket is
alkothatnak) szerepelhetnek:
konstans (rtke lehet decimlis,
hexadecimlis, oktlis vagy binris,
melyet a szmot kvet H,O, vagy
B- betk jellnek.
Ha a
hexadecimlis
szm
A-F
karakterrel kezddik, akkor a
bevezet nulla hasznlata ktelez
pl. 0DH).
szvegkonstans
(ltalban
idzjelek, vagy aposztrofok kz
rt karaktersorozat).
szimblum (ktelezen betvel
kezdd, max. 6 vagy 8
alfanumerikus karakterbl ll nv
(lsd cimke)).
regiszternv (A kontroller bels
regisztereinek
szimblikus
elnevezsei.
felttelkdnv (A processzor bitek
szimblikus elnevezsei.
mveleti jelek: +, -, *, /, logikai S,
logikai VAGY
specilis jelek: $ a helyszmlal
aktulis rtknek jellse, () az
rtk
indirekt
rtelmezsnek
jellse
MEGJEGYZS MEZ-be sajt
megjegyzsnket,
magyarz
szvegnket helyezhetjk el. A
ENDIF
Az assembler programozs sorn igen
gyakran elfordul, hogy ugyanazt az
utastssorozatot tbbszr hasznljuk a
programunkban. Az un. makrk
alkalmazsval
elkerlhet
ilyen
utastssorozatok ismtelt leirsa,
mivel a makrk lehetv teszik azt,
hogy egy utasitssorozathoz egy nevet
rendeljnk, s a tovbbiakban erre a
sorozatra a hozzrendelt nvvel
hivatkozzunk. A programunk elejn
definiljuk a makrt, ltalban a
kvetkez mdon:
MAC1: MACRO
; MAC1 A MAKR NEVE
.....
Programvizsglat (tesztels),
hibakeress
A
programokban
val
hibk
feldertse
s
kikszblse
a
programozknak egyik leggyakrabban
vgzett
tevkenysge, mert
a
programokban hibk vannak (az igen
rvid programoktl eltekintve). Mivel
a program a valsgban nagy
sebessggel fut, ezrt meg kell tallni
azokat a lehetsgeket hogy a futst
ellenrizni tudjuk. Ennek a kvetkez
kt gyakran hasznlt megoldsa a
kvetkez:
Lpsenknti programvgrehajts
(single-step) Ilyenkor a mikroprocesszor az utastsokat egyenknt,
egyms utn hajtja vgre, egy jelre
mindig csak egyet. Ilyenkor minden
lps utn ellenrizni tudjuk a
programunk mkdst.
Trspont A trspont, vagyis a
programfuts adott pontban trtn
felfggesztse, igen sok feltteltl
fgghet. Milyen felttelek adhatk
meg?
adott cm (a cmvonalak adott
llapota),
bizonyos adat (az adatvonalak
adott llapota),
adott vezrlvonalkombincik,
az elzek kombincii.
Ezeket a megoldsokat ltalban a
program mkdst utnz szoftver
szimultorban valstjk meg.
A
szoftver
szimultor
egy
szmtgpen
fut,
ltalban
valamilyen magas szint nyelven
megrt program, ami az eredeti
mikrokontroller minden utastst
szimullja,
figyeli a regiszterek,
jelzbitek, memriahelyek tartalmt,
azok vltozst. Ez termszetesen
paprral s ceruzval is megtehet, de
nagyon fradtsgosan. Egy ilyen
szimultor
legfontosabb
tulajdonsgai:
Trspont
elhelyezse
a
legklnflbb felttelek teljeslstl fggen.
Regiszterek s memria listzsa.
Nyomkvet kpessg, ami egy
12
regiszter
vagy
memriahely
tartalmt rja ki, ha azt a program
hasznlja.
A regiszterekbe tetszleges rtk
tlthet s onnan folytathat a
program futsa.
Pldaknt a 11. brn a PIC-ekhez a
Parallax cg ltal kifejlesztett PSIM
szimultor kpernykpt mutatjuk be:
A Microchip hasonl termknek
neve: MPSIM.
Dokumentls
A programozk tbbsge igazn nem
tekinti fontosnak sajt munkjnak
dokumentlst. Az igaz hogy ez
vdelmet s nyjthat az illetktelen
kivncsiskodk ellen, de sajnos
munkastluss is vlhat, s idvel ez a
programoz sajt s kollginak a
munkjt is megnehezti.
A
programfejleszts
egyik
legfontosabb rsze a pontos, a
programot jl ler dokumentci. A
dokumentcinak a programfejleszts
egsz folyamatt vgig kell kisrnie, a
programhasznlatot s a program
tovbbfejlesztst is tmogatnia kell.
Egy rosszul dokumentlt programot
nagyon nehz karbantartani, hasznlni,
vagy tovbbfejleszteni. Azrt, hogy
egy program jl dokumentlt legyen, a
kvetkez
tancsokat
clszer
megfogadni:
A program vilgos, egyszer
felpts legyen, minl kevesebb
vezrlstadst
(ugrst)
tartalmazzon.
Olyan azonostkat, cimkket s
neveket hasznljunk, ami jl
tkrzi funkcijukat.
Kerljk a betszavakat, mert nem
mindenki szmra nyilvnval a
rvidts (pl. SBR=soros bemeneti
rutin).
Az elbbiekben rviden sszefoglaltuk azokat a legfontosabb ismereteket
ami alapjn az alkalmazsok mindenki
szmra rthetv vllnak. Az
alkalmazsokat
bemutatsa
eltt
sszefoglaljuk,
hogy
milyen
eszkzkre van szksg a PIC
eszkzkkel trtn fejlesztshez:
A legfontosabb, s elengedhetetlen: a
FONTOS
REGISZTEREK
KLN IS
13
BELS RAM
(FILE REGISTERS)
STTUSZBITEK
000
mov
!ra, #00000000b ;inicializalas
001
002
mov
!rb, #0
;kimenet
003
004
inc
rb
005
mov
szaml,#0ffh
F1-HELP F2-BRKPT F3-CLEAR F4-HERE F5-TIME F6-GO F7-STEP F8-NEXT F9-RUN F10-RST
Trspont
bellts
IO portok
llapota
Forrsprogram
Lpsenknt
programvgrehajts
10. bra
MICROCHIP
PARALLAX
*.SRC
Szvegszerkesztvel
forrskd megrsa
*.ASM
PASM
MPASM
*.LST - szimultornak
PSIM program
Clearview ICE
*.OBJ - szimultornak
MPSIM program
PICMASTER ICE
*.OBJ - programoznak
PIC16Cxx Programmer
TrueFlight
*.HEX - programoznak
Assemblls
A fordts eredmnye
INHX8M formban
INHX16 formban