You are on page 1of 13

Dr.

Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja

PIC mikrokontrollerek alkalmazstechnikja


Bevezets - a sorozat el ...
A kvetkezkben a Rditechnika
hasbjain egy tbb rszes sorozatot
indtunk, amelynek clja a korszer
elektronikai ismeretek megismerte-se,
azon
terlet,
amely
a
mikrovezrlkkel vagy ms nven
mikrokontrollerekkel foglakozik.
A trtnetet jl ismerjk: az
elektroncsvek utn jttek a flvezetk
majd az ezekbl felpl integrlt
ramkrk. Az integrltsgi fok
nvekedsvel lehetv vlt egyre
bonyolultabb ramkrk kialaktsa,
megjelent az egy lapkn kialaktott
szmtgp kzponti egysg: a
mikroperocesszor. Ahhoz hogy egy
teljes
mkd
egysget,
egy
szmtgpet
kialaktsunk,
az
informcifeldolgozs
ltalnos
modellje szerint memrira s bekimeneti egysgekre is szksg volt.
Ezeket az egysgeket kln lapkkon
helyeztk el, s ezek kapcsolatt
nyomtatott ramkri huzalozsokkal
oldottk meg. Igy megjelent az egy
NYK-lemezen felptett szmtgp:
a Single Board Computer. Az
integrltsgi fok tovbbi nvekedse ami mg tbb tranzisztor egy lapkn
val elhelyezst jelentette - kt
irnyban val fejldst eredmnyezett:
egyrszt
biztostotta
hogy
a
mikroprocesszor mg sszetetebb,
tbbet tud eszkzz alakuljon (Intel:
8080 -> 8085 ->8086 ->80286 >80386 ->80486 ->Pentium ->P6),
msrszt lehetv vlt hogy a kzponti
egysg (a processzor) mell az eddig
kln lapkn kialaktott elemeket
(memria, perifrik) is elhelyezzk. A
gyrtstechnolgia lehetv tette, hogy
az
ramkrkkel
szembeni
kivnsgok: pl. kis fogyaszts, nagy
sebessg is megvalsulhassanak.
Az ilyen mdon, egy tokban
elhelyezett
kzponti
egysget,
memrit, ki-bemeneti egysgeket s
jrulkos ramkrket tartalmaz
rendszert
hvjuk
egytokos
mikroszmtgpnek vagy ms nven
mikrokontrollernek (1. bra).
A Kzponti egysg (CPU) feladata a
Programtrol-ban trolt utastsok
vgrehajtsa,
az
utastsok

vgrehajtshoz
az
Aritmetikai
logikai egysg (ALU) - t hasznlja fel

cikk rjban...) hogy tl fognak jutni


ezeken a nehzsgeken.

Aritmetikai - logikai egysg

Reset ramkr

(ALU)
ragenertor

Soros I/O

Vezrl egysg

Utastsszmll

Idzt/szmll egysg

Prhuzamos I/O
Egyb

Kzponti egysg (CPU)

Programtrol

Adat trol
PERIFRIK

Cimzs

1. bra: A mikrokontroller bels felptse

a szmtsokhoz. A Vezrl egysg


felels az egyes rszegysgek jeleinek
temezsrt.
Az
ragenertor
szolgltatja a rendszert mkdtet
rajelet. A Reset ramkr az egsz
rendszer alaphelyzetbe hozst vgzi
el
pldul
tpfeszltsgre
kapcsolskor. A mikrokontroller a
perifriin keresztl kapcsoldik a
krnyezethez, azaz a klvilghoz. Az
Utastszmll tartalma hatrozza
meg, hogy a programtrol melyik
regiszterbl olvassuk ki az utastst
tartalmaz kdot.
A mikrokontrollerek felhasznlsa kt
tevkenysget ignyel:
meg kell tervezni a feladatnak
eleget tev ramkrt,
meg kell rni a kontroller ltal
vgrehajtand programot, amivel
az adott feladat megoldhat.
A lapot olvask kzl sokan taln
most kezdik keresni azt a sarkot, ahova
az jsgot vghatjk. Ugyanis az
ramkrptsen nevelkedettek -"a
hardveresek" - sokszor nehezen
kpesek egy mdszerben ms,
"szoftveres" tevkenysget alkalmazni,
pedig a mikrokontrollerek esetben ez
a
kt
tevkenysg
szorosan
sszefondik.
Termszetesen
a
programozs "mvszet" is lehet, de
bizonyos
alapismeretek
megtanulsval, elre megadott mintk
alkalmazsval,
brki
kpes
mesterember szintjn a programozst
megtanulni, s hatkonyan hasznlni.
Ezrt krem, hogy a sarkok mregetse
helyett bzzanak magukban (meg a

A vilgon szmos mikrokontroller


tpus
tallhat.
A
sorozat
megmaradhatna
egy
ltalnos
megkzelts szintjn is, de ezen
tpusok kztt van egy olyan - az
eladsi adatok szerint dinamikusan
fejld - tpus, amely egyre
npszerbb. Ezt alacsony ra, nagy
teljestmnye, rugalmassga, knny
fejleszthetsge s a hozz adott vagy
knnyen hozzfrhet dokumentlt
alkalmazsok nagy szma biztostja.
Nem elhanyagolhat az tny sem, hogy
haznkban ez a tpus knnyen
hozzfrhet a ChipCAD Kft-nl.
Ez a tpus a Microchip cg ltal
gyrtott PIC csald. ( Itt a PIC a
Programmable IC = programozhat IC
rvidtse.) Csald azrt, mert tbb ga
s tagja van, amelyek hasznlatval az
alkalmazsok r/teljestmny viszonya
a legkedvezbb tehet.
A sorozat ezen tpus alkalmazs
technikjt kivnja bemutatni, sok sok konkrt alkalmazson keresztl.
Az
alkalmazstechnikai jellegbl
addan
felhasznlunk
minden
rendelkezsre ll informcit az
ismeretek megfelel szint kzlsre.
Mivel a sorozat szerzje egy fiskoln
dolgoz oktat, ezrt a sorozat irsnl
igyekezett
a
didaktikai
kvetelmnyeket is figyelembe venni,
azaz az j ismereteket mindig a mr
megmagyarzottakra
alapozni.
A
terjedelem szabta korltok miatt ez
termszetesen
csak
korltozott
mrtkben volt lehetsges, ezrt
folyamatosan
utalunk
azon
irodalmakra amelyekben az ismertetett

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


informcik rszletesen megtallhatk.
Milyen ismereteket tteleztnk fel a
sorozat megrsa sorn? Egy tlagos
technikai mveltsget, a logikus
gondolkods hasznlatt, alapvet
ramkri ismereteket s a binris
szmok ismerett. Termszetesen
szksges nhny angol sz s
kifejezs jelentsnek a megjegyzse
is, de ezeket a zrjelbe tett magyar
megfeleljkkel megmagyarzzuk. Az
sorozatot gy kivnjuk kzreadni hogy
a rszeknek legyen egy olyan ve,
fokozatosan nehezl foka, ami az
olvaskat is inspirlja a kvetkez
szm keressre, elolvassra.
Ez utn a kiss hosszra sikeredett, de
fontos
bevezet
utn
lssunk
munkhoz.

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:

A Microchip PIC16/17 kontrollerei a


piacon elrhet nyolcbites eszkzk
kztt az egyetlen, amely RISC
felpts: azaz kevs szm utastst
tartamaz utastskszlettel rendelezik. Az utastskszlet kdolst gy
terveztk meg, hogy az utastsok
mindegyike egyetlen program memria
cmen
eltrolhat
legyen.
A
kvetkezmny:
rendkvl gyors mkds (5
milli
utasts
vgrehajtsa
msodpercenknt
20MHz-es
rajel esetn)
a program memria rendkvl
hatkony kihasznlsa

kis fogyasztsa legyen,


gyors legyen: idegysg alatt sok
utastst tudjon vgrehajtani,
rugalmas, knnyen vltoztahat
perifriakszlete legyen,
klnbz alkalmazsokhoz az
optimalizls miatt ms s ms
csaldelemet lehessen vlasztani.
egyszeren s gyorsan lehessen az
alkalmazsokat fejleszteni, s
ehhez szksges fejleszteszkzk
ne legyenek tl drgk,

A 2. brn az alaptpus, a PIC16C5X


sorozat felptse lthat, amely alapja
a csald tbbi, nagyobb teljestmny
tagjnak is.
sszehasonltva az 1. bra vzlatval
az ott blokknt szerepl elemek mr
kiss rszletesebben is lthatk s
rviden sszefoglajuk a rszegysgek
szerept.

PIC16C5X Architektra:Harvard Architektra


Clock/Counter

EPROM
Program
Memory

Program Counter
Data Bus <8>

Stack1

RAM

Stack2

File Registers

Program
Bus<12>

Addr Mux

Instruction Reg

RTCC

RAM Addr <7>

Direct Addr <5>

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja

Az els fontos megjegyzs, hogy a


kontroller n. Harvard architektrj:
ez azt jelenti, hogy a programmemria
(Program Memory) s az adatmemria
(RAM File Registers) elklnl
egymstl. (A PC-ben pldul ez nem
gy van: ott az operatv memria mind
a vgrehajtand program utastsait, s
az adatokat is tartalmazza. Ezt hvjk
kigondolja, Neumann Jnos utn von
Neumann architektrnak.)
Milyen elnnyel jr ez a felpts? Ez
azrt kedvez, mert az adatszavak
hossza (8 bit) nem kell hogy
megegyezzen
az
utastsszavak
hosszval (itt ez 12 bit szles).
Ez a dnts teszi lehetv, hogy a
legtbb utasts csak 1 szbl lljon.
Ugyanis sok utasts vgrehajtshoz
operandusokra is szksg van. Az
egyszersg kedvrt az egyik
operandus mindig egy kitntett, az
akkumultornak nevezett regiszter (az
brn ez a W regiszter), mg a msik
egy, a RAM-ban szerepl regiszter.
Az utasts vgrehajtshoz ennek a
cmt is ismerni kell. Az egyik
megolds, hogy az utasts nem egy
szbl ll, s ekkor a msodik sz
tartalmazza ezt a cmet. Ez nem
elnys, mert kevesebb utastst tud a
CPU vgrehajtani idegysg alatt. A
msik megolds az, hogy az utastst
tartalmaz sz kt rszbl ll:
UTASTS KD

2. OPERANDUS CME

UTASTS SZ

az egyik rsze hatrozza meg (kdolja)


a vgrehajtand tevkenysget, mg a
msik rsz tartalmazza a msodik
operandus cmt:
Ezzel a megoldssal a legtbb utasts
mindssze egy trolhelyet foglal el a
programmemriban. Termszetesen
minl hosszabb az utastssz, annl
hosszabb lehet az utastskd rsz (=
tbb fajta utasts) s hosszabb lehet
az operanduscm rsz is (= nagyobb
kzvetlenl
cmezhet
memriaterlet.) Ezrt a nvekv
teljestmny
PIC
vezrlkhz
nvekv utastssz hossz is tartozik
(12, 14, illetve 16 bit).
Mivel a cmet tartalmaz rsz rgztett,
ezrt a megadhat cmtartomny is

rgztett. Pl. 8 bites cmrsszel csupn


256 fle cm kpezhet. Ha ennl
nagyobb
terjedelm
memrit
kivnunk cmezni, akkor az n.
"lapozsos" technikt alkalmazzuk: a
tnyleges cm tovbbi bitjeit egy kln
trolban a lapregiszterben troljuk. A
lapregiszter tartalma hatrozza meg
hogy tnylegesen a memria melyik
lapjt hasznljuk. Ezzel a megoldssal
elvileg
tetszleges
nagysg
memriarsz cmezhet, de van egy kis
szpsghibja: lap tlpsekor a
lapregiszter tartalmt is mdostani
kell. A PIC kontrollerek mind az adatmind a program memria cmzsnl
alkalmazzk ezt a lapozsi technikt.

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

RB6 az rajel bemenet

VDD

VDD

RB7 az adat be/ki- vagy a parancs bemenet

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


PIC kontrollerek esetn klnfle
rajelmegoldsok kzl vlaszthatunk:
a megolds frekvenciatabilitsa s
felhasznlt alkatrsz ra alapjn:

kerl szavakat bitenknt rjuk kt


vezetk felhasznlsval (adatvonal s
az rajel). A programozshoz a Vdd
tpfeszltgnl nagyobb feszltsg
(Vpp) szksges. A programozs
iddiagrammjt
a
gyrt
a
mikrokontrollerek adatlapjn kzli, s
a rendszerfejlesztsekhez hasznlt
programozk ltalban ezt hasznl-jk.

LP-

Low Power Crystal


(kisfogyaszts kvarc)
Kvarc/kermia rezontor
Nagyfrekvencij
kvarc/kermia rezontor
ellenlls - kondenztor

XTHS-

Adatmemria

RC-

A programok vgrehajtsa sorn


adatokkal mveleteket vgznk. Az
adatokat tartalmaz regisztereket amelyek a RAM memrit alkotjk - a
gyors elrs rdekben clszer a
kzponti egysg szmra elrhet
mdon
kialaktani.
A
PIC
mikrovezrlk esetben ez a File
Registers nven szerepl RAM
terlet, amelynek nhny fontos
tulajdonsga van:

Minden PIC mikrovezrln van kt


kivezets: az OSC1 s OSC2
elnevezs, amelyekre kell ktni az
alkalmazni kivnt rajel elllt
alkatrszeket:
A tokban egy bels konfigurcis
bitprral kell megadni, hogy milyen
tpus rajel kialaktst hasznlunk.

RESET ramkr

Brmelyik regiszter lehet az ALU


ltal vgzett mveletek egyik
operandusa.
Az itt lv regisztereknek kt
fajtjuk van: vannak specilis
adatokat tartalmaz, rgztett cm
regiszterek,
amelyek
fontos
szerepet jtszanak a kontroller
mkdsben s programozsban, valamint vannak ltalnos
cl
regiszterek,
amelyek
tetszleges
adatok
trolsra
hasznlhatk.
Ezen utbb emltett regiszterek-ben
troldnak a kontrollerben lv
perifrik programozshoz
s
adatkezelshez
szksges
regiszterek.

Digitlis rendszerek bekapcsolsakor


szksges egy jl definilt alaphelyzet
belltsra, mert csak ez biztostja a
rendszer helyes mkdst. Ez a
RESET folyamat. A tpfeszltsg
bekapcsolskor
emelkedik
a
tpfeszltsg s az oszcilltor is
mkdni kezd. Nyilvnval, ha tl

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

Kls rajel hasznlata

rajel generls PIC kontrollereknl

5. bra

rajel megoldsok

lassan nvekszik a tpfeszltsg, vagy


az oszcilltor frekvencija lassan
stabilizldik, a RESET folyamat
helytelenl jtszdhat le. Ez egy
kontrolleres rendszer megbzhatsgt

Egy digitlis rendszer a legtbb


esetben mkdshez rajelet ignyel,
amit egy oszcilltor ramkr llt el.

a fentiek miatt ez a lb egyszeren a


tpfeszltsgre
kthet,
s
a
tpfeszltsg
tokra
kapcsolsa
RESET-eli
a
mikrokontrollert.
Mindezeket a 6. brn foglaltuk ssze.
A Watch Dog Timer (WDT)

Indirect Addr 00h


RTCC
PC
Status
FSR
PortA
PortB
PortC

W regiszter

ALU

ltalnosan
felhasznlhat
regiszterek
(File registers)
(RAM)
(24-72)

4. bra

Indirekt cmre hivatkozsnl hasznlt


Idzt/szmll regiszter
Utastsszmll
Program sttusz regiszter
Indirekt cmet tartalmaz
A port
B port
C port (ha van)

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


klvilg fell a perifria egysgbe,
kimen adatok - ezek mennek a
klvilg fella perifria egysgbl,
vezrl jelek - ezekkel trtnik a
perifria mkdsmdjnak s
tnyleges mkdsnek vezrlse,
sttusz jelek - ezeket a jeleket a
perifria
adja
az
aktulis
llapotrl.

ciklusba. Mi a megolds az ilyen


problmk megoldsra? A watch
dog, sz szerint fordtva: rakutya.
Maga a kifejezs onnan szrmazik,
hogy amerikban az jjelirknek a
nyakukban lg kulccsal az rztt
objektum klnbz pontjain pl.
rnknt lejr rkat kell jra s jra
felhzni. Ha nem hzza fel idben, az
ra lejr, s jelzi a mulasztst. A watch
dog ramkr is gy mkdik: egy
nllan mkd szmllt a ciklikus

Termszetesen adott perifria esetn


ezen jelek brmelyike hinyozhat.

Tpfesz (VDD)
VDD

MCLR

MCLR

TPWRT

Power-up
Timer

PIC

TOST

OSC Start-up
Timer
Reset

Mkds

6. bra

programban elhelyezett utastssal


(CLRWDT) trlni kell. Ha ez nem
trtnik meg akkor a szmll lejr s
ez RESET folyamatot indt el, ami a
kontrollert jra elindtja, vagyis a
program csak a szmll (neve: watchdog timer) lejrtig "kszlhat".
Mivel nem minden esetben van
szksg a WDT hasznlatra, ezrt egy
bels
konfigurcis
bit
programozsval
engedlyezhetjk,
vagy tilthatjuk a mkdst.

A kontroller perifria egysgei

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


troldik, s onnan kiolvahat,
Compare regiszter: ebbe a regiszterbe
rt rtkkel trtnik a bels szmll
rtknek sszehasonltsa. Jelzst ad
a kt rtk egyezse esetn.
Soros perifria: soros adattvitelt
megvalst egysg
Egyb perifrik: ezekrl majd az
alkalmazsoknl esik sz.

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

beolvasst, majd utna folytatdik a


megszaktott program.
A processzor oldalrl a megszaktsi
lehetsg kialaktsa azt kivnja meg,
hogy legyen olyan bemenete, ami
llapota megvltozsakor kpes a
processzor mkdst felfggeszteni, a
megszaktott
program
programszmlljnak
az
rtkt
elmenteni, s helybe a megszaktsi
alprogram kezdcmt betlteni, majd
az
alprogramot
elindtani.
A
vgrehajts
befejeztvel
(amit
ltalban az utolsnak elhelyezett,
specilis utasts jelez) a program
szmllba a megszaktott program
program szmlljnak elmentett
rtke
tltdik
vissza,
s
a
megszaktott program folytatdik. Az a
hely, ahov a programszmll rtkt
elmentjk, az a verem. Ha a processzor
tbb
megszaktsi
vonallal
rendelkezik, ezek mindegyikhez egyegy esemnyt rendelhetnk hozz.
Ilyen felfogsban a processzort
alaphelyzetbe llt RESET jel is egy
megszakts: megszaktja a fut
programot, a programszmllba egy
kezdeti rtket (ltalban nullt) tlt,
s elindtja a program futst.
A megszaktsok prioritsai Olyan
rendszerekben, ahol tbb esemny
okozhat megszaktst, megtrtnhet,
hogy egyszerre egy idben kt
megszakts is fellp. Ilyen esetben a
megszaktsok
kiszolglsnak
fontossgi sorrendje - a prioritsa dnti el a kiszolglsi sorrendet.
A program futsa nem minden esetben
szakthat meg kros kvetkezmnyek
nlkl. Ezrt a legtbb rendszer
biztostja, hogy a megszaktsok
programbl
tilthatk,
illetve
engedlyezhetk legyenek. Ha egy
rendszerben csak egy megszakts van,
akkor a tilts s engedlyezs egy-egy
utastssal
lehetsges.
Tbb
megszakts esetn n. megszakts
maszkot
hasznlnak. Ez nyolc
megszakts esetn azt jelenti, hogy
egy bjt nyolc bitjhez az egyes
megszaktsokat rendeljk hozz, s ha
a bit rtke nulla, akkor a hozztartoz
megszakts
tiltott,
klnben
engedlyezett.
Igy
a
bjttal
"maszkoljuk" a megszaktsokat.

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.

"A csaldi fot"


Azt hiszem az eddigiek alapjn vgl
bemutathatjuk a PIC csaldot: a
kvetkez tblzat ezt foglalja ssze,
s remnyeink szerint a tblzat dnt
rsze mr rthet. Jl lthat, hogy egy
adott feladathoz mindig kivlaszthat a
megfelel tpus. A kvetkez, 9. brn
a csald nhny elemnek tokbektst
mutatjuk be. A lbak hrom csoportra
oszthatk:
Tpfeszltsg: VSS, VDD,
Mkdtets: OSC1,OSC2, MCLR, I/O kivezetsek: RA, RB, RC portok.
16C5X csald: az elsnek forgalomba
hozott legkisebb teljestmny modell.
Csak I/O vonalakat s szmll/idzt
ramkrt
tartalmaz
perifriaknt,
megszaktsi lehetsge nincs. A
programutastssz 12 bit hosszsg.
Az utastsszmll 9 bites, amivel
512 szavas memria cmezhet, de
tovbbi
klnll
kt
cmbit
felhasznlval
maximum
2K-s
memria hasznlhat.
16CXX csald: fejlettebb tpus. A
perifrivlasztka b, megszaktsi
lehetsgei
vannak.
A
programutastssz 14 bit hosszsg.
Az utastsszmll 12 bites, amivel
4k-s memria cmezhet.
17CXX
csald:
a
legnagyobb
teljestmny
modell.
A
programutastssz 16 bit hosszsg.
Az utastsszmllja is 16 bites,
amivel 64k szavas memria cmezhet.
Nhny megjegyzs:
A CMOS gyrtstechnolgia s a
gondos tervezs kvetkeztben
kimagaslan
jk
az
eszkzcsaldok
fogyasztsi
adatai.

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


Az eszkzket a felhasznlk
programozzk, az olcs, egyszer
programozhat tipusok kis s
kzepes szrik esetben is
gazdasgos megoldst jelentenek.
Sokfle
tipus
kzl
a
felhasznlk
ki
tudjk
kivlasztani
a
feladatuk
megoldsra
legelnysebb,
leggazdasgosabb megoldst.

1. Lthat hogy az alapvet logikai s


aritmetikai utastsokat a kszlet
tartalmazza.
2. Kt
operandust
ignyl
mveleteknl az egyik a W
regiszter, a msik a RAM egy
tetszleges regisztere, s az
eredmny helye is meghatrozhat
az utasts kdjban szerepl "d"
bittel.
3. A bitmveletek vezrlsi feladatok
knny elvgzsre teszik a
vezrlket alkalmass.

A csald jellemzit sszefoglal


tblzatbl is lthat a RISC felpts
fontos jellemzje, a viszonylag kevs
utasts (33, 35, illetve 55). A
kvetkez tblzat a 16C5X, 16CXX
tpusok utastskszlett foglalja ssze,
csoportostva.
Az
utastsoknl
meghagytuk az eredeti angol szveget,

SEBESSG
EPROM

programozst, megrti, hogy ez a


szokatlan, az Intel tpusoktl eltr
mnemonikj
s
felpts
utastskszlet nem tallt lelkes
fogadtatsra a felhasznlk krben.
Ez a kezdetekben a PIC mikrovezrlk
elterjedsnek komoly gtja is volt.
Ezt felismerve, egy msik amerikai cg
a Parallax egy j, megszokott
mnemonikj
s
mkds
utastsokat
tartalmaz
kszletet
definilt. Ez az utastskszlet a
npszer MCS-51 utastskszlethez
hasonlt. Ezt a jellsmdot hasznl
program
menemonikjai
elszr
lefordtdnak az utastst megvalst
egy vagy tbb PIC utastsra, amelybl
a futtathat kd mr elllthat.
lyen mdon programjainkat kt - az
eredeti Microsim s az MCS51-szer
Parallax
jellsmddal
is
megrhatjuk, de a Parallax megoldsa

mivel az utastsok rvid neve (ms


nven:
mnemonikja)
ezekbl
szrmazik. Az utastsok rszletes
ismertetse a [1,2,3] irodalmakban
megtallhat.
sszefoglalsul hrom megjegyzs:

2. A PIC mikrovezrlk
utastskszlete

TIPUSOK
Utastshossz (bit):
Jellemzk

Aki ismeri ms mikrovezrl tpusok


PIC16C5X

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

VSS - 5. LB, VSS - 14 LB

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

PIC 16/17CXX CSALD


9. bra

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


akr "kevert" mdon megrt programot
is megenged. A pldk ismertetse
sorn mindkt jellsmdot hasznlni
fogjuk.

PIC16CXX Utastskszlet - sszefoglal


Byte-Oriented Operation - bjtos utastsok

Bit-Oriented Operations - bit utastsok

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

Literal and Control Operations


Konstanskezel s vezrl utastsok
Go into standby mode
Clear Watchdog Timer
Return, place Literal in W
Return from interrupt
Return
Call Subroutine
Go to address (k is 9 bit)
Move Literal to W
Inclusive OR Literal and W
Add Literal to W
Subtract Literal from W
AND Literal W
Exclusive OR Literal W

SLEEP
CLRWDT
RETLW
RETFIE
RETURN
CALL
GOTO
MOVLW
IORLW
ADDLW
SUBLW
ANDLW
XORLW

k
k
k
k
k
k
k
k
k

Jellsek::

f = a RAM (file) regiszter cme


d = a mvelet eredmnye hova kerl; 0 = W regiszter, 1 = RAM (file) regiszter
k = egy 8 bites fix rtk (konstans) vagy egy utastsra mutat cm (ez hoszabb mint 8 bit!)
Megjegyzs: A szrkvel jellt utastsok a 16CXX tpusok "j" utastsai a PIC16C5X tpushoz kpes

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

Jellsek: fr - file regiszter, #lit - konstans, W - w regiszter, addr8 - 8 bites cm,

(Aki ismeri a 51-es utastskszletet, annak nagyon szembetn a


hasonlsg.)

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja

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:

definilni: fel kell sorolni s


jellemezni,
hogy
a
feladat
megoldshoz milyen bemenetek
kellenek:
Milyen a bemen jelek formja,
idbeli viselkedse?
Mi jelzi a bemen jel aktv
llapott?
Milyen hossz ideig aktv a
bemen jel?
Milyen gyakran (gyorsan) vltozik
a bemen jel, kpes-e a program a
bemen jel vltozst kvetni?
A bemenjel kapcsolatban van-e
ms bemen vagy kimen jelekkel?

egyrszt meg kell tervezni s


megvalstani a mkd ramkrt-a hardvert,
msrszt meg kell rni a mkdtet
s az adott feladatot akialaktott
hardverrel megvalst programot-a szoftvert.

KIMENETEK
DEFINILSA
Ehhez hasonl krdseket kell
megvlaszolni a rendszer kimeneteinek
definilsakor is.

Mivel ez a kt tevkenysg szorosan


kapcsoldik egymshoz, ezrt a
fejlesztnek mindkt tmakrben
alapvet
ismeretekkel
kell
rendelkeznie.

A kvetkez lps a FELDOLGOZ


RSZ DEFINILSA. Ez az a
programrsz, ami a bemen jelekbl s
adatokbl ellltja a kimen jeleket s
adatokat:

A
mikrokontrollert
tartalmaz
rendszerek ltrehozsakor a kvetkez
lpseket kell elvgeznnk:

A feladat megfogalmazsa.
ramkri tervezs.
A mkdtet program megtervezse.
Kdols.
Programvizsglat
(tesztels),
hibakeress
Dokumentls.

Egy mkd berendezs megvalstsnl mindegyik lpsnek


nagy
jelentsge van. A kdols--ami a
program megrst jelenti--csupn egy,
s nem is mindig a legfontosabb lps.

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

Mi az alapvet algoritmus, ami a


bemenetek alapjn megadja a
kimeneti jeleket,
Milyen
idkorltok
vannak?
Milyen gyorsan kell a feldolgozst
vgrehajtani?
Milyen memriaterlet korltozsok vannak? Van-e valami
korlt a
programot tartalmaz
memriarsz, vagy az adatokat
tartalmaz
memria-rszre
vonatkozlag?
Milyen szabvnyos (esetleg mr
meglv)
programrszleteket,
szubrutinokat hasznlhatunk fel?
Milyen specilis esetek vannak, a
program hogyan kezeli ezeket?
Az
eredmnyeknek
milyen
pontosnak kell lennik?
Hogyan tudja a feldolgozs sorn
fellp hibkat a program kezelni?

HIBAKEZELS Nagyon fontos a


program mkdse sorn fellp hibk
feldertse s megfelel mdon trtn
kezelse.A
hibakezelssel
kapcsolatban
a
kvetkez
szempontokat kell figyelembe venni:
Milyen hibk lehetsgesek?

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)

A GPI KD PROGRAM TVITELE


A FEJLESZTEND RENDSZERBE

KIPRBLS, TESZTELS
HIBAKERESS

VGE

A RENDSZERFEJLESZTS BLOKKVZLATA

tnyt fokozottan figyelembe kell venni,


mivel alapvet minsgi jellemz az
ember-gp kapcsolat, az n. "humn
interfsz" megfelel kialaktsa. A
legfontosabb szempontok:

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


legvalsznbb hibk?
A kezel beavatkozsra adott
rendszervlaszok egyrtelmek?
A kijelzsi kp a kezel szmra
knnyen olvashat s rthet?
A fentiekben lert krdsek tisztzsa
utn ltrejn a konkrt tervezs
alapjul szolgl rendszerterv, ami
alapjn
elkezdhet
a
rendszer
hardverjnek a megtervezse.

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

utni, egyenknt vgrehajthat


rszekbl lljon, s ne ide-oda
ugrsokbl,
ttekinthetetlen
program hurkokbl, ciklusokbl.
Ez a hibakeresst is segti.
Minl tbb grafikus, vizulis leirs
alkalmazsa
(a
folyamatbra
mdszernek ez az elnye).
Egyszer s vilgos megfogalmazsok, fogalmak hasznlata.
Olyan algoritmusok felhasz-nlsa,
amelyek ismertek s tbbszrsen
kiprbltak.
A programtervezskor figyelembe
kell venni azt, hogy melyek azok a
tnyezk, paramterek, amelyek
megvltozhatnak.
Programtervezs teljes befejezse
utn szabad csak a kdolst
elkezdeni.

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


programm
-alaktja
t
a
forrsprogramot.
Az assembler az alapvet feladatainak
elltsn tl, klnbz knyelmi
szolgltatsokat is nyjthat. Ezen
szolgltatsok
vezrlst
vgz
utastsokat nevezzk direktvknak. A
direktva teht nem fordthat le, nincs
gpi kdja, a direktva csak a fordts
idejre
aktv,
csak
a
fordtprogramnak
"szl".
Ilyen
szolgltats pldul: a fordts sorn
keletkez
lista
formtumnak
meghatrozsa,
elre
elksztett
programrszek
automatikus
beszerkesztse a forrsprogramba,
trolhely foglalsa, PIC tipusnak,
konfigurcijnak megadsa stb.
Az assembly nyelv szintaktikja
Mint minden nyelvnek, gy az
assembly nyelvnek is van egy
nyelvtani formai szablyrendszere, un.
szintaktikja. Ezen szintaktika elemei
rviden sszefoglalva a kvetkezk:
A forrsprogram utastssorok vges
sorozata. Az utasts sor ltalban
maximum 64 vagy 80 karaktert
tartalmaz,
CR
(carriage-return)
karakterrel befejezett sor (a PC-nl
ilyenkor
tnk
ENTER-t).
Az
utastssor ngy mezbl llhat,
melyben az utasts egyes rszei
kapnak helyet. A mezk az albbi
sorrendben kvethetik egymst:

CM

UM

OM

;MM

(CM = CMKEMEZ
UM = UTASTSMEZ
OM = OPERANDUSMEZ
MM = MEGJEGYZSMEZ)

Egy utastssorban nem ktelez


mindegyik mezt kitlteni, de egyes
kombincik (pl. operandusmez
utastsmez nlkl) tiltottak. Az egyes
mezk rtelmezse a kvetkez:
CIMKEMEZ: be rjuk azokat a
neveket (cmeket), melyekkel a
program
vezrlesi
struktrjban
lnyeges pontokat (pl. szubrutin
belpsi pont, ciklusmag kezdpont,
stb.) meg akarjuk jellni. Az assembler
a fordts (assemblls) sorn a
cimkhez a mgtte ll utasts
kezdcmnek rtkt rendeli. Minden
egyes, ezen cimkre val hivatkozs,
az utasts cmmezejbe a cimkhez

rendelt rtket tlti be.


Az UTASTSMEZ -ben nemcsak
az utastsok nevei (mnemonikok)
szerepelhetnek, hanem itt tallhatk a
direktvk nevei is. A leggyakrabban
hasznlt direktvk:
ORG

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

Fejlettebb assemblerek tovbbi kt


olyan tulajdonsggal rendelkeznek,
amelyek
az
assemblerben
programozk munkjt segtik s
teszik egyszerbb.
A feltteles assemblls azt jelenti,
hogy a forrsprogram bizonyos rszei
egy, az assemblls sorn fennll
feltteltl fggen a trgyprogramban
benne lesznek, vagy nem. Ez a
lehetsg pldul akkor lehet hasznos,
ha ugyanazt az assembler programot
ms hardver krnyezetben akarunk
futtatni. A feltteles assemblls
szoksos formja:
IF FELTTEL
(A FELTTEL IGAZ VOLTA ESETN
BEFORDTAND PROGRAMRSZ)

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
.....

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja


IDE JN AZ UTASITS SOROZAT
.....
ENDM
; EZ A MAC1 MAKRDEFINICI
LEZR UTASTSA
Ezek utn a programban mindazokon a
helyeken ahol a fenti utasitssorozatot
akarjuk hasznlni, csupn azt kell
lerni, hogy: MAC1 .
A makrk a szubrutinoktl alapveten
klnbznek, mert minden rjuk
trtn hivatkozs alkalmval a
definilt utasitssorozat tnylegesen
bepl a gpi kdu trgyprogramba.
Ezt
a
lehetsget
biztost
assemblereket makr-assemblereknek
nevezzk.
PIC-ekhez a Parallax cg (PASM) s a
Microchip
(MPASM)
is
ad
assemblereket, szabad szoftverknt!
A programfejlesztst tmogat
eszkzk
Kt nagyon fontos krdsrl az
eddigiekben
nem
beszltnk.
Nevezetesen arrl, hogy egyrszt
milyen mdon hozzuk ltre a
forrsnyelvi
programot,
msrszt
milyen lehetsgeink vannak a megrt
program
helyes
mkdsnek
ellenrzsre. A forrsnyelvi program
megirst egy specilis programmal,
az un. szvegszerkeszt (text editor)
programmal vgezzk el, mg a
program helyes mkdst a PIC-eknl
szimultorral ellenrizhetjk.
A szvegszerkeszt program feladata,
hogy segtsgvel a felhasznl
szvegfjlokat hozhasson ltre, illetve
a
mr
meglv
szvegfjlokat
mdosthassa.
Szvegfjloknak
nevezzk azokat az adathalmazokat,
amelyek karaktereket tartalmaznak,
ezek pldul megjelenthetk a
szmtgp
kpernyjn,
vagy
nyomtatn
kinomtathatk.
Az
editoroknak igen nagy jelentsge van
a
szmtstechnikban:
brmely
programnyelven megrt programot (pl.
BASIC, PASCAL, FORTH, stb.)
"szveg"-knt, karakteres formban
visszk be a szmtgpbe, (ez a
forrsnyelvi program) azaz az embergp kapcsolat megvalstsnak a
legfontosabb eszkze.

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

Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja

FONTOS
REGISZTEREK
KLN IS

13

BELS RAM
(FILE REGISTERS)

STTUSZBITEK

PIC 16C84 Simulator v2.09


HEX
BINARY
0 1 2 3 4 5 6 7 8 9 A B C D E F
STACK 1 0000 0000000000000 0 00 00 00 18 00 1F FF 00 00 00 00 00 00 00 00 00
STACK 2 0000 0000000000000 1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
OPTION
FF
11111111 2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
W
00
00000000 8 00 FF 00 18 00 1F FF 00 00 00 00 00 00 00 00 00
RTCC
00
00000000 9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
PC
0000 0000000000000
LATCH
PIN
TRI-STATE
STATUS
18
00011000 PORT A 1F 00011111
00 00000000
1F 00011111
FSR
00
00000000 PORT B FF 11111111
00 00000000
FF 11111111
INTCON
00
00000000
MCLR RTCC IRP RP1 PR0 TO PD Z DC C
WD
CYCLES
TIME
XTAL
1
0
0
0
0
1 1 0 0 0 0.0180 00000000 0.0000000
4mhz

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

programoz eszkz, amely egy IBM


PC kompatibilis gpre kapcsoldik
(286-os is j!). A fejlesztst csak jra
programozhat (EPROM-os, vagy
EEPROM-os) PIC tokkal rdemes
vgezni.
Kisebb
tokoknl
a
legelnysebb a PIC16C84 tpus
hasznlata: ez mintegy ezerszer
jraprogramozhat, s a trlse igen
gyorsan elektromosan, kls eszkz
nlkl (pl. kvarclmpa) lehetsges.
Termszetesen
a
fejleszts
vgeredmnyt olcsbb tokokba lehet
rni. Pldul, ha nem hasznljuk a tok
bels EEPROM
adatregisztereit,
akkor kitn vlaszts az egyszer
programozhat 16C61-es tpus.
A programfejlesztshez szksg van
egy PC-n fut szvegszerkesztre,
assemblerrre
(Parallax:
PASM,
Microchip:
MPASM,
s
egy
szimultor programra Parallax: PSIM,
Microchip: MPLAB). Ezen szoftverek
mindegyike kln trts nlkl
megszerezhet s hasznlhat!

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

PRO MATE Programmer

INHX8M formban
INHX16 formban

You might also like