You are on page 1of 35

PIC16F84

Bevezets

A PIC mikrovezrlk csaldjban nagy npszersgnek rvend a 16F84-es tpus, ksznheten sokoldalsgnak. Az iskolnkban mkd mikrokontroller programoz szakkr is a legtbbet ezzel az IC-vel dolgozik Ez a lers mindazoknak szeretne segteni, akik most kezdik az ismerkedst ezzel a processzoral, illetve magyar nyelven knnyebben boldogulnak a dokumentci olvassval.

A 16F84-rl
Nagyteljestmny RISC CPUjellemzk:
35 db egyszer utasts Minden utasts egy ciklus (az elgaztatkat kivve) rajel: 0-10MHz Program Adat Adat Memria RAM EEPROM (sz) (bjt) (bjt) 1k 68 64 14 bites utastsok 8 bites adatok 8 szint hardver verem Kzvetlen, kzvetett s relatv cmzsi mdok 4 megszaktsi forrs: -Kls RB0/INT lb -TMR0 idzt tlcsorduls -PORTB(7-4) vltozsa miatt -Adat EEPROM rsa ksz 1000 rsi/trlsi ciklus (program memria) 10000 rsi/trlsi ciklus (bels EEPROM) Az EEPROM tbb mint 40 vig megrzi az adatot (Kivltja a reset folyamatot, ha nem norml mkds van) Program vdelem Minimlis fogyaszts (SLEEP) zemmd Sokoldal bels oszcilltor

CMOS Flash/EEPROM technolgia:


Alacsony fogyaszts s nagy sebessg Szles tpfeszltsg tartomny (2-6V) Alacsony fogyaszts - <2mA (5V, 4MHz) - 15A (2V) - < 1A alv md (2V)

Lbkioszts

A perifrik jellemzi:
13 I/O kivezets (mindegyik lehet bemenet vagy kimenet) Nagyram kimenet TMR0: 8 bites idzt/szmll 8 bites elosztval

Specilis mikrokontroller jellemzk:


Kt lbon keresztl trtn ramkrn belli soros programozs (ICSP) Bekapcsolsi reset (POR) Power-up Timer (PWRT), (akkor kapcsolja az rajelet a CPU-ra, ha az mr stabil) Watchdog Timer (WDT) 1

PIC16F84

Architektra

Architektra
A 16F84 Harvard architektrj RISC mikroprocesszor. Az ilyen architektrnl kln vlik a program s az adat memria (a Neumanni architektrban ugyanaz a memria szolgl mindkt clra). A program s az adat memria sztvlasztsa lehetv teszi, hogy az utasts hossza eltrjen a 8 bites adathossztl. A 16F84-ben az utasts hossza 14 bit, gy egyszavas utastsok is elegendek. A ktllapot pipline (csvezetk, sor) segtsgvel az utasts lehvs s vgrehajts egymsba lapoldik, kvetkezskppen minden utasts egy ciklust ignyel (kivtelt kpeznek az elgaztat utastsok). A 16F84 1ksz (1sz=14bit) bels memrit kezel. A 16F84 egy 8bites ALU-t s egy munkargisztert-W:work-(ez tulajdonkppen az akkumultor) tartalmaz. Ez az ALU ltalnos cl aritmetikai s logikai egysg, amely az adatok valamint a W regiszter, illetve brmelyik fjlregiszter kztt vgzi a mveleteket. Az ALU tud sszeadni, kivonni, lptetni, s logikai mveleteket vgezni. Az aritmetikai mveleteket kettes komplemensben vgzi. Az egyik operandus a Wben van, a msik valamelyik fjlregiszter vagy konstans(literl). Az eredmny kerlhet a W-be vagy a fjlregiszterbe. A mveletek eredmnytl fggen az ALU a kvetkez jelzbiteket lltja: C-Carry (tvitel), Z-Zero (zr), D-Digit Carry (als ngy biten tlcsorduls). Ezek a jelzbitek a STATUS regiszterben tallhatk. Kivonskor a C s DC thozat neglt-knt viselkedik (/borrow, /digit borrow). Mint az egyszerstett blokkvzlatbl (1.bra) lthat az architektrt gy alaktottk ki, hogy az utasts vgrehajtsra legyen optimalizlva.

1.bra

PIC16F84

Lbkioszts

Kivezetsek lersa
I/O/P tpus I O Buffer tpus
ST/CMOS

Kivezets OSC1/CLKIN OSC2/CLKO UT

Sorszm 16 15

Lers
Oszcilltor kristly bemenet/ks rajel bemenet

MCLR
RA0 RA1 RA2 RA3 RA4/T0CKI

4 17 18 1 2 3

I/P I/O I/O I/O I/O I/O

ST TTL TTL TTL TTL ST

Oszcilltor kristly kimenet. Ide csatlakozik a kvarc v. a rezontor kristly oszcilltor mdban. RC mdban az fosc/4 jel vehet itt le. ltalnos trls (reset)-aktv nulls. PORTA: ktirny I/O port

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 Vss Vdd

6 7 8 9 10 11 12 13 5 14

I/O I/O I/O I/O I/O I/O I/O I/O P P

TTL/ST1 TTL TTL TTL TTL TTL TTL/ST2 TTL/ST2 -

Port vagy TMR0 idzt/szmll rajel bemenet (nyitott kollektoros!!!) PORTB: ktirny I/O port, programbl bekapcsolhat bemeneti felhzellenllsokkal Port vagy kls megszakts bemenet

Megszaktst okoz vltozs esetn Megszaktst okoz vltozs esetn Megszaktst okoz vltozs esetn3 Megszaktst okoz vltozs esetn4 Fldpont Pozitv tpfeszltg

Jellsek: I=bemenet O=kimenet P=tpfesltsg ST=Schmitt-trigger Megjegyzsek: 1: ha kls megszakts bemenetnek programozzuk, akkor Schmitt-trigger-es lesz 2: soros programozs (gets) esetn Schmitt-triggeres 3: programozskor (gets) ez az rajelbemenet 4: programozskor (gets) ez az adatbemenet

PIC16F84

Utasts vgrehajts

Az utasts feldolgozs, idztsek


Az oszcilltorban kialakul ngyszgjelet a processzor idzt egysge nggyel leosztva, ngy-egymst t nem lapol-(Q1,Q2,Q3,Q4) bel rajell alaktja t. Ez a ngy leosztott raimpulzus alkot egy gpi ciklust. Az utasts vgrehajtsa a kvetkezkppen trtnik (2.bra): 1. Q1: a PC rtke eggyel nvekszik 2. Q2-Q4: utasts lehvs- a CPU kiolvassa a memribl az utastst, s az utastsregiszterbe helyezi 3. Q1-Q4: ezen fzisok alatt trtnik meg az utasts dekdolsa s vgrehajtsa, valamint a kvetkez utasts lehvsa

2.bra Az utastsok vgrehajtsnak gyorstsa rdekben a mikrovezrl felhasznlja a pipeline (csvezetk, sor) elvet (3.bra): az ppen aktulis utasts vgrehajtsval prhuzamosan beolvassa a soron kvetkez utastst. Ilyen mdon egy utasts vgrehajtsa egy gpi ciklust ignyel. Kivtelt kpeznek ez all az elgaztat utastsok (pl. CALL). Ezekben az esetekben a sor tartalmt el kell dobni (kirts), s az j utastst kell lehvni.

3.bra

PIC16F84

Memria szervezs

Memria szervezs
A 16F84 kt memria blokkot tartalmaz: program memria s adat memria. Mindkt blokk sajt busszal rendelkezik, gy brmelyik elrhet ugyanazon rajelperidusban. Az adatmemria tovbbi kt rszre bomlik. Az egyik rszt az ltalnos cl regiszterek alkotjk (general purpose RAM), a msikat pedig a specilis funkcij regiszterek (SFR- Special Function Register). Ezek a specilis regiszterek lltjk be gyakorlatilag a CPU mag s a perifrik mkdsi mdjt. Az adat memria terletn tallhat a bels EEPROM is. Az EEPROM memria csak indirekt mdon az EEADR (cm) s EEDATA (adat) regiszterek segtsgvel rhet el. Az EEPROM memria 64 bjtot tartalmaz, amely rhat s olvashat is.

Program memria
A 16F84 programszmllja 13 bites, teht a megcmezhet memria terlet 1ksz (1sz=14 bit). A cmtartomny 0000 h-tl 03FF h-ig terjed. A fizikailag ltez cmtartomny feletti cmek esetn az elrhetsg a kvetkezkppen alakul: pl. a 20h, 420h, 820h helyeken ugyanaz az utasts ltszik. A reset vektor a 0000h, a megszaktsi vektor pedig a 0004h cmen helyezkedik el (4.bra).

Adat memria
Az adat memria kt partcira oszlik, gymint specilis funkcij regiszterek (SFR), s ltalnos cl regiszterek (GPR). A kt partci kt bankra tagoldik. Mindkt bankban van specilis s ltalnos cl regiszter is. A kt bank kztt a STATUS regiszter RP1 s RP0 bitjvel tudunk vltani. Mindegyik regiszter elrhet direkt s indirekt mdon is. Az indirekt elrs az FSR (File Select Register) segtsgvel valsul meg. Mindkt bank 128 bjtot tartalmaz, ebbl az els tizenkett az SFR terlet szmra van lefoglalva, ezutn kvetkezik a 68 darab ltalnos cl regiszter (GPR), a fennmarad terlet nem hasznlatos, olvasskor 0-t ad. A bank 1-ben a bank 0-ban tallhat ltalnos cl regiszterek rnyka (tkrkpe) jelenik meg, 5

PIC16F84

Memria szervezs

gy ugyanazon regiszter mindkt bankbl elrhet. Az SFR-ek kztt is van olyan, amely mindkt bankbl elrhet (pl. a STATUS regiszter, hiszen e nlkl nem tudnnk bankot vltani.). Az SFR regiszterek a CPU s a perifria funkcik belltsra szolglnak.

PIC16F84

SFR

Specilis funkcij regiszterek


Cm Nv 7. bit 6.bit 5. bit 4. bit 3. bit 2. bit 1. bit 0. bit rtk bekapcsolsi reset utn rtk egyb reset esetn(3) ---- ---uuuu uuuu 0000 0000 000q quuu uuuu uuuu

Bank 0 Az FSR ltal kijellt fjlregiszter adatt tartalmazza (fizikailag nem ltezik) 00h INDF ---- ---xxxx xxxx 01h TMR0 8 bites vals idej szmll/idzt 0000 0000 02h PCL A programszmll (PC) als 8 bitje (2) 03h STATUS 0001 1xxx IRP RP1 RP0 TO DC C PD Z xxxx xxxx 04h FSR Indirekt cmz regiszter (adatmemria) 05h PORTA ---x xxxx - RA4/T0CKI RA3 RA2 RA1 RA0 06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT xxxx xxxx 07h Nem ltez, olvasskor 0-t ad ---- ---xxxx xxxx 08h EEDATA EEPROM adat regiszter xxxx xxxx 09h EEADR EEPROM cm regiszter (1) 0Ah PCLATH ---0 0000 - A PC fels 5 bitjnek rhat puffere RBIE T0IF INTF 0000 000x 0Bh INTCON GIE EEIE T0IE INTE RBIF Bank 1 Az FSR ltal kijellt fjlregiszter adatt tartalmazza (fizikailag nem ltezik) 80h INDF ---- ---1111 1111 81h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 0000 0000 82h PCL A programszmll (PC) als 8 bitje (2) 83h STATUS 0001 1xxx IRP RP1 RP0 Z DC C TO PD xxxx xxxx 84h FSR Indirekt cmz regiszter (adatmemria) 85h TRISA ---1 1111 - PORTA irnyt kijell regiszter 1111 1111 86h TRISB PORTB irnyt kijell regiszter 87h Nem ltez, olvasskor 0-t ad ---- ---WRERR WREN 88h EECON1 EEIF WR RD ---0 x000 89h EECON2 EEPROM vezrl regiszter (fizikailag nem ltezik) ---- ---(1) 8Ah PCLATH ---0 0000 - A PC fels 5 bitjnek rhat puffere RBIE T0IF INTF RBIF 0000 000x 8Bh INTCON GIE EEIE T0IE INTE

---u uuuu
uuuu uuuu

---- ---uuuu uuuu uuuu uuuu

---0 0000
0000 000u

---- ---1111 1111 0000 0000 000q quuu uuuu uuuu

---1 1111
1111 1111

---- ------0 q000 ---- ------0 0000


0000 000u

Jellsek: x=ismeretlen, u=nem vltozik, -=nem ltez olvasva 0, q=rtke felttelektl fgg Megjegyzsek: 1: A programszmll fels 5 bitje kzvetlenl nem hozzfrhet (csak az als 8 bitet (PCL) lehet kzvetlenl rni. A PCLATH regiszter szolgl a PC fels bitjeinek ( PC<12:8>) kezelsre. Vezrlstad utasts esetn a PCH-ba innen tltdik be a fels t bitet ! 2: A STATUS regiszter TO s PD bitjeire a kls MCLR reset nincs hatssal. 3: Az egyb nem bekapcsolsi reset felttelek a kvetkezk: - kls reset az MCLR lbon keresztl - Watchdog Timer reset

PIC16F84

STATUS

STATUS regiszter (03h, 83h)


A STATUS regiszter az ALU jelzbitjeit, a bankvlaszt biteket, valamint a CPU llapotrl tjkoztat biteket tartalmazza. A TO s PD bitek csak olvashatak, a tbbi rhat is. Abban az esetben, ha valamely utastsban clknt szerepel a STATUS regiszter, akkor a Z, DC, C bitek nem rthatk, ezeket a rendszerlogika lltja. A BCF, BSF MOVWF utastsokkal az rhat bitek tetszs szerinti rtkre llthatk. Pldul a CLRF STATUS utasts trli a fels hrom bitet, egybe lltja a Z bitet, a tbbit pedig vltozatlanul hagyja. A STATUS regiszter felptse a kvetkez: R/W-0 IRP R/W-0 RP1 R/W-0 RP0 R-1 R-1 PD R/W-x Z R/W-x DC R/W-x C

TO

IRP: regiszter lapvlaszt bit indirekt cmzshez (a 16F84-ben nem hasznlatos, ksbbi fejlesztsre fenntartva) RP1, RP0: regiszter lapvlaszt bitek direkt cmzshez (a 16F84-ben csak az RP0 mkdik 00 = Bank 0 (00h-7Fh) 01 = Bank 1 (80h-FFh) Mindkt bank 128 bjtbl ll. Az RP1-et nullban kell tartani!

TO : Time Out bit 1-be billen a tpfeszltsg bekapcsolsakor, a CLRWDT s a SLEEP utasts hatsra 0-ba billen a watchdog timer tulcsordulsra
PD : Power Down bit 1-be billen a tpfeszltsg bekapcsolsakor s a CLRWDT hatsra 0-ba billen a SLEEP utasts hatsra Z: Zero Bit 1-be billen, ha valamely aritmetikai vagy logikai mvelet eredmnye nulla DC: Digit Carry/ Borrow bit (ADDLW s ADDWF utastsoknl) 1-be billen, ha tvitel trtnt a negyedik bitnl 0-ba billen, ha nem volt tvitel a negyedik bitnl C: Carry/ Borrow bit (ADDLW s ADDWF utastsoknl) 1-be billen, ha tvitel trtnt a legmagasabb slyozs bitnl 0-ba billen, ha nem volt tvitel a legmagasabb slyozs bitnl Megjegyzs: Kivonsnl a Borrow ellenttesen mkdik. A kivonst 2-es komplemensben vgzi. A forgatsok (RRF,RLF) a carry biten keresztl trtnnek.

PIC16F84

OPTION_REG

OPTION_REG regiszter (81h)


Az OPTION_REG regiszter egy rhat olvashat regiszter, amely klnbz vezrl s konfigurcis biteket tartalmaz: TMR0/WDT eloszt, kls INT megszakts, TMR0, illetve a PORTB felhzellenllsainak belltsa. R/W-1 RBPU R/W-1 INTEDG R/W-1 T0CS R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 T0SE PSA PS2 PS1 PS0

RBPU : PORTB felhzellenllsait engedlyez bit 1 = Felhzellenllsok tiltva 0 = Felhzellenllsok engedlyezve


INTEDG: Kls megszakts lvlaszt bit 1 = A megszakts az RB0/INT lb felfut lre aktv 0 = A megszakts az RB0/INT lb lefut lre aktv T0CS : TMR0 rajel forrst kivlaszt bit 1 = Az RA4/T0CKI lb az rajel forrsa 0 = A bels utastsciklus lpteti a TMR0-t T0SE: TMR0 forrs lvlaszt bit 1 = A TMR0 az RA4/T0CKI lbon trtnt lefut lre nvekszik 0 = A TMR0 az RA4/T0CKI lbon trtnt felfut lre nvekszik PSA: Eloszt hozzrendel bit 1 = Az eloszt a WDT-hez csatlakozik 0 = Az eloszt a TMR0-hoz csatlakozik PS2:PS0: Az osztsi arnyt kivlaszt bitek

Bitek 000 001 010 011 100 101 110 111

TMR0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256

WDT 1:1 1:2 1:4 1:8 1:16 1:32 1:64 :128

Megjegyzs: Ha az eloszt a WATCHDOG TIMER-hez csatlakozik, akkor a TMR0 osztsa 1:1.

PIC16F84

INTCON

INTCON regiszter (0Bh,8Bh)


Az INTCON regiszter egy rhat olvashat regiszter, amely a klnbz megszaktsokat engedlyez biteket, valamint a megszakts bekvetkezst jelz biteket tartalmazza. R/W-0 GIE R/W-0 EEIE R/W-0 T0IE R/W-0 INTE R/W-0 RBIE R/W-0 T0IF R/W-0 INTF R/W-x RBIF

GIE: ltalnos megszaktst engedlyez bit 1 = Megszaktsok engedlyezve 0 = Megszaktsok tiltva EEIE: Eeprom rs ksz megszakts engedlyezs bit 1 = Eeprom rs ksz megszakts engedlyezve 0 = Eeprom rs ksz megszakts tiltva T0IE: TMR0 tulcsorduls megszakts engedlyez bit 1 = TMR0 megszakts engedlyezve 0 = TMR0 megszakts tiltva INTE: RB0/INT kls megszakts engedlyez bit 1 = RB0/INT kls megszakts engedlyezve 0 = RB0/INT kls megszakts tiltva RBIE: A PORTB fels 4 bitjn ltrejv vltozs miatti megszakts engedlyez bit 1 = PORTB vltozs megszakts engedlyezve 0 = PORTB vltozs megszakts tiltva T0IF: TMRO tlcsorduls megszaktst jelz bit 1 = TMR0 tlcsordult (szoftverbl kell trlni!) 0 = Nincs tlcsorduls INTF: RB0/INT kls megszaktst jelz bit 1 = RB0/INT kls megszakts rkezett (szoftverbl kell trlni!) 0 = Nem trtnt megszakts RBIF: A PORTB fels 4 bitjn ltrejv vltozs miatti megszaktst jelz bit 1 = Vltozs trtnt az RB7-RB4 lbak valamelyikn (szoftverbl kell trlni!) 0 = Nem trtnt vltozs RB7-RB4 lbakon

10

PIC16F84

PC,FSR,INDF

PCL s PCLATH
A programszmll (PC) mutat a kvetkez lehvand utastsra. A PC 13 bit szles. Az als bjtjt PCL regiszternek nevezik., amely rhat s olvashat. A fels bjtjt PCH regiszternek hvjk. Ez a regiszter tartalmazza a PC<12:8> bitjeit, viszont ez kzvetlenl nem rhat-olvashat. Minden PCH regiszterre irnyul mvelet a PCLATH regiszteren keresztl valsul meg.

Veremtr
A veremtr 8 szubrutinhvs vagy megszaktsi esemny visszatrsi cmnek trolsra alkalmas, azaz a verem 8 szint s 13 bit szles. A verem hardver verem, vagyis nem rsze a program, illetve az adatterletnek. Ilyen mdon a veremmutat nem rhat s nem olvashat. A PC tartalma eltroldik a veremben (PUSH) minden szubrutinhv (CALL) utasts, vagy megszaktsi esemny hatsra. A visszatrsi utastsok (RETURN, RETLW, RETFIE) hatsra a PC tartalma visszardik a verembl (POP). A veremmveleteknl (PUSH s POP) a PCLATH regiszter tartalma nem vltozik (termszetesen a PCH az trdik). Abban az esetben, ha a verem betelt (8 PUSH utn) a verembe elszr berakott visszatrsi cm fellrdik!

Indirekt cmzs: INDF s FSR regiszterek


Az INDF fizikailag nem ltez regiszter. Az INDF tulajdonkppen annak a regiszternek a tartalmt adja vissza, amelyet az FSR regiszterrel kivlasztottunk. Ez az gynevezett indirekt cmzs. Plda az indirekt cmzsre: A 05h cmen lv regiszterfjl tartalma 10h A 06h cmen lv regiszterfjl tartalma 0Ah Az FSR regiszterbe betltnk 05h-t Olvasskor az INDF regiszter tartalma 10h-t mutat Eggyel megnveljk az FSR tartalmt (06h) Az INDF regiszter tartalma most 0Ah lesz, ha kiolvassuk Ha az INDF regisztert, sajt magt indirekt mdon olvassuk (FSR=0), akkor eredmnyl nullt kapunk. Ha az INDF regisztert indirekt mdon rjuk, akkor nem trtnik semmi (a jelzbitek azonban a STATUS regiszterben bellnak). A kvetkez egyszer program arra mutat pldt hogyan lehet trlni a RAM terletet indirekt cmzssel 20h-tl 2Fh-ig:
movlw movwf clrf incf btfss goto . . 0x20 ; a mutat belltsa.. FSR ;.. a RAM terlet kezdetre INDF ; INDF regiszter trlse FSR ; a mutat nvelse FSR,4 ; ksz az sszes? Next ; nem, a kvetkez trlse ; igen, folytats

Next

Continue

A tnyleges 9 bites cmzs a 8 bites FSR regiszteren s az IRP (STATUS<7>) biten keresztl valsul meg, mint ahogy 6.brn lthat.

11

PIC16F84 Direkt cmzs RP1 RP0 (2) bank vlaszt 6 (az utasts cmrsze ) 0 IRP (2) 7 Indirekt cmzs (FSR) 0

PC,FSR,INDF

bankon belli hely

bank bankon belli hely vlaszt

00 00h 0Bh 0Ch

01 80h

A Bank0 tkrkpe 4Fh 50h (3) 7Fh Bank0 Bank1 6. bra Megjegyzsek 1: A rszletes memriatrkp az 5. brn lthat 2: Nullban kell tartani (ksbbi felhasznlsra fenntartva) 3: Nincs beptve (3) FFh

12

PIC16F84

I/O portok

I/O portok
Nhny kivezets ezen I/O portok kzl multiplexlt, azaz tbb alternatv funkci elltsra alkalmas a klnbz kszlk perifrik szmra. ltalnos esetben, ha a perifria funkci engedlyezve van, akkor a lbat nem hasznlhatjuk ltalnos cl I/O portknt. Tovbbi informci a felhasznli kziknyvben (DS33023) tallhat.

PORTA s TRISA regiszterek


A PORTA 5 bit szles ktirny port. Az adatirnyt a TRISA regiszter bitjei hatrozzk meg. Amikor a TRISA bitjt 1-be lltjuk, akkor a PORTA megfelel bitje bemenet lesz, a kimeneti drjver nagyimpedancis (Hi-Z) lesz. Abban az esetben, ha a TRISA megfelel bitjt 0-ba billentjk, akkor a PORTA bitje kimenet lesz. Megjegyzs: bekapcsolsi reset utn a PORTA bemenetknt lesz definilva, olvasskor pedig 0-t fog visszaadni. Amikor olvassuk a PORTA regisztert, akkor tulajdonkppen a bemeneti D trolbl olvassuk az adatot, amelybe a PORTA rtke rdik be. Minden rsi mvelet egy olvass-mdosts-visszars mveletbl tevdik ssze. Az RA4 lb multiplexlt: mkdhet ltalnos I/O portknt, vagy lehet a Timer0 modul rajelforrsa (T0CKI-Timer0 Clock Input). Az RA4/T0CKI lb (8. bra) bemenetknt Schmitt-triggeres, kimenetknt nyitott kollektoros (felhzellenllst ignyel)! Mindegyik RA kivezets TTL jelszintekkel dolgozik bemenetknt, kimenetknt CMOS vgfokozattal rendelkezik. Plda a PORTA belltsra:
BCF CLRF BSF MOVLW MOVWF STATUS,RP0 PORTA STATUS,RP0 B'00001111' TRISA ; ; ; ; ; Bank0 PORTA adattrolinak trlse Bank1 Adatirnyok belltsa RA<3:0> bemenet, RA4 kimenet

13

PIC16F84

I/O portok

Megjegyzs: az I/O kivezetsek vddidval rendelkeznek a plusz s a mnusz tp fel (az RA4 csak a mnusz fel).

PORTA funkcik
Nv
RA0 RA1 RA2 RA3 RA4/T0CKI

Bit 0 1 2 3
4

Buffer tpus TTL TTL TTL TTL


ST

Funkci
Bemenet/kimenet Bemenet/kimenet Bemenet/kimenet Bemenet/kimenet Bemenet/kimenet vagy kls rajelforrs a TMR0-hoz Nyitott kollektoros

A PORTA-hoz kapcsold regiszterek

Cm

Nv

Bit7 Bit6 Bit5 Bit4 RA4/ T0CKI TRISA4

Bit3
RA3 TRISA3

Bit2
RA2 TRISA2

Bit1
RA1 TRISA1

Bit0
RA0 TRISA0

05h PORTA 85h TRISA

Bekapcs. reset utni rtk ---x xxxx ---1 1111

Egyb reset utni rtk ---u uuuu ---1 1111

Jellsek: x=ismeretlen, u=nem vltozik, -=nem ltez olvasva 0, q=rtke felttelektl fgg

PORTB s TRISB regiszterek


A PORTB 8 bit szles ktirny port. Az adatirnyt a TRISB regiszter hatrozza meg. Amikor a TRISB bitjt 1-be lltjuk, akkor a PORTB megfelel bitje bemenet lesz, a kimeneti drjver nagyimpedancis (Hi-Z) lesz. Abban az esetben, ha a TRISB megfelel bitjt 0-ba billentjk, akkor a PORTB bitje kimenet lesz. Plda a PORTB belltsra:
BCF CLRF BSF MOVLW MOVWF STATUS,RP0 PORTB STATUS,RP0 B'11001111' TRISB ; ; ; ; ; ; ; Bank0 PORTA adattrolinak trlse Bank1 Adatirnyok belltsa RB<3:0> bemenet, RB<5:4> kimenet RB<7:6> bemenet

Mindegyik PORTB kivezets rendelkezik bels felhzellenllssal. A felhzellenllsok bekapcsolsa az RBPU (OPTION_REG<7>) bit 0-ba lltsval trtnik, amely minden bithez hozzrendeli a felhzellenllst! A felhzellenlls automatikusan kikapcsoldik, ha a lbat kimenetknt definiljuk. Bekapcsolsi reset utn a felhzellenllsok tiltva vannak. Ngy PORTB lb (RB7:RB4) rendelkezik megszaktsi lehetsggel, ha vltozs lp fel ezeken a lbakon. Ez a lehetsg csak akkor mkdik, ha bemeneteknek programozzuk ezeket a lbakat. Ebben az esetben gy mkdik a megszakts, hogy a hardver sszehasonltja a rgi eltrolt PORTB 14

PIC16F84 I/O portok bitkombincit a jelenleg mintavtelezettel, s ha vltozst tall brmelyik RB7:RB4 bitben, egy megszaktst generl, vagyis az RBIF (INTCON<0>) jelzbit rtke logikai 1 lesz. Ezen megszakts hatsra a CPU felbred a SLEEP mdbl. A megszaktst a felhasznlnak kell nyugtznia a kiszolgl rutinbl a kvetkez mdok valamelyikvel: Minden rsi vagy olvassi mvelet amely a PORTB-re irnyul trli a hibafelttelt Az RBIF jelzbit trlse A PORTB jl felhasznlhat pldul egy 3x4-es mtrix tasztatra lekezelsre, felhasznlva a beptett felhzellenllsok, valamint a fels ngy bit vltozsa miatt bekvetkez megszakts adta lehetsget. Ezzel a mdszerrel megsprolhatjuk a billentyzet folyamatos lekrdezst (polling).

15

PIC16F84

I/O portok

PORTB funkcik
Nv
RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

Bit
0 1 2 3 4 5 6 7

Buffer tpus
TTL/ST(1) TTL TTL TTL ST TTL TTL/ST(2) TTL/ST(2)

Funkci Bemenet/kimenet vagy kls megszakts bemenet szoftverbl bekapcsolhat bels felhzellenllssal Bemenet/kimenet szoftverbl bekapcsolhat bels felhzellenllssal Bemenet/kimenet szoftverbl bekapcsolhat bels felhzellenllssal Bemenet/kimenet szoftverbl bekapcsolhat bels felhzellenllssal Bemenet/kimenet (vltozs hatsra megszakts) szoftverbl bekapcsolhat bels felhzellenllssal Bemenet/kimenet (vltozs hatsra megszakts) szoftverbl bekapcsolhat bels felhzellenllssal Bemenet/kimenet (vltozs hatsra megszakts) szoftverbl bekapcsolhat bels felhzellenllssal Programozsnl rajelbemenet Bemenet/kimenet (vltozs hatsra megszakts) szoftverbl bekapcsolhat bels felhzellenllssal Programozsnl adatvonal

A PORTB-hez kapcsold regiszterek

Cm 85h

Nv TRISA

Bit7
RB7 TRISB7

Bit6
RB6 TRISB6

Bit5
RB5 TRISB5

Bit4
RB4 TRISB4

Bit3
RB3 TRISB3

Bit2
RB2 TRISB2

Bit1
RB1 TRISB1

Bit0
RB0 TRISB0

05h PORTA

Bekapcs. reset utni rtk xxxx xxxx 1111 1111

Egyb reset utni rtk uuuu uuuu 1111 1111

Jellsek: x=ismeretlen, u=nem vltozik, -=nem ltez olvasva 0, q=rtke felttelektl fgg

I/O programozsi szempontok


Ktirny I/O portok Minden rsi mvelet egy olvass-mdosts-visszars mveletbl tevdik ssze. Pldul a BSF s BCF utastsnl a CPU beolvassa a regisztert, vgrehajtja a bit mveletet, majd viszzarja az eredmnyt a regiszterbe. vatosan kell eljrnunk azonban akkor, ha egyazon port bitjeit bemenetnek s kimenetnek is definiljuk. Pldul a BSF PORTB,5 utasts beolvassa a PORTB mind a nyolc bitjt, 1-be lltja az 5-s bitet, majd visszarja az eredmnyt. Ttelezzk fel, hogy egy bitet ktirny I/O portknt hasznlunk, s jelenleg bemenetknt definiltuk. Ilyenkor olvass esetn a CPU beolvassa a bitet s a bithez tartoz adat latch-et fellrja. Amg bemenetknt hasznljuk ezt a lbat nincs is semmilyen baj, azonban, ha ksbb kimenetknt definiljuk az adatregiszter tartalma ismeretlen lesz. Olvasskor a port tnyleges llapott olvassuk be, rskor azonban nem kzvetlenl a portot, hanem az adattrolkat rjuk. A portokat kimenetknt hasznlva azokat ms kszlk kimeneteivel sszektve a chip tnkremenetelt idzzk el. 16

PIC16F84 Plda az olvass-mdosts-visszars tpus utastsra a PORTB-n


; Kezdeti port belltsok: PORTB<7:4> bemenet ; PORTB<3:0> kimenet ; PORTB<7:6> bels felhzellenllsa bekapcsolva ; Nincs ms ramkrhz csatlakoztatva ; PORT latch PORT lb ; ------------------BCF PORTB,7 ; 01pp pppp 11pp pppp BCF PORTB,6 ; 10pp pppp 11pp pppp BSF STATUS,RP0 BCF TRISB,7 ; 10pp pppp 11pp pppp BCF TRISB,6 ; 10pp pppp 10pp pppp

I/O portok

17

PIC16F84

TMR0

TMR0 modul
A TMR0 idzt/szmll fbb jellemzi: 8 bites idzt/szmll rhat s olvashat Bels vagy kls rajel forrs Kls rajelnl lv kivlasztsi lehetsg (lefut vagy felfut) 8 bites szoftverbl programozhat eloszt Megszakts tlcsorduls esetn (ha FFh-bl 00h-ba vlt a TMR0 regiszter A TMR0 modul egyszerstett blokkvzlata a 11. brn lthat. Tovbbi informci a felhasznli kziknyvben (DS33023) tallhat.

11. bra

A Timer0 mkdse
A Timer0 mkdhet szmllknt vagy idztknt. Idztknt akkor mkdik, ha T0CS bitet (OPTION_REG<5>) 0-ba lltjuk, szmllknt pedig akkor, ha 1-be billentjk. Idzt mdban minden utastsciklus eggyel nveli a TMR0 regiszter rtkt (feltve, hogy nincs eloszts). A felhasznl fell tudja rni a TMR0 regisztert (adott rtkkel feltltheti), ilyenkor az elbb emltett nvels letiltdik a kvetkez kt utastsciklus erejig. Szmll mdban a TMR0 regiszter rtke nvekszik minden felfut vagy lefut l hatsra, amely az RA4/T0CKI lbon trtnik. A felfut vagy lefut l kivlasztsa a T0SE bittel (OPTION_REG<4>) trtnik. Nullba lltva ezt a bitet felfut lre trtnik, 1-be lltva pedig lefut lre trtnik a nvels. Kls rajel forrs hasznlata estn a kvetkez megszortsokkal kell lnnk: biztostani kel, hogy a kls rajel szinkronizlva legyen a bels rajel fzishoz, ami miatt ksedelmet szenved a TMR0 aktulis nvelse. Tovbbi informci a kls rajelrl a felhasznli kziknyvben (DS33023) tallhat.

Eloszt
A 8 bites szmll regiszter lehet a Timer0 modul elosztja, vagy a Watchdog Timer utosztja, mint ahogy a 12. brn lthat. Mivel csak egy regiszternk van, amely megosztott a Timer0 modul s a Watchdog Timer kztt, ezrt, ha az elosztt a Timer0 modulhoz rendeljk, akkor a Watchdog Timernek nincs osztja, s ez ugyangy fordtva is igaz. Az eloszt nem rhat s nem is olvashat. A PSA bit (OPTION_REG<3>) hatrozza meg, hogy az eloszt hov kapcsoldik. Ha a PSA bit rtke 0, akkor az oszt a Timer0 modulhoz, ha 1, akkor a Watchdog Timer-hez kapcsoldik. Az oszts mrtkt a PS2:PS0 18

PIC16F84 TMR0 bitek hatrozzk meg. Ha az oszt a Timer0 modulhoz kapcsoldik, akkor az rtkek 1:2, 1:4.1:256 kztt alakulnak, ha a Watchdog Timer-hez kapcsoldik, akkor pedig 1:1, 1:2.1:128 kztti rtkeket vehet fel. Ha a Timer0 modulhoz van rendelve az oszt, akkor minden utasts, amely rja a TMR0 regisztert trli az elosztt. Abban az esetben, ha Watchdog Timer-hez van rendelve, akkor pedig a CLRWDT utasts trli az elosztt. Az eloszt nem rhat s nem is olvashat.

12.bra

Timer0 megszakts
A Timer0 megszakts akkor keletkezik, amikor a TMR0 regiszter tlcsordul, azaz FFh-bl 00h-ba vlt. Ez a tlcsorduls belltja a T0IF bitet (INTCON<2>). Ez a megszakts maszkolva van a T0IE bittel, azaz csak akkor l, ha ez bit logikai 1 (a GIE bit minden megszaktst letilt, teht ennek is 1-nek kell lennie). A T0IF bitet szoftverbl kell a kiszolgl rutinban trlni (ez nagyon fontos kritrium), mieltt jra engedlyeznnk a megszaktst (RETFIE). A TMR0 megszakts nem breszti fel alv llapotbl a processzort, SLEEP llapotban a TMR0 nem mkdik!

Plda a Timer0 hasznlatra


ORG GOTO 0 START ;Reset vektor ;Megszaktsi vektor ;Timer0 megszakts? ;Igen ;Nem ;Bank1 ;Bels rajel, eloszt a TMR0-hoz ;1:4-es eloszt

ORG 4 BTFSC INTCON,T0IF GOTO T0INT RETFIE START BSF STATUS,RP0 MOVLW B10000001 MOVWF OPTION_REG

19

PIC16F84
BCF BSF BSF STATUS,RP0 INTCON,GIE INTCON,T0IE ;Bank0 ;ltalnos megszakts engedlyezs ;Timer0 megszakts engedlyezs ;A fprogram (egy vgtelen hurok) ;Kiszolgl rutin ;Flag trlse ;A feladat ;vgrehajtsa ;Vge, megszakts engedlyezse

TMR0

HUROK GOTO HUROK . . T0INT BCF INTCON,T0IF . . RETFIE

A Timer0-hoz kapcsold regiszterek

Cm 01h 81h 85H

Nv TMR0

Bit7

Bit6

Bit5 Bit4

Bit3

Bit2

Bit1

Bit0

Timer0 regiszter
GIE EEIE T0IE INTE T0SE
TRISA4

Bekapcs. reset utni rtk xxxx xxxx 0000 000x 1111 1111 ---1 1111

Egyb reset utni rtk uuuu uuuu 0000 0000 1111 1111 ---1 1111

0Bh INTCON
TRISA

RBIE PSA
TRISA3

T0IF PS2
TRISA2

INTF PS1
TRISA1

RBIF PS0
TRISA0

OPTION_ RBPU INTEDG T0CS REG


-

Jelmagyarzat: x=ismeretlen, u=nem vltozik, -=nincs beptve (olvasva 0-t ad). Az rnykolt cellk nem kapcsoldnak a Timer0-hoz.

20

PIC16F84

EEPROM

EEPROM adatmemria
Az EEPROM adatmemria zemszeren rhat s olvashat memria. Ez a memria elklnl a fjlregiszter terlettl. Az EEPROM adatmemria rsa s olvassa 4 specilis funkcij regiszter (SFR) segtsgvel valsul meg, amelyek az albbiak: EECON1 EECON2 EEDATA EEADR Az EEDATA regiszter tartalmazza a kiolvasott, vagy a berand adatot, az EEADR pedig a cmz regiszter. A PIC16F84 EEPROM memrijnak mrete 64 bjt (0h-3Fh). Az EEPROM memria rsi s olvassi ideje jelentsen eltr egymstl. Az rsi idt egy bels idzt szablyozza. Az rsi id fgg a tpfeszltsgtl, a hmrsklettl, illetve az egyes pldnyoktl.

Az EEADR regiszter
Az EEADR segtsgvel sszesen 256 bjt cmezhet meg, azonban az EEPROM mrete csak 64 bjt. Mivel a teljes cmtartomny dekdolt, ezrt a fels kt bitnek mindig nullnak kell lennie.

Az EECON1 s EECON2 regiszter


Az EECON1 regiszter t vezrlbitet tartalmaz. U U U R/W-0 R/W-x R/W-0 EEIF WRERR WREN R/S-0 WR R/S-x RD

7:5 bit Nincs beptve 4. bit EEIF: EEPROM rsi mvelet megszaktsi jelzbitje 1 = Az rsi mvelet ksz 0 = Az rsi mvelet mg nem fejezdtt be 3. bit WRERR: EEPROM hiba jelzbitje 1 = Az rsi mvelet flbeszakadt ( MCLR vagy WDT reset norml mkds esetn) 0 = Az rsi mvelet ksz 2. bit WREN: EEPROM rs engedlyez bit 1 = rs engedlyezve 0 = rs tiltva 1. bit WR: rst vezrl bit 1 = rsi ciklus indtsa. (Ezt a bitet a hardver trli, amikor az rs befejezdtt, azaz a WR bitet csak 1-be lltani lehet szoftverbl.) 0 = Az rsi ciklus befejezdtt 0. bit RD: Olvasst vezrl bit 1 = Olvassi ciklus indtsa. (Az olvass egy ciklust ignyel. Ezt a bitet a hardver trli, amikor az rs befejezdtt, azaz a RD bitet csak 1-be lltani lehet szoftverbl.) 0 = Nincs olvass

21

PIC16F84

EEPROM

A kt vezrlbit (RD s WR) indtja az rst s az olvasst. Ezeket a biteket nem lehet trlni szoftverbl, csak egybe lehet lltani ket. Ezek a bitek hardverbl trldnek, amikor az rs vagy az olvass befejezdik. A WR bit trlhetetlensge megakadlyozza, hogy az rsi mveletet vletlenl megszaktsuk. Az rsi mvelet vgrehajtshoz a WREN bitiet 1-be kell lltani. A tpfeszltsg bekeapcsolsakor a WREN bit trldik. A WRERR bit akkor ll be logikai 1-be, ha az rsi mveletet egy MCLR vagy egy WDT reset szaktotta meg norml mkds kzben. Ebben az esetben a kvetkez reset-kor a felhasznlnak kell ellenriznie a WRERR bitet, s hiba esetn elvgezni az jrarst. Az EEDATA s EEADR regiszter tartalma nem vltozik meg az MCLR s a WDT reset hatsra! Az rs befejezst az EEIF jelzbit adja tudomsunkra, amit hasznlhatunk megszaktsknt, vagy csak egyszeren a bit lekrdezsvel llapthatjuk meg az rs befejezst. Az EEIF bitet szoftverbl kell trlni. Az EECON2 regiszter fizikailag nem ltezik, olvasva nullt ad vissza. Ez a regiszter kizrlag az EEPROM rsi folyamathoz szksges.

Az EEPROM olvassa
Az olvassi folyamat a kvetkezkppen trtnik: a kiolvasand rekesz cmt az EEADR regiszterbe tltj, majd az RD bitet 1-be lltjuk. A kvetkez rajelciklusban a kiolvasott adat az EEDATA regiszterbe kerl. Az EEDATA regiszterben mindaddig megmarad az adat, amg fell nem rjuk, illetve egy jabb olvasst el nem indtunk.

Plda az EEPROM olvassra:


OLVAS BCF MOVLW MOVWF BSF BSF BCF MOVF STATUS,RP0 01 EEADR STATUS,RP0 EECON1,RD STATUS,RP0 EEDATA,W ; ; ; ; ; ; ; Bank0 EEPROM cm Bank1 Olvass indul Bank0 W=EEDATA

Az EEPROM rsa
Az rs megkezdse eltt a felhasznlnak a berand adatot be kell tltenie az EEDATA regiszterbe, a cmet pedig az EEADR regiszterbe. Ezek utn a kvetkez lpseket kell vgrehajtani az rs rdekben:
IRAS BSF BCF BSF MOVLW MOVWF MOVLW MOVWF BSF BTFSS GOTO BCF BSF BCF STATUS,RP0 INTCON,GIE EECON1,WREN 55h EECON2 0AAh EECON2 EECON1,WR EECON1,EEIF NEM EECON1,EEIF INTCON,GIE STATUS,RP0 ;Bank1 ;Megszaktsok letiltsa ;rs engedlyezs ;Ktelezen.. ;..kell ;Ktelezen.. ;..kell ;rs indtsa ;Sikeres az rs? ;Nem ;Jelzbit trlse ;Megszaktsok engedlyezse ;Bank0

NEM

22

PIC16F84

CPU JELLEMZK

Specilis CPU jellemzk


A PIC 16F8x sorozatot gy terveztk, hogy a vals zemi krlmnyek kztt is megbzhatan mkdjn, a kls elemek minl kevsb befolysoljk a processzort. Ezek a jellemzk a kvetkezk: Oszcilltor kivlaszts Reset Power-on Reset (POR) Power-up Timer (PWRT) Oscillator Start-up Timer (OST) Megszaktsok Watchdog Timer (WDT) SLEEP (alv md) Kdvdelem ID (16 bit azonost informci: pl.EPROM ellenrz sszeg, jelsz, stb.) ramkrn belli programozs A 16F84 rendelkezik Watcdog Timer-rel, amelyet csak a konfigurcis biteken keresztl lehet be- vagy kikapcsolni. A WDT-nek sajt bels RC oszcilltora van, ami nveli a megbzhatsgt. A 16F84 rendelkezik kt bels idztvel, amelyek a tpfeszltsg bekapcsolsakor jtszanak szerepet. Az OST mindaddig reset-eli a CPU-t, amg az oszcilltor jele stabil nem lesz. A PWRT, amely fix 72ms-os ksleltetssel rendelkezik addig reset-eli a CPU-t, amg a tpfeszltsg stabilizldik. SLEEP mdban extrm kis fogyasztssal br a chip. A felhasznl kls reset-tel, WDT tlcsordulssal, vagy megszaktssal bresztheti fel alv mdbl a CPU-t.

Konfigurcis bitek
A konfigurcis bitekkel klnbz kszlk konfigurcikat lehet belltani. Ezek a bitek a program memria 2007h cmn kezddnek. A 2000h cm a felhasznli memria terleten tl tallhat specilis tesztel/konfigurl memria terlet (2000h-3FFFh). Ez a terlet csak a felprogramozs sorn vlik hozzfrhetv.
R/R-u R/R-u R/R-u R/R-u R/R-u R/R-u R/R-u R/R-u R/R-u R/R-u R/R-u
PWRTE

R/R-u
WDTE

R/R-u
FOSC1

R/R-u
FOSC0

CP

CP

CP

CP

CP

CP

CP

CP

CP

CP

13.-4. bit

CP : Kdvdelem 1 = A kdvdelem kikapcsolva 0 = A kdvdelem bekapcsolva

3.bit

PWRTE : Power-up Timer engedlyez bit 1 = Power-up Timer tiltva 0 = Power-up Timer engedlyezve
WDTE: Watchdog Timer engedlyez bit 1 = WDT engedlyezve 0 = WDT tiltva FOSC1-FOSC0: Oszcilltor kivlaszt bitek 11 = RC oszcilltor 10 = HS oszcilltor 01 = XT oszcilltor 00 = LP oszcilltor

R = olvashat bit P = programozhat bit -n = rtk POR utn u = nem vltozik

2. bit

1.-0. bit

23

PIC16F84

CPU JELLEMZK

Oszcilltor konfigurcik
Oszcilltor tpusok
A PIC16F84 ngy klnbz oszcilltor mdban dolgozhat. A felhasznl kt konfigurcis bit segtsgvel (FOSC1-FOSC0) tudja kivlasztani a megfelel mdot:

LP - alacsony fogyaszts kvarc illetve kermia rezontoros oszcilltor XT - kvarc illetve kermia rezontoros oszcilltor HS - nagysebessg kvarc illetve kermia rezontoros oszcilltor RC

Kvarc oszcilltor, kermia rezontor


XT, LP vagy HS mdban a kvarckristlyt vagy a kermia rezontort az OSC1/CLKIN, valamint az OC2/CLKOUT lbakra kell csatlakoztatni (13. bra).

13. bra Megjegyzsek: 1. C1 s C2 rtkt lsd a kvetkez tblzatokban 2. AT metszs kristlynl az RS ellenllst be kell pteni (100 ..1 k)

Kapacitsok kermia rezontorhoz Md f C1,C2 455 kHz 47-100 pF XT 2 MHz 15-33 pF 4 MHz 15-33 pF 8 MHz 15-33 pF HS 10 MHz 15-33 pF

Kapacitsok kristlyoszcilltorhoz Md f C1,C2 32 kHz 68-100 pF LP 200 kHz 15-33 pF 100 kHz 100-150 pF XT 2 MHz 15-33 pF 4 MHz 15-33 pF 4 MHz 15-33 pF HP 10 MHz 15-33 pF

XT,LP vagy HS mdban lehetsg van kls rajel forrs hasznlatra is. A kls rajelet az OSC1/CLKIN kivezetsre kell ktni (14. bra).

14. bra 24

PIC16F84

CPU JELLEMZK

Kls oszcilltor ramkrk


Kls oszcilltorok alkalmazsval szlesebb mkdsi tartomnyt s nagyobb stabilitst rhetnk el. Az oszcilltor ptelemeknt jl alkalmazhatk a TTL kapuk. Az oszcilltor kapcsolsok mkdhetnek prhuzamos vagy soros rezonancin. A 15.brn egy prhuzamos rezonancin mkd, a 16.brn pedig egy soros rezonancin mkd oszcilltort lthatunk.

15. bra

16. bra

RC oszcilltor
Az idztsekre rzketlen kapcsolsokban kltsgkmls cljbl alkalmazhat az RC oszcilltor md. Az RC oszcilltor frekvencija fgg a tpfeszltsgtl, az REXT s CEXT rtktl, a hmrsklettl. A kls R s C elemek megvlasztsnl a kvetkez szempontokat figyelembe kell venni: ha az R rtke 4k-nl kisebb, az oszcilltor instabil lesz, illetve le is llhat nagy ellenlls rtkeknl (Rmax=1M) az oszcilltor zajrzkeny lesz az REXT rtke ezek miatt 4k s 100k kztt legyen annak ellenre, hogy az oszcilltor mkdik a CEXT nlkl is, rtke legalbb 20pF legyen nagy rtk kondenztort ne alkalmazzunk Az oszcilltor frekvencijt nagymrtkben befolysolja, hogy hogyan terveztk meg a nyomtatott ramkrt. Az OSC2/CLKOUT lbon az oszcilltor frekvencijnak nggyel leosztott rtke vehet le, amelyet felhasznlhatunk egyb ramkrk szmra. Figyelem: RC oszcilltor mdban, ha az OSC1/CLKIN kivezetsre kls rajalet kapcsolunk, akkor az tnkreteszi a mikrokontrollert. 25

PIC16F84

CPU JELLEMZK

Reset logika
A PIC16F84-nl a kvetkez reset llapotokat klnbztetjk meg:

Power-on Reset (POR) MCLR reset norml mkds esetn MCLR reset SLEEP (alv) llapotban WDT reset (norml mkds esetn) WDT Wake-up (SLEEP llapotban)

A 17.brn lthat a reset ramkr egyszerstett blokkvzlata.

17. bra Az MCLR lb Schmitt-triggeres, hogy kiszrje a hamis reset impulzusokat. A reset impulzus minimlis szlessge 2s (katalgusadat). Nhny regiszterre nincs hatsa a reset feltteleknek, llapotuk ismeretlen a tpfeszltsg bekapcsolsa utn (POR), illetve az egyb reset felttelek nem vltoztatjk meg az llapott. A legtbb regiszter a reset hatsra (POR, MCLR vagy WDT reset norml mkds alatt, valamint MCLR reset SLEEP llapotban) bell alapllapotba. Ezekre a regiszterekre nincs hatssal a WDT reset, ha az alv llapotban kvetkezik be. A TO s PD bitek llapotnak lekrdezsvel megllapthat a ltrejtt reset fajtja (lsd ksbb).

26

PIC16F84 A klnbz reset tpusok hatsa a programszmllra s a sttusz regiszterre:

CPU JELLEMZK

Reset tpusa
Power-on reset

MCLR reset norml mkds esetn MCLR reset alv llapotban WDT reset norml mkds esetn WDT reset alv llapotban breds alv mdbl megszakts hatsra

Programszmll 000h 000h 000h 0000h PC+1 PC+1(1)

Sttusz regiszter 0001 1xxx 000u uuuu 0001 0uuu 0000 1uuu uuu0 0uuu uuu1 0uuu

Jelmagyarzat: u = nem vltozik, x = ismeretlen. Megjegyzs 1: Ha a GIE bit 1-be van lltva, akkor bredskor a PC-be a megszaktsi vektor (0004h) tltdik be. A klnbz reset tpusok hatsa bels regiszterekre (sszes): MCLR reset: -norml mkds Regiszter Cm Power-on Reset -SLEEP esetn WDT reset norml mkds esetn W xxxx xxxx uuuu uuuu INDF 00h ---- ------- ---TMR0 01h xxxx xxxx uuuu uuuu PCL 02h 0000h 0000h STATUS 03h 0001 1xxx 000q quuu(3) FSR 04h xxxx xxxx uuuu uuuu PORTA 05h ---x xxxx ---u uuuu PORTB 06h xxxx xxxx uuuu uuuu EEDATA 08h xxxx xxxx uuuu uuuu EEADR 09h xxxx xxxx uuuu uuuu PCLATH 0Ah ---0 0000 ---0 0000 INTCON 0Bh 0000 000x 0000 000u INDF 80h ---- ------- ---OPTION_REG 81h 1111 1111 1111 1111 PCL 82h 0000h 0000h STATUS 83h 0001 1xxx 000q quuu(3) FSR 84h xxxx xxxx uuuu uuuu TRISA 85h ---1 1111 ---1 1111 TRISB 86h 1111 1111 1111 1111 EECON1 88h ---0 x000 ---0 q000 EECON2 89h ---- ------- ---PCLATH 8Ah ---0 0000 ---0 0000 INTCON 8Bh 0000 000x 000 000u

breds SLEEP-bl: -megszakts hatsra -WDT tlcsorduls miatt uuuu uuuu ---- ---uuuu uuuu PC+1(2) uuuq quuu uuuu uuuu ---u uuuu uuuu uuuu uuuu uuuu uuuu uuuu ---u uuuu uuuu uuuu(1) ---- ---uuuu uuuu PC+1 uuuq quuu(3) uuuu uuuu ---u uuuu uuuu uuuu ---0 uuu ---- ------u uuuu uuuu uuuu(1)

Jelmagyarzat: u = nem vltozik, x = ismeretlen, - = nem ltez bit (olvasva 0-t ad), q = rtke felttelektl fgg. Megjegyzsek 1: Az a bit, amely az bredst okozta 1-be billen 2: Ha a GIE bit 1-be van lltva, akkor bredskor a PC-be a megszaktsi vektor (0004h) tltdik be. 3: Ezen regiszterek felttelektl fgg rtkei az elz tblzatban tallhatak. 27

PIC16F84

CPU JELLEMZK

Power-on Reset (POR)


A Power-on Reset impulzus akkor keletkezik, amikor bekapcsolva a tpfeszltsget, annak rtke 1,2V1,7V-ra nvekszik. Ennek elnye akkor nyilvnul meg, amikor az MCLR lbat kzvetlenl (esetleg egy ellenllson keresztl) a tpfeszltsgre ktjk. Ebben az esetben nem szksges a klasszikus RC tagbl ll reset ramkr a PIC szmra. Abban az esetben, ha a tpfeszltsg lassan ll be, illetve egyb kezdeti felttel bellsa szksges, akkor a 18. brn lthat reset ramkrrel biztosthatjuk a reset llapotot addig, amg a felttelek bellnak.

18. bra Az R rtknek 40k-nl kisebbnek kell lennie, ugyanis az MCLR lb szivrgsi rama 5A. A D dida a kondenztor kislst biztostja, ha lekapcsoltuk a tpfeszltsget. Az R1 az MCLR lb maximlis ramt korltozza. A POR ramkr nem generl reset impulzust akkor, amikor a tpfeszltsg lecskken a kritikus rtk al.

Power-up Timer (PWRT)


A Power-up Timer egy fix 72ms-os ksleltetst llt el a bekapcsolsi reset (POR) utn szmtva. A PWRT az idzts ellltshoz egy bels RC oszcilltorral rendelkezik. A PWRT mindaddig reseteli a CPU-t, amg aktv (19. bra, 20. bra). A PWRT ltal ltrehozott ksleltets lehetv teszi, hogy a tpfeszltsg stabilizldjon ezen id alatt. A PWRT a megfelel konfigurcis bittel (PWRTE) kapcsolhat be s ki.

19. bra

28

PIC16F84

CPU JELLEMZK

Oscillator Start-up Timer (OST)

20. bra Az Oscillator Start-up Timer egy 1024 oszcilltor ciklusbl ll ksleltetst hoz ltre a PWRT ksleltets lejrta utn (19. bra, 20. bra). Ez a ksleltets biztostja a kristly oszcilltor vagy rezontor frekvencijnak stabilizldst. Az OST-nek csak XT, LP s HS mdban van szerepe a tpfeszltsg bekapcsolsakor, illetve SLEEP-bl val bredskor. Elfordulhat olyan eset, hogy a tpfeszltsg nagyon lassan nvekszik, s gy a TOST id lejrta utn sem ll be a tpfeszltsg (21. bra). Ilyen esetben mindig alkalmazzunk kls reset ramkrt (18. bra).

21. bra

A TO s a PD sttusz bitek
A tpfeszltsg bekapcsolsa utn lejtszd folyamatokat a 19-21-edik brkon kvethetjk nyomon. A bekapcsols sorn, miutn a tpfeszltsg elrte a megfelel a bels POR jel logikai 1-be vlt, s elindul a PWRT modul, melynek lejrta utn indul el az OST modul. A teljes time-out id az oszcilltor tpustol s a PWRTE konfigurcis bit belltstl fgg. A time-out id alakulst az albbi tblzatbl olvashatjuk ki: Oszcilltor konfigurci XT, HS, LP RC Bekapcsols utn PWRT PWRT engedlyezve tiltva 72 ms+1024TOSC 1024TOSC 72 ms breds alv mdbl 1024TOSC 29

PIC16F84

CPU JELLEMZK

A time-out letelte utn a bels reset jel inaktv lesz. Abban az esetben, ha a az MCLR lbon ennl hosszabb ideg van logikai 0, akkor a bels reset megsznse az MCLR lb logikai 1-be vltsval egyidben trtnik meg. Ezt ltalban akkor hasznljk, amikor tbb, prhuzamosan mkd kontrollert kell egymshoz szinkronizlni. A kvetkez tblzatban a TO s PD jelzbitek bellst lthatjuk a klnbz reset felttelek hatsra (ezen bitek llsbl tudhatjuk meg, hogy milyen tpus reset kvetkezett be):

TO 1 0 0 1
1

PD 1 1 0 1 0

Reset tpusa Power-on reset WDT reset norml mkds esetn WDT reset alv llapotban MCLR reset norml mkds esetn MCLR reset alv llapotban, illetve breds alv mdbl megszakts hatsra Brown-Out reset

Elfordulhat olyan eset a mkds sorn, hogy a tpfeszltsg lecskken a minimlis rtk al, de nem lesz 0, majd visszall a normlis rtkre. Ez az esemny hibs mkdshez vezethet. Clszer egy reset impulzussal kikszblni az ilyen brown-out esemny kros hatst (22. s 23. bra).

22. bra

23. bra

A 23. brn lthat ramkr esetben a reset akkor kvetkezik be, amikor a tpfeszltsg az UZ+0,6V al R1 cskken, a 24. brn pedig akkor, amikor az U t feszltg 0,6V al cskken. R1 + R 2 Megszaktsok

A PIC16F84-nek 4 megszaktsi forrsa ltezik: Kls megszakts azRB0/INT lbon TMR0 tlcsorduls Vltozs a PORTB fels 4 bitjn A bels EEPROM rsa befejezdtt
30

PIC16F84 CPU JELLEMZK A megszaktst vezrl regiszter (INTCON) tartalmazza az egyes megszaktsok jelzbitjeit. Ebben a regiszterben tallhatk mg az egyes megszaktsok engedlyez (maszk) bitjei is, valamint a globlis engedlyez bit. A bels EEPROM rsnak befejeztt jelz EEIF bit az EECON1 regiszterben tallhat! A globlis megszaktst engedlyez bit a GIE (INTCON<7>) engedlyezi (GIE=1) az sszes nem maszkolt megszaktst, illetve ha a GIE=0, akkor pedig mindentl fggetlenl az sszes megszaktst letiltja. Amikor egy megszaktsi krelem elfogadsra kerl, akkor a GIE bit 0 lesz, letiltva ezltal az sszes tbbi megszaktst. A PC tartalma (visszatrsi cm) elmentdik a verembe, majd feltltdik a 0004h megszaktsi vektorral. Mivel az sszes megszakts esetn a 0004h cmre fut a program, a felhasznlnak a jelzbitek tesztelsvel kell a megszakts forrst megllaptania:
ORG BTFSC GOTO BTFSC GOTO . . 4 INTCON,T0IF T0_INT_RUT INTCON,RBIF RB_CHANGE_INT_RUT

A kiszolgl rutinban a felhasznlnak trlnie kell a megfelel jelzbitet, mert ellenkez esetben llandan erre a rutinra futna a program. A megszaktsi rutinbl a RETFIE (nem RETURN) utastssal kell visszatrni, mert ez az az utasts, ami jra engedlyezi a megsztsokat (GIE=1). Kls megszaktsi esemny esetn a hats csak 3-4 utastsciklus utn jelentkezik, attl fggen, hogy az esemny mikor kvetkezett be. A megszaktsi logika:

Kls megszakts az INT/RB0 lbon Az RB0/INT lbon rkez megszakts lvezrelt: a megszakts a jel felfut lre trtnik, ha az INTEDG bit (OPTION_REG<6>) 1-be van lltva, illetve lefut lre kvetkezik be, ha 0-ba van lltva. Amikor a belltsnak megfelel vltozs trtnik az RB0/INT lbon, akkor az INTF bit 1-be billen (INTCON<1>). A megszaktst engedlyezni az INTE bit (INTCON<4>) 1-be billentsvel lehet, tiltst pedig a bit 0-ba lltsval lehet elrni. Az INTF jelzbitet szoftverbl, a megszaktst kiszolgl rutinban kell trlni, mieltt jra engedlyezdik a megszakts (RETFIE). Az RB0/INT lbon rkez megszakts felbresztheti a processzort alv mdbl (SLEEP), ha eltte az INTE bit 1-be volt lltva. TMR0 megszakts A TMR0 megszaktst a TMR0 regiszter tlcsordulsa (FFh00h). Tlcsordulskor a T0IF (INTCON<2>) 1-be vlt. A megszaktst engedlyezni/tiltani a T0IE (INTCON<5>) bit 1-be lltsval ill. trlsvel lehet.

31

PIC16F84 PORTB megszakts

CPU JELLEMZK

Amikor a PORTB<7:4> bitek valamelyikn vltozs trtnik az RBIF bit (INTCON<0>) 1-be vlt. A megszaktst engedlyezni/tiltani a RBIE (INTCON<3>) bit 1-be lltsval ill. trlsvel lehet. EEPROM megszakts Amikor a bels EEPROM adatmemria rsi ciklusa befejezdik az EEIF bit (EECON1<4>) 1-be vlt. A megszaktst engedlyezni/tiltani a EEIE (INTCON<6>) bit 1-be lltsval ill. trlsvel lehet.
Regiszterek mentse megszakts alatt

A megszakts folyamn csak a PC rtke mentdik el a verembe. Tipikus eset, amikor a felhasznl a kulcsfontossg regisztereket (pl. a W s a STATUS regiszter) el akarja menteni a megszakts alatt, ugyanis ezek tartalma a megszakts sorn fellrdhat. Ezt szoftverbl kell megoldani. A kvetkez mintaplda elmenti s visszalltja a STATUS s a W regiszterek tartalmt. A felhasznlnak definilni kell a W_TEMP s a STATUS_TEMP regisztereket, ahol tmenetileg troldnak az adatok. A plda a kvetkez lpseket tartalmazza: a) W regiszter mentse b) A STATUS regiszter mentse a STATUS_TEMP regiszterbe c) A megszaktsi rutin vgrehajtsa d) A STATUS (a bankvlaszt bitek is) regiszter visszalltsa e) A W regiszter visszalltsa
PUSH ISR_RUTIN MOVWF SWAPF MOVWF : : : : SWAPF MOVWF SWAPF SWAPF RETFIE W_TEMP STATUS,W STATUS_TEMP ;W mentse ; ;STATUS mentse

POP

STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,w

;STATUS visszalltsa ;W visszalltsa

Watchdog Timer (WDT)

A Watchdog Timer feladata a hibs szoftver mkds kvetkezmnyeinek kiszrse.A Watchdog Timer egy szabadonfut, a chip-re integrlt, kls elemek nlkl mkd RC oszcilltor. Ez az oszcilltor fggetlen az OSC1/CLKIN lbon lv RC oszcilltortl. Ez azt jelenti, hogy a WDT akkor is fut, ha a processzor alaposzcilltora lell, pl. alv zemmd (SLEEP). Norml mkds esetn a WDT tlcsordulsa (id-tlfutsa) RESET folyamatot vlt ki. A normlisan mkd szoftver trli a WDT-t mieltt tlcsordulna (CLRWDT utasts). Alv zemmd esetn a WDT tlcsordulsa felbreszti a processzort, s folytatdik a norml mkds. A Watchdog Timer mkdst a WDTE bittel (WDT_OFF az MPLAB-ban) lehet tiltani (lsd a konfigurcis biteknl). WDT tlfutsi id A WDT tlcsordulsi peridusnak nvleges ideje 18ms (eloszt nlkl). A tlfutsi idt befolysolja a hmrsklet, s a tpfeszltsg. Abban az esetben, ha ez az id tl rvid be lehet kapcsolni az utosztt, melynek maximlis osztsrtke 1:128 (OPTION_REG). Ebben az estben a TMR0-nak nem lesz 32

PIC16F84 CPU JELLEMZK elosztja, ugyanis a kett ugyanaz! Az oszt bekapcsolsval a tlfutsi id 2,3s-ig nvelhet. A CLRWDT s a SLEEP utasts trli a WDT-t s az utoszt regisztert. WDT RESET esetn a STATUS regiszter TO bitje 0-ba vlt, ebbl tudja megllaptani a felhasznl, hogy mi okozta a CPU Reset folyamatt. A WDT programozsnak szempontjai A tlfutsi id kiszmtsnl a legrosszabb esetet vegyk figyelembe (VDD=min., Hm.=max., max. WDT oszt).
Tpfeszltsg takarkos vagy alv (SLEEP) zemmd

A CPU energiatakarkos zemmdba, (alv mdba) kapcsolhat, majd ksbb felbreszthet. Alv md (SLEEP) Az energiatakarkos zemmd a SLEEP utastssal aktivlhat. Ez az utasts trli a Watchdog Timer-t, a PD bit (STATUS<3>) 0-ba billen, a TO bit (STATUS<4>) pedig 1-be vlt, a CPU oszcilltora lell, az I/O portok az utols llapotukat rzik. Akkor a minimlis az ramfelvtel alv mdban, ha az I/O portokmindegyikn vagy VDD, vagy VSS van, semmilyen kls elemet nem mkdtet a mikrovezrl. A nagyimpedancis kls csatlakozsokat ellenllsokkal H vagy L szintre kell hzni. A T0CKI bemenetet is VDD vagy VSS rtkre kell ktni, a PORTB felhzellenllsait be kell kapcsolni. A SLEEP llapot csak akkor tud kialakulni, ha az MCLR lb H szinten van. Itt jegyezzk meg, hogy a WDT Reset nem hzza 0-ba az MCLR lbat. breds alv llapotbl Az bredst a kvetkez esemnyek vlthatjk ki: 1. Kls reset az MCLR lbon 2. WDT tlcsorduls (ha a Watchdog Timer engedlyezve van) 3. Megszakts az RB0/INT lbon, vltozs a PORTB fels 4 lbn, EEPROM rsa befejezdtt A perifrik nem tudnak megszaktst generlni alv mdban, ugyanis ilyenkor nincs rajel. Az els esemny ( MCLR reset) jraindtja a processzort. A msodik esetben a program mkdse folytatdik. A TO s a PD tesztelsvel lehet megllaptani, hogy mi volt a reset oka. A PD bit 1-be billen a tpfeszltsg bekapcsolsakor, s 0 lesz ha a CPU alv mdba kerl. A TO bit 0-ba billen, ha a WDT tlcsordul, illetve, ha alv mdbl breszt a WDT. Amikor a SLEEP utasts vgrehajtdik a processzor a kvetkez utastst mg lehvja (PC+1). Ezt ellehvsnak (pre-fetch) nevezik. Ahhoz, hogy a processzort a megszakts felbreszthesse a megfelel egyedi engedlyez bitnek 1-nek kell lennie. A GIE bit nem befolysolja a magszaktsos breszts lehetsgt, csak annak kvetkezmnyeit. Ha GIE=0, akkor a SLEEP utasts vgrehajtsakor elre lehvott utastssal folytatdik a program. Abban az esetben, ha a GIE=1, akkor elbb vgrehajtja az elre lehvott megszaktst, majd a megszaktsi vektorcmre (0004h) ugrik. Ilyenkor clszer a SLEEP utasts utn egy NOP utastst elhelyezni a SLEEP llapotot kivlt programban. breds megszakts hatsra Amikor az ltalnos megszaktst engedlyezs tiltva van (GIE=0), s brmelyik megszaktsi forrs engedlyez bitje 1-es, s a megszakts krst jelz bit 1-be billent a kvetkez esemnyek valamelyike trtnik: 33

PIC16F84 CPU JELLEMZK Ha a megszakts a SLEEP utasts vgrehajtsa eltt trtnik, akkor a SLEEP utasts helyett egy NOP hajtdik vgre. Emiatt a WDT s a WDT utosztja nem trldik, a TO bit nem vlt 1-be, a PD bit pedig nem trldik. Ha a megszakts a SLEEP utasts vgrehajtsa utn trtnik, akkor a CPU azonnal felbred az alv llapotbl. A SLEEP utasts teljes egszben vgrehajtdik. Emiatt a WDT s a WDT utosztja trldik TO bit 1-be vlt, a PD bit pedig trldik. Mg ha a megszakts jelzbitjt mieltt kiadjuk a SLEEP utastst megtrtnhet, hogy a jelzbit 1-be billen a SLEEP utasts vgrehajtsa alatt. Hogy maghatrozzuk vajon a SLEEP utasts hajtdik-e vgre teszteljk a PD bitet. Ha a PD bit 1, akkor a SLEEP helyett NOP hajtdik vgre. Gondoskodjunk a WDT trlsrl a CLRWDT utastssal, mieltt a SLEEP utastst kiadnnk.

34

PIC16F84 Mnemonik Operandus Lers Ciklus

UTASTSKSZLET

14 bites kd lltott Megjegyzs MSB LSB jelzbitek Bjt orientlt fjlregiszter mveletek ADDWF f,d W s f sszeadsa 1 00 0111 dfff ffff C,DC,Z 1,2 ANDWF f,d W s f S kapcsolata 1 00 0101 dfff ffff Z 1,2 CLRF f f trlse 1 00 0001 1fff ffff Z 2 CLRW W trlse 1 00 0001 0xxx xxxx Z COMF f,d f komplementlsa 1 00 1001 dfff ffff Z 1,2 DECF f,d f cskkentse 1 00 0011 dfff ffff Z 1,2 DECFSZ f,d f cskkentse s ugrs, ha 0 1(2) 00 1011 dfff ffff 1,2,3 INCF f,d f nvelse 1 00 1010 dfff ffff Z 1,2 INCFSZ f,d f nvelse s ugrs, ha 0 1(2) 00 1111 dfff ffff 1,2,3 f s W VAGY kapcsolata IORWF 1 00 0100 dfff ffff Z 1,2 MOVF f,d f mozgatsa 1 00 1000 dfff ffff Z 1,2 MOVWF f W mozgatsa f-be 1 00 0000 1fff ffff NOP nincs mvelet 1 00 0000 0xx0 0000 RLF f,d forgats balra az tvitelbiten keresztl 1 00 1101 dfff ffff C 1,2 RRF f,d forgats jobbra az tvitelbiten keresztl 1 00 1100 dfff ffff C 1,2 SUBWF f,d W kivonsa az f-bl 1 00 0010 dfff ffff C,DC,Z 1,2 SWAPF f,d az f als s fels 4 bitjnek cserje 1 00 1110 dfff ffff 1,2 XORWF f,d W s f kizr-vagy kapcsolata 1 00 0110 dfff ffff Z 1,2 Bit orientlt fjlregiszter mveletek BCF f,b az f adott bitjnek trlse 1 01 00bb bfff ffff 1,2 BSF f,b az f adott bitjnek 1-be billentse 1 01 01bb bfff ffff 1,2 BTFSC f,b a bit tesztelse s ugrs, ha 0 1(2) 01 10bb bfff ffff 3 BTFSS f,b a bit tesztelse s ugrs, ha 1 1(2) 01 11bb bfff ffff 3 Konstans s vezrlstad mveletek ADDLW k konstans hozzadsa a W-hez 1 11 11x kkkk kkkk C,DC,Z ANDLW k W s egy konstans S kapcsolata 1 11 1001 kkkk kkkk Z CALL k szubrutin hvs 2 10 0kkk kkkk kkkk CLRWDT Watchdog Timer trlse 1 00 0000 0110 0100 TO, PD GOTO k ugrs cmkre 2 10 1kkk kkkk kkkk IORLW k W s egy konstans VAGY kapcsolata 1 11 1000 kkkk kkkk Z MOVLW k konstans mozgatsa a W-be 1 11 00xx kkkk kkkk RETFIE visszatrs a megszaktsbl 2 00 0000 0000 1001 RETLW k visszatrs szubrutinbl egy konstanssal 2 11 01xx kkkk kkkk RETURN visszatrs szubrutinbl 2 00 0000 0000 1000 SLEEP vlts alv mdba 1 00 0000 0110 0011 TO, PD SUBLW k W kivonsa egy konstansbl 1 11 110x kkkk kkkk C,DC,Z
XORLW k W s egy konstans kizr-vagy kapcsolata

Megjegyzsek: 1. Amikor a d helyn 1 (vagy f) ll, akkor az eredmny sajt magba rdik vissza (fjlregiszter), ha pedig a d helyn 0 (w) ll, akkor a w regiszterbe rdik be. 2. Abban az esetben, ha a mvelet a TMR0 regiszterre vonatkozik (d=1, vagy d=f), s az eloszt a TMR0-hoz van rendelve, akkor az eloszt trldik. 3. Amikor a programszmll (PC) vltozik az utasts kt ciklus hossz lesz. A msodik ciklusban a NOP utasts kerl vgrehajtsra.

35

You might also like