460 likes | 628 Views
Mikrokrmilnik. Kaj nas predvsem zanima? Kaj zmore mikrokrmilniška družina: zmogljivost procesorja (CPE), načini delovanja (samostojen, razširjen,...), tip in obseg pomnilnika (Flash, EEPROM, RAM), V/I možnosti – kakšne izpeljanke obstajajo.
E N D
Mikrokrmilnik • Kaj nas predvsem zanima? • Kaj zmore mikrokrmilniška družina: • zmogljivost procesorja (CPE), • načini delovanja (samostojen, razširjen,...), • tip in obseg pomnilnika (Flash, EEPROM, RAM), • V/I možnosti – kakšne izpeljanke obstajajo. • Razvojna orodja oz. strojna in programska podpora: • simulatorji, analizatorji, emulatorji, • Prevajalniki (zbirnik, c, c++, ...) • OS, gonilniki, knjižnjice, protokoli, ... • Dokumentacija, naše izkušnje, področja uporabe, .. • .....
Mikrokrmilnik • CPE (procesorsko jedro): • programski model, • ukazi (nabor ukazov), • načini naslavljanja, • sklad, subrutine, • sistem prekinitev, prekinitveni strežniki, • programiranje v zbirnem jeziku, • programiranje v višjih programskih jezikih (C) • ….
Mikrokrmilnik • V/I možnosti: • sponke oziroma signali, • digitalni vhodi/izhodi (vrata), • analogni vhodi/izhodi (A/D, D/A pretvorniki), • komunikacijski vmesniki (asinhroni, sinhroni, ...), • časovniki, • .... .
MC9S12DP256B – osnovna zgradba Procesor Asinhrona serijska komunikacijska vmesnika Pomnilniki 8-kanalna 10-bitna A/D pretvornika Serijski periferni vmesniki I2C vodilo Časovnik Komunikacijski vmesniki CAN (Controller Area Network) Pulzno dolžinska modulacija
HCS12 procesor–splošni podatki • 16 bitna širina (notranjega) vodila, 16-bitni registri/operacije • Navzgor združljiv (kompatibilen) s HC11 • Enak programski model kot HC11 • HC11 kompatibilen na nivoju zbirnega jezika • Deluje v več samostojnih in razširjenih načinih, najbolje pa je, da ga uporabljamo v osnovnem samostojnem načinu.
HCS12 – programski model • A,B; 8-bitna (enakovredna) akumulatorja ALI • D (A:B); 16 bitni akumulator • X,Y; 16-bitna (enakovredna) indeksna registra • SP; 16-bitni skladovni kazalec (sklad) • PC; 16-bitni programski števec • CCR; register stanj biti: S, X, H, I, N, Z, V, C rečemo: bit C, bit Z, itd. Na bite H, N, Z, V, C vpliva večina ukazov, vendar previdnost ni odveč.
Programski model:register CCR • biti H, N, Z, V, C • C (Carry): bit prenosa iz/v msb (“most significant bit”). • Pride prav pri računanju z nepredznačenimi števili (prekoračitev obsega računanja, npr. izven 0..255). • Računanju z večbajtnimi števili npr. 32 bitnimi pred/nepred-značenimi števili za prenos naprej v višji del), “podaljšanje” operandov. • Druge aritmetične/logične operacije. • V (Overflow): bit presega (preplavitve, preliva). • Pride prav pri računanju s predznačenimi števili (prekoračitev obsega računaja, npr. izven –128 .. +127). • N, Z (Negative, Zero): bita negativne in ničelne vrednosti. • H (Half Carry): bit polovičnega prenosa (b3-> b4). • pride prav pri računanju z BCD števili, za nas dokaj nezanimiv.
Programski model:register CCR • I (Interrupt (IRQ) mask): maskirni bit zahteve za prekinitev – signal IRQ. • S tem bitom lahko preprečimo (“maskiramo” zahtevo za prekinitev, npr. iz periferne naprave oz. vmesnika. • I = 1 (ukaz SEI) prepreči prekinitve, • I = 0 (ukaz CLI) omogoči prekinitve. • X (Interrupt (XIRQ) mask): maskirni bit (“nemaskirane”) zahteve za prekinitev – signal XIRQ. • S tem bitom so onemogočene prekinitve XIRQ ob začetnem zagonu, dokler jih ne omogočimo z brisanjem bita. • Starejši procesorji tega bita nimajo (prekinitev NMI). • S (Stop) bit: bit ukaza STOP (ustavi procesor in oscilator). • Z brisanjem tega bita omogočimo delovanje ukaza STOP. • Ob zagonu je S=1 in STOP ukaz nima vpliva (NOP).
+ HCS12: ukazi, groba delitev • Prenosni ukazi tipa: • LOAD, STORE, TRANSFER, EXCHANGE, MOVE • Aritmetično logični ukazi: • +, -, *, /, ++, -- • •, +, ¯ , • pomični: levo, desno na več načinov. • Primerjalni (-), testni (•). • Skočni, vejitveni, klicni, vrnitveni. • Bitni ukazi, testiranje, postavljanje, brisanje. • Upravljalni.
HCS12: načini naslavljanja • vsebovano (operand “skrit” v operacijski kodi) • takojšnje (operand v ukazu) • direktno, razširjeno (8/16 bitni naslov operanda) • indeksno (veliko izpeljank) • relativno (vejitve) • Efektivna adresa (naslov) EA: 16-bitni naslov, na katerega se nanaša operacija.
Načini naslavljanja: vsebovano Določilo operanda je vsebovano v operacijski kodi: Primeri: NOP, STOP, WAI, ... SEI, CLI, ... INCA, INCB, DECA, DECB, CLRA,... INX, INY, DEX, ... , INS, DES,... TAB, TAP, TSX, ....
Načini naslavljanja: takojšnje Operand je v polju operanda ukaza: LDAA #10 ;desetiška konstanta LDAB #$10 ;šestnajstiška konstanta LDAA #$100;nesmisel !!! LDD #$0100 ;D je 16 biten (A:B = 01:00) LDX #$2000 LDY #$20 ;privzeta 16-bitna konstanta ;$0020 I.T.D. # Pomeni v zbirnem jeziku takojšni način naslavljanja!
Načini naslavljanja: direktno • V polju operanda ukaza je podan 8-bitni naslov operanda v območju $00 do $FF. • Efektivni naslov je seveda kljub temu 16-biten, a se za • zgornji del (zgornjih 8 bitov) privzame $00. • Območje naslavljanja je torej $0000 do $00FF. • Na ta način smo prihranili en bajt, ukaz je krajši/hitrejši. • Včasih se temu reče naslavljanje “ničte” strani. • Primeri: • LDAA 10 ;desetiško podan naslov, $000A • LDAB $10 ;šestnajstiško podan naslov, $0010 • LDD $10 ;D se polni z vsebino ($0010:$0011) • i.t.d.
Načini naslavljanja:razširjeno • V polju operanda ukaza je podan (poln) 16-bitni naslov operanda v območju $0000 do $FFFF. • Seveda je možno razširjeno naslavljanje tudi v ničti strani, ni pa potrebno oz. smiselno. • Primeri: • LDAA 1024 ;desetiško podan naslov, $0400 • LDAB $1000 ;šestnajstiško podan naslov, $1000 • LDD $1000 ;D se polni z vsebino ($1000:$1001) • i.t.d.
Načini naslavljanja:relativno • Relativno naslavljanje pride v poštev pri vejitvah (vejitvenih ukazih) v območju • 8-bitnega predznačenega odmika od PC (“short branch”), • 16-bitnega predznačenega odmika od PC (“long branch”). • Primeri: • BRA nekam8 ;relativna (brezpogojna) kratka vejitev • LBRA nekam16 ;relativna (brezpogojna) dolga vejitev • BNE nekam8 ;vejitev v primeru neničelne vrednosti • LBNE nekam16 • ....
Načini naslavljanja:indeksno • Pri tvorjenju efektivne adrese sodeluje indeksni register: vsebina indeksnega registra + odmik • Kot indeksni register lahko služi: X, Y, SP, PC • Možnih je veliko (“močnih”) oblik indeksnega naslavljanja: • s 5,9,16-bitnim predznačenim (konstantnim) odmikom • s spremenljivim odmikom v A, B, D. • z avto pred/po de/in-krementiranjem za od –8 do +8 • možen je tudi indeksen posreden način naslavljanja.
Načini naslavljanja:indeksno • Nekaj primerov: ; 5-bitni predznačen odmik LDAA 0,X ;napolni A s pom.besedo z naslovom v X ;A (X) STAA -8,X ;shrani A na naslov X-8 ;9-bitni predznačen odmik LDAB $FF,Y ;A (Y+$FF) STAB -$20,Y ;B (Y-$20) ;16-bitni predznačen odmik .....
Načini naslavljanja:indeksno • Nekaj primerov: ; avtomatsko dekrementiranje/inkrementiranje pred ali po operaciji LDAA 1,X+ ;napolni A s pom.besedo z naslovom v X ;A (X), povečaj X za 1, X X+1 LDAA 2,Y- ;naploni A z vsebino na naslovu v Y, ;A (Y), zmanjšaj potem Y za 2, Y Y-2 ; ekvivalento PSHA, PSX STAA 1,-SP ;preddekrement za 1, potem shrani A STX 2,-SP ;preddekrement za 2, potem shrani X ; prenos – ilustrativni primer MOVW 2,+X,4,Y+ ;predinkrement X za dva, beri besedo ;vpiši besedo, poinkrement Y za 4 .....
Načini naslavljanja:indeksno • Indeksno indirektno (t.j. Posredno z indeksiranjem) LDAA [$10,X] ;naslov operanda EA je na X+$10,X+$11 • Pa še spremenljiv odmik LDAA B,X ;EA je B+X • Pa še posredno s spremenljivim odmikom LDAA [D,Y] ...... JMP [D,PC] ;”skočna” tabela DC.W ;prvi skočni naslov DC.W ;drugi DC.W ;tretji, i.t.d.
Prenos (TRF), premik (MOV), menjava (EXG) Med registri Pomnilnik