ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica...

150
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU ČITAČ HALO KARTICA Student: Miljan Ilić 10811

Transcript of ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica...

Page 1: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU

ČITAČ HALO KARTICA

Student:

Miljan Ilić 10811

Page 2: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

SADRŽAJ 1.UVOD 3

1.1. Sigurnost na internetu 3 1.2. Šta je u čipu? 4 1.3. Sigurnost kod smart kartica 5

2. Mikrokontroleri 6 2.1. Mikroprocesori u odnosu na mikrokontrolere 6 2.2. Mikroprocesori 6 2.3. Mikrokontroleri 8 2.4. Razlike izmedju mikroprocesora i mikrokontrolera 9 2.5. Terminologija 9 2.6. Mikroracunar 10 2.7. Ostala kola za podrsku rada sistema 11 2.8. Mikrokontroler PIC16F877A 12 2.9. Osnovne karakteristike mikrokontrolera PIC16F877A 12 2.10. Kratak opis mikrokontrolera PIC16F877A 13 2.11. Raspored nozica 15 2.12. Generator takta (Oscilator) 16 2.13. Takt/instrukciski ciklus 18 2.14. Reset 19 2.15. Watchdog timer 24 2.16. Prekidi 25 2.17. U/I Portovi 26 2.18. A/D konverzija 34 2.19. Strujna,naponska i temperaturna ogranicenja 37 2.20. Organizacija memorije 37 2.21. Tajmeri 41 2.22. CCP moduli 41 2.23. Ostale periferne jedinice 42 2.24. Set instrukcija mikrokontrolera PIC16F877A 43 2.25. Deo za povezivanje LCD-a 65

3. MIKROC – KOMPAJLER ZA PIC MIKROKONTROLERE 69 3.1. Instalacija 70 3.2. Kreiranje koda 73

4. PROGRAMIRANJE MIKROKONTROLERA PIC18F4550 78 4.1. AllPic programator 78 4.2.Softvare Ic-Prog 79

5. HARDVERSKA REALIZACIJA 85 6. SOFTVER 89

6.1. Softver mikrokontrolera 89

1

Page 3: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

7. PRILOZI 98 7.1. ALLPIC programator 98 7.2. Opis uredjaja 98 7.3. Listing koda u asmebleru 100

8. ZAKLJUCAK 147 9. LITERATURA 148 10. BIOGRAFIJA AUTORA 149

2

Page 4: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

1. UVOD

Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu karticu stim da poseduje jedan detalj koji je odvaja od njih, a to je integrisano kolo ili čip, na kome se nalazi procesor i memorija. Na čipu se na siguran način mogu čuvati određeni podaci.

Najveća snaga Smart Card tehnologije jeste u raznovrsnosti mogućih primena. Zahvaljujući inteligenciji kartice, moguće je razviti raznovrsne sigurnosne aplikacije u oblastima kao što su: zaštita pristupa računaru ili mreži, identifikacija, mobilna telefonija, elektronski novac, vozačka dozvola, zdravstveni karton, zaštita podataka, digitalni potpis, kuponi, zaštita autorskih prava, elektronska trgovina itd. Trenutno su u opticaju desetine miliona smart kartica u raznim oblastima sa tendencijom daljeg razvitka.

slika1.

1.1. Sigurnost na internetu

Naglo širenje Interneta u poslednjoj deceniji i njegovo sve veće korišćenje u poslovne svrhe nametnuli su potrebu za promenama u funkcionisanju svetske mreže. Sve veći broj poverljivih podataka koji se prenose mrežom kao i porast trgovine preko Interneta stavili su u prvi plan problem sigurnosti komunikacije. Naročito je aktuelan problem sigurnosti u komunikaciji web servera i klijenata.

Standardni protokoli za komunikaciju među računarima ne nude rešenje za ove probleme ni TCP/IP ni protokoli višeg nivoa http, smtp, pop3, imap, ... Zato je razvijeno više protokola koji obezbeđuju sigurnu komunikaciju pre svega na Internetu. Neki od njih su na aplikativnom nivou poput secure HTTP-a (HTTPS-a), ili Secure Socket Layer (SSL) protokol koji je defakto standard za sigurnu komunikaciju na Internetu radi na transportnom sloju neposredno iznad TCP. To znači da ga mogu koristiti svi protokoli aplikativnog nivoa koji za transport imaju TCP, a to su na primer http, ftp, smtp, pop3, imap...

Problem tajnosti u računarskim komunikacijama rešava se kriptovanjem podataka na izvoru i dekriptovanjem na odredištu. Savremene metode kriptovanja zasnivaju se na javno dostupnim algoritmima, a tajnost podataka garantovana je tajnošću ključa. Za

3

Page 5: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

kriptovanje se mogu koristiti različiti algoritmi koji se dele u dve velike grupe algoritme sa simetričnim ključem i algoritme sa javnim ključem (odnosno asimetričnim ključevima, od kojih je jedan javni a jedan tajni) . Svaka od ovih grupa ima svoje prednosti i mane.

Secure Socket Layer (SSL) protokol 2.0 i 3.0 kao i na njemu zasnovan TLS (Transport Layer Securiti) koristi prednosti i simetričnog i asimetričnog kriptovanja. Naime asimetrično kriptovanje javnim i dekriptovanje tajnim ključem, koristi se samo za razmenu simetričnih ključeva koji se generišu za svaku sesiju. Na taj način izbegnut je problem razmene simetričnih ključeva, na najmanju meru smanjena je opasnost od razbijanja simetričnog ključa, a zadržana je efikasnost tog algoritma

Centralno pitanje svakog postupka za šifrovanje je mogućnost njegovog razbijanja odnosno njegova snaga. Snaga postupka zavisi od primenjenog algoritma i od dužine ključa. Najjači trenutno dostupan algoritam koji se koristi u okviru SSL-a je triple DES sa dužinom ključa od 168 bita. Njegova snaga je izuzetna i najjači savremeni računari ne mogu razbiti taj algoritam ni za nekoliko milijardi godina neprekidnog rada. Drugi takođe vrlo snažan i zbog svoje brzine najviše rasprostranjen protokol je RC4-MD5 koji ima dužinu ključa od 128 bit-a. Oba ova postupka međutim zaštićena su američkim izvoznim zakonima. Ti propisi ne dozvoljavaju izvoz algoritama za kriptovanje čija je dužina ključa veća od 56* bita. Kako ovi algoritmi nisu dovoljni za zaštitu veoma poverljivih podataka. To su kompanije izvan Sjedinjenih država i Kanade naterane da koriste manje poznate načine kriptovanje npr. SSLeay protokol ili StrongHold server.

Najvažnije mesto svake strukture sa javnim ključem je ono na kome se čuvaju privatni ključevi. Bezbednost čitavog sistema ugrožena je činjenicom da su najosetljiviji podaci pohranjeni na hard diskovima radnih stanica i servera gde su izloženi mogućim zloupotrebama. Druga velika slabost je što proces kriptovanja i dekriptovanja obavlja operativni sistem ili aplikativni softver koji je podložan najrazličitijim bagovima i neotporan na iole snažnije napade.

Rešenje ovih ključnih problema pronađeno je u upotrebi specijalizovanih hardverskih komponenti koje na sebi imaju dovoljno memorije za pohranjivanje svih kriptografski bitnih informacija i dovoljno procesorske snage da obavljaju osnovne kriptografske operacije nezavisno od operativnog sistema i aplikacija. Takvo rešenje je smart kartica.

1.2. Šta je u čipu?

Smart kartica je ništa drugo nego PC u malom. To uključuje: procesor (CPU), pomoću koga se vrše izračunavanja; Read-Only Memory (ROM), memorija na kojoj se nalazi operativni sitem, Random Access Memory (RAM), memorija koja se koristi za privremeno skladištenje prilikom rada procesora i Electronically Erasable and Programmable Read-Only Memory (EEPROM), memorija u kojoj su smešteni podaci od interesa (broj tekućeg računa, sertifikati, ključevi i sl.). Zatim tu je Clock i ulazno izlazni sklop preko koga se komunicira ca okolinom (čitačem). Tipična smart kartica može imati

4

Page 6: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

8-bit procesor koji radi na 5 MHz, 256 do 1024 B RAM-a, 6 do 24 KB ROM-a, 1 do 16 KB EEPROM-a.

Daleke 1986. godine Philips-ova smart kartica sadržala je DES algoritam na čipu, koristeći ne više od 700 bajtova za to. Malo bliže 1999. godine IBM-ova multifunkcionalna kartica na 16 KB EEPROM-a sadrži DES i triple-DES algoritam, omogućava RSA generisanje ključa (do 2048 bita), implementiran je SHA1 hash algoritam kao i mogućnost za DSA kao i RSA potpisivanje.

1.3. Sigurnost kod smart kartica

Najjači adut smart card tehnologije je upravo sigurnost. Vratimo se na čas unutrašnjoj strukturi smart kartice. Da bi se sprečilo kopiranje i zloupotreba, smart kartica se oslanja na kontrolu pristupa podacima koji se nalaze na EEPROM-u pomoću sopstvenog sigurnosnog operativnog sistema smeštenog na ROM-u.

Dobro dizajnirani sistemi koriste višestruke mere sigurnosti. Da bi se koristila kartica neophodno je znati odgovarajući kod za aktiviranje PIN (Personal Identification Number). Postojanje PIN–a eliminiše mogućnost zloupotrebe kartice u slučaju krađe ili gubitka. Identifikacija pomoću PIN koda višestruko je bezbednija od bilo kog drugog načina identifikovanja pre sveg iz sledećih razloga: PIN kod nikada ne putuje mrežom i otporan je na napade tipa brutforce ili dictonary; polise koje regulišu dužinu i učestanost promene PIN-a mogu biti manje restriktivne od onih za password, na taj način se izbegava ugrožavanje bezbednosti sistema od strane osoblja pisanjem identifikacionih kodova na papire ili u datoteke.

Umesto PIN-a, za identifikaciju vlasnika kartice moguće je u nekim slučajevima koristiti otisak prsta. Korišćenjem ove metode povećava se nivo sigurnosti i sam proces identifikacije je tehnički jednostavniji. Jedini problem je što je potrebno obezbediti čitač koji to podržava.

Podaci koji se nalaze na kartici nikada ne napuštaju njeno bezbedno okruženje, otporni su na sve napade na operativni sistem. Smart kartice su prenosne i zato su idealne za bezbednu distribuciju privatnih ključeva u slučaju njihovog centralizovanog generisanja.

Čitač kartice (“spoljni svet”) takođe može da proveri autentičnost smart kartice šaljući slučajno odabranu reč smart kartici. Od kartice se tada zahteva da potpiše poslatu reč svojim privatnim ključem, koji samo ona poseduje, vrati tako potpisanu reč “spoljnom svetu” gde se uz pomoć javnog ključa kartice, vrši verifikacija.

Kako će podaci na kartici biti zaštićeni zavisti dosta od procesorske snage i slobodnog memorijskog prostora. Što je veći procesor i što je više memorije mogućnosti su veće pa je samim tim i zaštita sigurnija.

5

Page 7: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Naravno, nijedna zaštita nije savršena. I obične novčanice se relativno lako falsifikuju i hiljadama puta su bile zloupotrebljene pa se ipak još uvek koriste. Stim u vezi možemo reći da smart card tehnologija povećava nivo sigurnosti na zavidan nivo.

2. Mikrokontroleri

2.1. Mikroprocesori u odnosu na mikrokontrolere

Da bi ukazali na to kakva razlika postoji izmedju mikroprocesora i mikrokontrolera

analiziracemo sliku 1.1 koja predstavlja jedan detaljan blok dijagram mikroracunarskog sistema. Dok je mikroprocesor (CPU) na jedinstvenom cipu sam, mikrokontroler, na jedinstvenom cipu, sadrzi CPU, RAM i ROM memoriju i ostale ulazno-izlazno orijentisane gradivne blokove (paralelni i serijski interfejsi ,tajmeri, logika za prihvatanje prekida, A/D i D/A konvertore i dr.).

Sl.1.1 Detaljni blok dijagram mikroracunarskog sistema

2.2. Mikroprocesori

Na slici 1.2 prikazan je blok dijagram mikroprocesora. CPU cine sledeci blokovi:

ALU, PC, SP, odredjeni broj radnih registara, kola za taktovanje i sinhronizaciju i kola koja se koriste za prihvatanje zahteva za prekid.

6

Page 8: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.2 Blok dijagram mikroprocesora(CPU-a)

Da bi se kompletirao mikroracunarski sistem pored mikroprocesora potrebno je

dodati ROM, RAM memorijske dekodere, oscilator, odredjeni broj ulazno-izlaznih uredjaja, kakvi su paralelni i serijski portovi za podatke, A/D i D/A konvertori i drugo. Pored ulazno-izlaznih uredjaja specijalne namene, cesto se javlja i potreba da se ugrade i kontroleri prekida, DMA kontroleri, kao i brojaci/tajmeri ciji je zadatak da oslobode CPU od obavljanja U/I aktivnosti. Kada se u sistem instaliraju i uredjaji za masovno memorisanje (hard disk, CD drajver), kao i tastatura, mis i CRT displej tada se taj ''mali racunar'' moze koristiti za razlicite aplikacije opste namene. Osnovna namena CPU-a je da pribavlja podatke, obavlja izracunavanja nad podacima i memorise rezultate izracunavanja na disku kao i da za potrbe korisnika prikaze te rezultate na displeju (CRT, TFT, LED i dr.). Programi koje koristi mikroprocesor

7

Page 9: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

memorisani su na disku odakle se citaju i smestaju u RAM. Deo programa, najcesce malog obima, se obicno smesta i u ROM-u.

2.3. Mikrokontroleri

Blok dijagram mikrokontrolera prikazan je na slici 1.3. Mikrokontroler je u sustini pravi ''mali racunar'' na cipu, koji sadrzi sve gradivne blokove CPU-a (ALU, PC, SP, registre i dr.), ali takodje i RAM, ROM, paralelne i seriske U/I portove, generatore takta i dr. Kao i mikroprocesor, i mikrokontroler je uredjaj opste namene, koji pribavlja podatke, obavlja ogranicenu obradu nad tim podacima, i upravlja svojim okruzenjem na osnovu rezultata izracunavanja. Mikrokontroler u toku svog rada koristi fiksni program koji je smesten u ROM-u i koji se ne menja u toku zivotnog veka sistema.

Sl.1.3 Blok dijagram mikrokontrolera

8

Page 10: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Mikrokontroler koristi ogranicen skup jedno- ili dvo-bajtnih instrukcija koje se

koriste za pribavljanje programa i podataka iz interne memorije. Veliki broj ulazno-izlaznih pinova mikrokontrolera se moze koristiti za vise namena sto se softverski definise. Mikrokontroler komunicira sa spoljnim svetom (pribavlja i predaje podatke) preko svojih pinova, pri cemu je arihitektura i skup instrukcija projektovan za manipulisanje podacima obima bajt ili bit.

2.4. Razlike izmedju mikroprocesora i mikrokontrolera

Razlike su brojne ali one koje su najvaznije su sledece: 1. Mikroprocesori su najcesce CISC tipa. Za kopiranje podataka iz spoljne

memorije u CPU koriste veci broj op-kôdova, dok mikrokontroleri jedan ili dva. 2. Za manipulisanje sa podacima tipa bit, mikroprocesori koriste jedan ili dva tipa

instrukcija, dok je kod mikrokontrolera taj broj veci. 3. Mikroprocesori su projektovani za brzi prenos podataka iz programa sa spoljno

adresiranih lokacija u cip, dok se kod mikrokontrolera brzi prenos bitova obavlja u okviru cipa.

4. Mikrokontroler moze da funkcionise kao racunar bez dodataka spoljnih gradivnih blokova (memorije i U/I uredjaja), dok operativnost mikroprocesora bez spoljne memorije i U/I podsistema nije moguca.

2.5. Terminologija

Kako bi opis mikrokontrolera bio jasni dacemo, pre svega, objasnjenja za neke osnovne termine koje cemo koristiti u daljem tekstu: U/I pin – spoljni pin prema spoljasnjem svetu koji se moze konfigurisati kao ulazni, odnosno izlazni. U/I je neophodan u vecini slucajeva da omoguci mikrokontroleru da komunicira, upravlja ili cita informacije. Softver – informacije koje su mokrokontroleru potrebne za rad. Ovaj softver kreira onaj koji odredjuje kako ce mikrokontroler raditi. Bez softvera mikrokontroler nije upotrebljiv. Softver se moze kreirati u raznim jezicima kao sto su: C, Paskal, Asembler, Basic. Programator – uredjaj koji omogucava da program bude upisan u memoriju mikrokontlolera. Postoje razni programatori za PIC mikrokontrolere. Nabrojimo samo neke koji se najcesce koriste: AllPIC programator, TAIT programator, PONY programator. Ovi programatori u stanju su da programiraju pored PIC mikrokontrolera i dosta drugih tipova kola slicnih funkcionalnosti (sto zavisi uglavnom od tipa programatora), kao sto su recimo Atmel mikrokontroleri ili serijski EEPROM. U nasem

9

Page 11: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

projektu smo koristili TAIT programator i softver za njega Icprog. Nesto vise o ovom programatoru recicemo kasnije. Izvorna datoteka – program napisan u asemblerskom jeziku koji mi razumemo. Izvorna datoteka se mora prvo obraditi (iskompajlirati) kako bi je mikrokontroler razumeo. Asembler / kompajler – softverki paket koji prevodi izvornu datoteku u objektnu. Provera gresaka je vec ugradjena i ona je veoma korisna mogućst u trazenju gresaka u programu posto se greske markiraju za vreme procesa asembliranja. MPASM je najnovija verzija asemblera firme Microchip koji podrzava celu PIC familiju. Objektna datoteka – ovo je datoteka koju generise asembler / kompajler.. Ekstenzija ove datoteke je .OBJ ili .HEX zavisno od direktive u asembleru. Mi cemo u nasem projeku i za nas programator koristiti datoteke sa ekstenzijom .HEX. Bagovi – greske koje mi kreiramo nenemerno u toku pisaja programa. Ovde spadaju greske od jednostavnih u kucanju do pogresnog koriscenja sintakse jezika. Vecinu ovih gresaka ce pronaci kompajler.

2.6. Mikroracunar

Mikroracunar je sastavljen od tri osnovna dela: Procesor (CPU), U/I podsistem i memoriski podsistem. Svaki deo moze varirati u kompleksnosti, od osnovnog pa do jako slozenog. Ako je procesor realizovan na jedninstvenom cipu, tada se on naziva mikroprocesor. Kada na jedinstvenom cipu postoji mikroprocesor, i ograniceni iznos memorije i ulaza –izlaza tada se to integrisano kolo naziva mikrokontroler. Na slici 1.4 prikazan je jedan tipican mikroracunarski sistem.

10

Page 12: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.4 Tipican mikroracunarski sistem

Ukazimo sada u kratkim crtama na strukturu i funkcije koje obavljaju osnovni gradivni blokovi mikroracunarskog sistema: Centralna procesorska jedinica (CPU) – srce sistema i moze biti realizovana kao 4, 8 ili16-bitna procesorska jedinica. Memorija – moze biti RAM, ROM, EPROM, EEPROM i FLASH tipa ili bilo koja njihova kombinacija. Memorija se koristiti za cuvanje programa i podataka. Ulaz/Izlaz (U/I) – cine ga blokovi koji mogu da obavljaju digitalne, analogne i specijalne funkcije. Preko ulazno-izlaznog podsistema mikrokontroler komunicira sa spoljnim svetom.

2.7. Ostala kola za podrsku rada sistema

Oscilator –je taktni generator mikroracunar. Njegova uloga je da sinhrono pobudjuje sva kola u okviru mikroracunarskog sistema. Oscilator moze biti napravljen od diskretnih elemenata ili kao gotov modul.

Sistem za napajanje- moze biti izveden kao ispravljacka jedinica, autonomna bateriska ili kombinacija. Jedinica za napajanje moze biti izvedena kao linearna (konvertor je tipa AC-DC), kao prekidacki regulator tipa DC-DC konvertor( konverzije tipa AC-DC-DC) ili neka kombinacija.

11

Page 13: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Pas-cuvar (watchdog timer)- koristi se kod sistema za rad u realnom vremenu da

obavesti procesor o tome da je istekao krajnji rok izvrsenja zadatka ili da aktivira procesor iz stanja HALT u slucaju ako se rad procesora zaustavi kada se procita neki pogresan op-kod ili dr.

2.8. Mikrokontroler PIC16F877A

Kao sto je u uvodu naglaseno centralna komponenta naseg sistema je mikrokontoler PIC16F877A firme Microchip. U ovom poglavlju cemo se truditi da detaljnije opisemo ovo integrisano kolo. Mikrokontroleri imaju integrisane sve gore pobrojane gradivne blokove: CPU, memoriju, oscilator, watch-dog timer i U/I, integrisni su unutar samog cipa. I pored prednosti koje se nude integracijom postoji jedan ozbiljan nedostatak koji se ogleda u malom iznosu implementirane memorije (reda kB) i relativno skromnim mogucnostima ulazno-izlaznog podsistema (dva do tri paralelna porta, do tri tajmera,jedan do dva UART-a, jedan ADC). PIC familija mikrokontrolera podrzava rad sa:

• velikim brojem U/I uredjaja(paralelni portovi,serijski portovi,LCD i dr.); • memorijama razlicitog tipa(EEPROM,FLASH,RAM,ROM)

2.9. Osnovne karakteristike mikrokontrolera PIC16F877A:

• Visoko performansni RISC CPU • 35 instrukcija obima jedne reci • Radna frekvencija ,fref = DC-20 MHz • Trajanje taktnog intervala tcpu = 200 ns, kada je fref = 20 MHz • Op-kôd obima14bita • Harverski magacin sa osam nivoa • Tri nacina adresiranja: -direktno

-indirektno -relativno

• Programska memorija kapaciteta 8 kx14-bitnih reci realizovane u FLASH tehnologiji

• Memorije za podatke tipa RAM kapaciteta 368x8 bita • Memorije za podatke EEPROM tipa kapaciteta 256x8 bita • Prekidi ( do 14 izvora prekida) • U/I portovi: A,B,C,D,E • Tri tajmera: -Timer0: 8-bitni tajmer/brojac dogadjaja -Timer1: 16-bit tajmer/brojac dogadjaja -Timer2: 8-bit tajmer/brojac dogadjaja • 10-to bitni 8-kanalni Analogno-Digitalni (A/D) konvertor • Seriska komunikacija: MSSP,USART

12

Page 14: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

• Paralelna komunikacija: PSP • Power-on Reset- reset pri ukljucenju napajanja(POR) • Power-up timer-unosenje kasnjenja nakon ukljucenja napajanja (PWRT) • Oscillator Start-up Timer-unosenje kasnjenja nakon stabilizovanja radne

frekvencije oscilatora(OST) • Sleep -rezim rada za stednju energije • Watchdog timer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad • Izbor tipa oscilatora • Mala potrosnja,velika brzina rada • Radni napon od 2V do 5.5V • Mala potrosnja energije:

1. <0.6 mA pri naponu od 3V i radnoj frekvenciji od 4 MHz 2. 20µA pri naponu od 3V i radnom taktu od 32kHz 3. <1µA u standby nacinu rada

2.10. Kratak opis mikrokontrolera PIC16F877A

Kao sto smo vec naglasili mikrokontroler PIC16F877A poseduje tipcnu RISC arhitekturu. Arhitektura poseduje odvojene magistrale za podatke i programski kôd. Obim podataka je 8-bitni, dok je programski kôd 14-bitni. Moguce je protocno izvrsenje (pipelining). Sve insrukcije su istog obima (osim instrukcija grananja) i izvsavaju se za cetiri taktna intervala. Dakle, ako koristimo oscilator npr. od 20 MHz dobijamo da ciklus instrukcuije traje 200 ns. Sa blok dijagrama (slika 1.5) mogu se uociti sledeci gradivni blokovi:

• Flash programska memorija – 8 kiloreci obima 14 bita • RAM (File Registers) – 368 bajtova • Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register) • Hardverski magacin (Stack) organizivan u 8 nivoa • EEPROM memorija podataka obima 256 bajtova • Razne periferne jedinice (portovi, tajmeri, A/D konvertor, USART,...)

13

Page 15: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.5 Blok dijagram mikrokontrolera PIC16F877A

14

Page 16: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

2.11. Raspored nozica

Jezgro mikrokontrolera PIC16F887A pakuje se u 40-pinsko DIP pakovanje ili u 44-pinska kucista QFP i PLCC tipa. Na slici 1.6 prikazan je raspored nozica kod 40-to pinskog DIP pakovanja:

Sl.1.6 Raspored nozica mikrokontrolera PIC16F877A

• Napajanje od +5V se dovodi na pinove VDD (11 i 32) a masa na pinove VSS (12 i 31).

• Nozice OSC1 i OSC2 (pinovi 13 i 14) sluze za priklucivanje oscilatorskih komponeti (RC-kolo ili kvarc).

• Pin 1 (MCLR/VPP) ima dvostruku ulogu. Standardno se koristi kao Reset, a u procesu programiranja kao pin za dovodjenje visokog napona (13V).

• Ostalih 33 pina prestavljaju U/I linije. One su grupisane u pet portova (PORTA-PORTE) i svaki od njih mozemo konfigurisati kao ulazni ili izlazni. Osim opste namene vecina pinova ima i specificnu namenu koju dobija u slucaju koriscenja nekih specijalnih periferija mikrokontrolera (brojaca, ADC, serijske komunikacije).

15

Page 17: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

2.12. Generator takta (Oscilator)

Moguce su cetri varijante u konfiguraciji oscilatora: LP Low Power Crystal XT Crystal / Resonator HS High Speed Crystal / Resonator RC Resistor/Capacitor Kontroler moze da radi i na 32 kHz i tada ima jako malu potrosnju. Najednostavnija varijanta je RC oscilator(slika 1.7).Ova varijanta oscilatora moze se koristiti u aplikacijama gde se precizna procena vremenskih intervala ne zahteva.

Sl.1.7 Nacin povezivanja RC oscilatora

Frekfencja oscilovanja zavisi od napona napajanja, vrednosti Rext i Cext ,kao i

radne temperature. Rext treba da je u granicama od 5k do 100k. Van ovog opsega rad oscilatora

postaje nestabilan i osetljiv na spoljne uticaje. Cext se moze i izostaviti, ali zbog stabilnosti se preporucuje 20pF. Na OSC2/CLKOUT generise se taktni impuls cija je perioda cetiri puta veca od

periode oscilatora.

Kod vremenski kriticnih aplikacija treba ugradjivati kvarcni oscilator ili keramicki rezonator. Vrednosti kondenzatora C1 i C2 (slika 1.8), treba da su jednaki.

Sl.1.8 Nacin povezivanja XT oscilatora

16

Page 18: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Preporuka proizvodjaca za vrednosti C1 i C2 kod nekih konfiguracija je: Tabela 1.1

LP 32 kHz 68-100pF - Kristal 200 kHz 15-33pF - Kristal

Tabela 1.2 XT

100 kHz 100-150pF - Kristal 455 kHz 47-100pF Rezonator - 2.0 MHz 15-33pF Rezonator Kristal 4.0 MHz 15-33 Rezonator Kristal

Tabela 1.3 HS

4.0 MHz 15-33pF - Kristal 8.0 MHz 15-33pF Rezonator Kristal 10.0MHz 15-33pF Rezonator Kristal

Moguce je i da se oscilacije dovode iz nekog spoljnjeg izvora kao sto je prikazano na slici 1.9:

Sl.1.9.Nacin

poveivanja

spoljnjeg oscilatora

z

Najcesce se koristi spoljni kristalni oscilator (XT) radne frekvencije 4MHz. Bice prikazano kako se spaja kristalni oscilator sa mikrokontrolerom (slika 1.10) i kako izgleda oblik signala generisan iz oscilatora u trenutku ukljucenja (slika 1.11). Oscilatoru treba neko vreme ΔT da se stabilizira na potrebnu frekvenciju i amplitudu

17

Page 19: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.10 Spajanje kristalnog oscilatora Sl.1.11 Oblik signala pri ukljucenju oscilatora

2.13. Takt/instrukciski ciklus Takt koji se dovodi na nozice oscilatora OSC1 u mikrokontroleru se deli na cetiri vremenski nepreklapajuca taktna signala nazvana Q1,Q2,Q3 i Q4. Skup ovih signala cine jedan instrukciski ciklus(slika 1.12a). U zavisnosti od trenutka generisanja u okviru ciklusa instrukcija taktni signali Q1-Q4 se koriste za sledece namene:

• Q1-pribavljanje instrukcije iz programske memorije • Q2-dekodiranje naredbe iz prethodnog instrukciskog ciklusa • Q3-izvrsenje naredbe iz prethodna dva instrukciska ciklusa • Q4-prenos op-kôda naredbe pozvane u Q1 u instrukcijski registar.

Uzmimo za primer instrukciski ciklus TCY2 (slika 1.12a). U toku taktnog impulsa Q1 instrukcijskog ciklusa TYC2, stanje programskog brojaca (PC) se uvecava za 1 i pribavlja naredna instrukciju iz programske memorije. U toku intervala Q2 dekodira se instrukcija pribavljena u TCY1, a u toku Q3 se izvrsava instrukcija pribavljena u TCY0. U cetvrtom taktu Q4 instrukciskog ciklusa TCY2 se, instrukcija pribavljena u toku Q1, prebacuje se u instrukciski registar.

Sl.1.12 Vremenski dijagram i protocnost kod izvrsavanja instrukcije

a).Vremenski dijagram

18

Page 20: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl 1.12 b) Protocnost kod izvrsenja sekvence instrukcije

Na slici 1.12b prikazan je protocni nacin izvrsenja sekvence od 5 instrukcija. Kao sto se vidi sa slika 1.12b postoje dva stepena u protocnoj obradi. Prvi se odnosi na pribvljanje, a drugi na izvrsenje. Neka je protocni sistem inicijalno prazan. U toku TCY0 pribavlja se instrukcija sa labele 1 tipa MOVLW 55h. U toku TCY1 izvrsava se instrukcija sa labele 1 i pribavlja instrukcija sa labele 2 tipa MOVWF PORTB. U toku TCY2 pribavlja se instrukcija sa labele 3 koja je tipa CALL SUB_1 i pretstavlja poziv potprograma 1, i izvrsava se instrukcija sa labele 2. U toku TCY3 pribavlja se instrukcija sa labele 4 tipa BSF PORTA, BIT3 i izvrsava insrukcija sa labele 3. Napomenimo da je instrukcija sa labele 3 tipa bezuslovno grananje tako da, u principu, efekat izvrsenja instrukcije sa labele 4 ne treba da bude vidljiv,tj. ona treba da pretstavlja neku operaciju tipa NOP (da ne menja statusne markere procesora kao i stanja procesora). Nakon izvrsenja instrukcije CALL SUB_1 vrednost programskog brojaca se postavlja na adresu insrukcije koja se nalazi na labeli 5. U toku TCY4 pribavlja se instrukcija sa labele 5 tipa Instruction @ address SUB_1 (prva naredba potprograma), a izvrsava instrukcija na labeli 4 koja je sa stanovista procesora i programa operacija tipa NOP. U TCY5 pribavlja se druga naredba potprograma i izvrsava prava.

2.14. Reset

Reset sluzi da bi sve registre mikrokontrolera doveli u pocetni polozaj. Ako se mikrokontroler “zakoci” ,ili smo ga tek ukljucili, treba ga resetovati. Da bi sprecili slucajno dovodjenje “0” na MCLR nozicu, porebno ju je preko otpornika povezati na pol napajanja Vdd (slika 1.13)

19

Page 21: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.13. Povezivanje kola za reset

Postoji vise vrste reseta kod PIC16F877A mikrokontrolera:

• Power-on reset (POR) • MCLR Reset pri normalnom radu • MCLR Reset prilikom SLEEP rezima rada • WDT Reset pri normalnom radu • WDT Wake-up (budjenje iz SLEEP rezima rada) • Brown-out Reset (BOR)

Power-on reset (POR) impuls se generise u samom kolu kada se detektuje porast napona napajanja (oko 1,2 – 1,7 V). Da bi se POR iskoristio dovoljno je MCLR nozicu prikljuciti na Vdd direktno ili preko otpornika (sl. 1.10). Ukoliko je porast napona napajnja spor neophodno je na MCLR postaviti spoljnje kolo za reset. Sema kola za POR reset je prikazana na slici 1.14.

20

Page 22: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.14 Spoljasnje kolo za reset

Interno POR kolo nece generisati Reset signal kad napon napajanja padne ispod minimuma. Za situacije kada je moguca pojava BROWN-OUT-a (privremeni pad napona ispod Vmin) prebno je napraviti spoljnje Brown-out reset kolo,sto je prikazano na slici 1.15.

Sl.1.15.Kolo za BROWN-OUT reset Varijanta 1

Kolo ce generisati Reset impuls kada napon bude ispod (Vz + 0.7) V Vz – napon na Zener diodi.

21

Page 23: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.16. Kolo za BROWN-OUT reset Varijanta 2 Uslov da tranzistor iskljuci je:

V7.0R1R2

R1Vdd <+

Power-up Timer (PWRT) generise impuls fiksne sirine (nominalno 72 msec) od pojave impulsa POR-a. Za to vreme ce kontroler biti je u Reset stanju. Za ovaj vremenski period se obezbedjuje da napon napajanja dostigne nominalnu vrednost.Tajmeru PWRT se dozvoljava rad setovanjem PWRTE bita koji pripada konfiguracionoj reci u fazi programiranja cipa. PWRT se taktuje internim RC oscilator. Oscilator Start-up Timer (OST) obezbedjuje kasnjenje od 1024 taktnih intervala nakon isteka kvazistabilne periode PWRT-a (vidi tabelu 1.4). Ovo obezbedjuje da kristalni oscilator ili rezonator startuju stabilnom frekvencijom. OST se aktivira samo kod XT, LP i HS rezima rada i to pri:

• POR, i • budjenju iz SLEEP rezima rada.

Mikrokontroler PIC16F877A ima implementiran dvo-bitni statusni registar nazvan

PCON (Power Control Register). Prvi bit nazvan POR setuje se kada se aktivira Power-on-Reset a resetuje se kada je se aktivira neki drugi Reset. Drugi bit (BOR)kada je setovan ukazuje da je aktivan Brown-out stanja (nepropisana naponska stajna u napajanju mikrokontrolera), zbog kojeg se takodje može aktivirati Reset. Tabela 1.4

Power-up Konfiguracija

oscilatora PWRT omogucen PWRT

onemogucen Budjenje iz SLEEP

rezima rada XT, HS, LP 72 ms + 1024 Tosc 1024 Tosc 1024 Tosc

RC 72 ms - -

Stanja na kojima se postavljaju interni registri CPU-a nakon Reseta zavisi od vrste Reseta i rezima rada u kojima se nalazi procesor (Sleep i normalni).

Stanje nekih registara ostaje nedifinisano, neki zadrzavaju svoje stanje, a ostali se postavljaju u unapred definisana stanja (vidi Tabele 1.5 i 1.6). Tabela 1.5: Postavljanje registara nakon reseta

Program Counter STATUS reg. Power-on reset (POR) 000h 0001 1xxx

MCLR reset pri normalnom radu 000h 000u uuuu

22

Page 24: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

MCLR reset prilikom SLEEP rezima rada 000h 0001 0uuu

WDT Reset pri normalnom radu 000h 0000 1uuu

WDT Wake-up (budjenje iz SLEEP rezima rada) PC+1 uuu0 0uuu

Interapt 004h uuu1 0uuu Tabela 1.6

Registar Power-on reset

MCLR reset pri: -normalnom radu

-SLEEP mod WDT reset pri normalnom radu

Budjenje iz SLEEP -interapt

-WDT time out

00h INDF ---- ---- ---- ---- ---- ---- 01h TMR0 xxxx xxxx uuuu uuuu uuuu uuuu 02h PCL 0000 0000 0000 0000 PC+1 03h STATUS 0001 1xxx 000q quuu uuuq quuu 04h FSR xxxx xxxx uuuu uuuu uuuu uuuu 05h PORTA ---x xxxx ---u uuuu ---u uuuu 06h PORTB xxxx xxxx uuuu uuuu uuuu uuuu 08h EEDATA xxxx xxxx uuuu uuuu uuuu uuuu 09h EEADR xxxx xxxx uuuu uuuu uuuu uuuu 0Ah PCLATH ---0 0000 ---0 0000 ---u uuuu 0Bh INTCON 0000 000x 0000 000u uuuu uuuu 80h INDF ---- ---- ---- ---- ---- ---- 81h OPTION 1111 1111 1111 1111 uuuu uuuu 82h PCL 0000 0000 0000 0000 PC+1 83h STATUS 0001 1xxx 000q quuu uuuq uuuu 84h FSR xxxx xxxx uuuu uuuu uuuu uuuu 85h TRISA ---1 1111 ---1 1111 ---u uuuu 86h TRISB 1111 1111 1111 1111 uuuu uuuu 88h EECON1 ---0 x000 ---0 q000 ---0 uuuu 89h EECON2 ---- ---- ---- ---- ---- ----

23

Page 25: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

8Ah PCLATH ---0 0000 ---0 0000 ---u uuuu 8Bh INTCON 0000 000x 0000 000u uuuu uuuu Legenda: x – Nepoznato stanje u – Nepromenjeno stanje q – Stanje zavisi od uslova - - Ne postoji fizicki cita se kao 0 Struktura Reset logike za PIC 16F877A data je na slici 1.17:

Sl.1.17 Blok dijagram Reseta

2.15. Watchdog timer

Watchdog timer (WDT) taktuje se nezavisanim RC oscilatorom koji radi cak i kad je zaustavljen rad glavnog oscilatora, u SLEEP rezimu rada, povezan na OSC1/CLKIN i OSC2/CLKOUT pinove. Prekoracenje intervala brojanja WDT-a, prilikom normalnog rada, izaziva RESET kontrolera. Ako je kontroler bio u SLEEP rezimu rada prekoracenje tajmera ce probuditi kontroler i program ce nastaviti sa normalnim radom.

24

Page 26: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Iskljucivanje WDT-a se vrsi resetovanjem WDTE bita u konfiguracionoj reci.

Nominalno vreme WDT-a je 18 ms bez uptrebe preskalera. Ovo vreme moze da varira od kola do kola zbog temperature i slicno. Ukoliko je potrebno duze vreme moze se WDT-u pridruziti preskaler sa faktorom deljenja do 1:128, tako se vreme moze produziti do 2,3 s. Instrukcije CLRWDT i SLEEP resetuju WDT. TO’ bit u STATUS registru ce biti 0 nakon isteka WDT.

2.16. Prekidi

Mikrokontroler PIC16F877A podrzava tehniku rada sa prekidima (interrupts). Postoji ukupno 14 izvora pekida, neki su interni, a drugi su eksterni. Svaki prekid nema sopstveni vektor-broj.Kada se prihvati zahtev za prekid izvrsenje prekidnog programa pocinje od adrese 0x0004. Tada se programskim putem testira stanje markera koji se postavljaju kada se aktivira odgovarajuci prekid (interrupt flags polling).Kada se ustanovi koji je od uredjaja generisao zahtev za prekid prelazi se na izvrsenje odgovarajuce rutine za obradu tog prekida. Povratna adresa prekinutog programana cuva se automatski u hardverski magacin.Povratak iz prekidnog programa se vrsi instrukcijom RETFIE. Upravljacki registar INTCON se koristi za maskiranje prekida. Pregled sadrzaja marker bitova kojim se generise zahtev za prekid je definisan na slici 1.18. Znacenje pojedinih markera je sledece:

• T0IF (INTCON:2) setuje se na prekoracenje Timer0 • INTF (INTCON:1) setuje se u slucaju da nastupi spoljni prekid na pinu

RBO/INT • RBIF (INTCON:0) setuje se kada se dogodi promena stanja na nekom od pinova

RB4, RB5, RB6, RB7 • PSPIF (PIR1:7) PSP marker bit koji se koristi u opreciji citanja i upisa na

PORTD kada je on konfigurisan kao PSP • ADIF (PIR1:6) marker koji se koristi za vreme analogno-digitalne konverzije • RCIF (PIR1:5) marker koji oznacava da je prijemni bafer koji koji koristi

USART blok, pun • TXIF (PIR1:4) marker koji pokazuje da je bafer za slanje podataka koji koristi

USART prazan • SSPIF (PIR1:3) marker koji se koristi za rad sinhronog serijskog porta • CCP1IF (PIR1:2) marker koji koristi CCP1 blok • TMR2IF (PIR1:1) marker koji setije Timer2 kada dodje do prkoracenja • TMR1IF (PIR1:0) marker koji setije Timer2 kada dodje do prkoracenja • EEIF (PIR2:4) marker koji se setuje kada se zavrsi upis u interni EEPROM • BCLIF (PIR2:3) marker koji koji korist SSP blok kada je konfigurisan da radi u

I2C master rezimu rada • CCP2IF (PIR2:0) marker koji koristi CCP2 blok.

Pored bita za dozvolu rada svih prekida General Interrupt Enable (GIE) i bita za dozvolu rada prekida generisanih os strane periferija (PEIE), ovom registru pripadaju i markeri prekida (interrupt-flags) i bitovi koji dozvoljavaju prekid koji izaziva tajmer0, spoljasnji prekid na pinu RB0/INT i prekida porta B na promenu stanja. Osim ova tri osnovna

25

Page 27: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

prekida postoji jos 11 periferijskih prekida. Bitovi za njihovo omogucenje nalaze se u registrima PIE1 i PIE2, a korespodentni flegovi,u registrima PIR1 i PIR2. Ovi se flegovi setuju cim se ispuni uslov interapta bez obzira na stanje njihovog bita omogucenja, a po izvrsenju servis rutine potrebno ih je sostverski resetovati. Na sledecoj slici (sl. 1.18) prikazana je logicka sema svih interrupt-a sa tabelom u kojoj su oni pobrojani:

Sl.1.18 Sema logike za prihvatanje zahteva za prekid i sadrzaj

2.17. U/I Portovi

Za vezu mikrokontrolera sa spoljnim svetom zaduzeni su ulazno/izlazni portovi.

Ima ih pet i oznaceni kao PORTA, PORTB, PORTC, PORTD i PORTE. Razlicitog su obima. PORTE cine tri pina, PORTA sest, a ostala tri porta su osmopinski. Odredjeni pinovi U/I portova u zavisnosti od rezima rada mogu da imaju fiksne ili promenljive funkcije. Konfiguracija smera prenosa na odgovarajucoj bit poziciji porta vrsi se upisom konfiguracione reci u pripadajuci TRIS registar pri cemu nula konfigurise pin kao izlazni, a jedinica kao ulazni. Svaki port poseduje odgovarajuci registar podataka (PORTX) preko kojeg se programski pristupa U/I pinovima. Upis u neki od tih registara inicirace upis u lec tog porta, a njegovo citanje rezultirace citanjem logickih stanja direktno sa pinova. Sve instrukcije upisivanja su tzv. read-modify-write instrukcije. To znaci da se pri upisu u port prvo ocitaju stanja pinova, izvrsi modifikacija, a potom ispravljena vrednost upise u lec porta. Nema velike razlike u elektricnoj konstrukciji navedenih pet portova. Port B se od ostalih razlikuje posebnom opcijom koju nude cetiri MSB. Ukoliko se setuje bit RBIE u registru INTCON, svaka promena stanja na ovim pinovima generisace prekid mikrokontrolera.

26

Page 28: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Port A

Port A je 6-to bitni bidirekcioni port i sadrzi pinove od RA0 do RA5. TRISA je direkcioni registar koji odredjuje smer pinova na portu. Ako postavimo TRIS na 1 pin je ulazni, u suprotnom pin je izlazni. Npr. ako je TRISA=0b111111 ceo port A je ulazni, a ako je TRISA=0b000000, ceo port A je izlazni. Moguce je podeliti port A, tako da, na primer, prva 2 bita budu ulazna,a ostala 4 izlazna (TRISA=0b110000). Na slikama 1.19 i 1.20 bice prikazan blok dijagram porta A:

Sl.1.19 Port A od RA0 do RA3 i RA5 Sl.1.20 Pin RA4 na portu A

Pin RA4 je izlaz sa otvorenim drejnom pa se zahteva od projektanta da veze otpornik odgovarajuce vrednosti za pozitivan napon. Pri tome mora se voditi racuna o strujnom ogranicenju pina o cemu ce biti kasnije reci. Ceo port A ima mogucnost analogno-digitalne konverzije i prvenstveno se korisi u te svrhe. A/D konvertor je 10-to bitni sa 8 ulaznih kanala, jer se u ove svrhe korite i svi pinovi na portu E (i pinovi porta A od RA0 do RA3 i pin RA5). Pin RA4 moze da se izkoristi za ulaznu frekvenciju timer0. Timer0 moze da se okida preko ovog pina na rastucu ili opadajucu ivicu ulaznog signala, sto se odradjuje selekcijom bita T0SE u registru OPTION. Na slici 1.21 dat je tabelarni prikaz funkcija pojedinih pinova porta A i registri koji se koriste za konfigurisanje porta:

27

Page 29: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.21 tabelarni prikaz registara za konfigurisanje porta A

Port B

Port B je 8-mo bitni bidirekcioni port. Svi pinovi imaju odgovarajuce bitove u TRISB registru kojim moze da se pinovi konfigurisu kao izlazni ili kao ulazni. ‘1’ u nekom bitu u TRISB registru stavlja odgovarajuci pin u stanje visoke impedanse i on radi kao ulazni pin. ‘0’ u TRISB registru prosledjuje sadrzaj bita iz izlaznog (latch) registra na pin i on radi kao izlazni. Svi pinovi u PORTB imaju pull-up otpornike. Ovi otpornici se mogu ukljuciti jednim kontrolnim bitom. To se radi stavljanjem RBPU' bita na ‘0’. Pull-up otpornici se automatski iskljucuju kad se pin konfigurise kao izlazni. Otpornici su iskljuceni kod Power-on-reset-a. Cetri pina na PORTB (RB7-RB4) imaju mogucnost generisanja interapta. Samo pinovi definisani kao ulazni mogu prouzrokovati interapt. Vrednost na pinovima se poredi sa starom vrednoscu uhvacenoj kod zadnjeg citanja porta B. Nad ovim vrednostima se vrsi OR operacija da bi se generisao interapt na promenu stanaja na PORTB. Ovaj interapt moze probuditi kontroler iz SLEEP rezim rada. Korisnik moze u rutini za obradu prekida ponistiti prekid sledecim postupcima:

• Citanjem ili pisanjem u PORTB. Ovo ce ukloniti neslaganje na portu i uslov za interapt.

• Resetovanjem flag bita RBIF. Neslaganje na portu B ce nastaviti da setuje RBIF. Citanje PORTB-a ce prekinuti neslaganje i uslov za interapt i omoguciti resetovanje bita RBIF Kombinacija interapta na promennu stanja PORTB i pull up otpornika se moze iskoristiti za jednostavan interfejs za tastaturu. Da bi promena na U/I pinu bila prepoznata sirina impusa mora da bude majmanje koliko i jedan masinski ciklus (4 * Fosc). Na slikama 1.22 i 1.23 prikazana je struktura PORTB.

28

Page 30: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.22 Struktura pinova od RB0 do RB3 Sl.1.23 Struktura pinova od RB4 do RB7

Na slici 1.24 su prikazane tabele sa funkcijama pojedinih pinova i registara koji se koriste za konfigurisanje porta B.

29

Page 31: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.24 Tabela registara koji sluze za konfigurisanje PORTB.

Pin RB0 ima mogucnost da izazove prekid mikrokontrolera. Ako je ovaj interapt

omogucen (setovan bit 4 (INTE) u INTCON registru) i na RB0/INT pinu se pojavi odgovarajuca ivica (definisana INTEDG bitom OPTION registra) nastupice interapt. Na kraju interapt rutine potrebno je u programu resetovati INTF bit u INTCON registru, kako bi naredni interapt bio moguc. Port C

Port C je 8-mo bitni bidirekcioni port. Ovaj port je poseban sto na pinovima RC6 i RC7 ima ugradjen USART modul koji sluzi za serisku komunikaciju (npr. Sa racunarom). Prilikom koriscenja modula za serisku komunikaciju potrebno je softverski konfigurisati pinove RC6 i RC7 tako da budu u funkciji USART modula. Na slikama 1.25 i 1.26 su prikazane blok seme PORTC, a funkcionalna tabela registara koji se koriste za konfigurisanje samog porta data je na slici 1.27.

Sl.1.25. Struktura pinova od RC0 do RC2 i od RC5 do RC7

30

Page 32: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.26.Struktura pinova od RC3 i RC4

Sl.1.27 Tabela registara koji sluze za konfigurisanje PORTC

31

Page 33: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Port D

Port D je 8-mo bitni bidirekcioni port. Ovaj port se moze konfigurisati kao 8-mo bitni paralelni mikroprocesorski port (parallel slave port-PSP), podesavanjem konfigurisuceg bita PSPMOTE (TRISC<4>). U tom rezimu rada ulazni bafer je TTL tipa. Na slikama 1.28 i 1.29 je prikazana blok sema PORTD i funkcionalna tabela registara koji se koriste za konfigurisanje samog porta.

Sl.1.28. Struktura porta D

Sl.1.29 Tabela registara koji sluze za konfigurisanje PORTD

32

Page 34: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Port E

Port E je sirine 3 bita.Ima mogucnost A/D konverzije.Svaki pin porta E moze da se konfigurise softverski kao ulazni ili izlazni. Ulazni bafer je Schmitt Trigger tipa. Pinovi se mogu konfigurisati kao digitalni ili analogni,kao i u slucaju porta A, sto je vec pomenuto. Na slikama 1.30 i 1.31 prikazana je strukturna blok sema PORTE i tabelarni prikaz registara koji sluze za konfigurisanje.

Sl.1.30 Struktura porta E

33

Page 35: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.31 Tabela registara koji sluze za konfigurisanje porta

2.18. A/D konverzija

S obzirom na kontinualnost pojava u spoljasnjem svetu, tesko je upravljati bilo

kojim procesom bez digitalizacije analognih velicina. Kao sto smo vec napomenuli PORTA i PORTE imaju mogucnost A/D konverzije sto podrazumeva da se mogu konfigurisati kao analogni ili digitalni. Ako zelimo da koristimo A/D konverziju moramo ukljuciti modul za tu svrhu i podesiti ga na nacin koji nam najvise odgovara. Da bi to uradili potrbno je da pravilno podesimo registre ADCON0 i ADCON1. Zato u nastavku dajemo prikaz tih registara i prikaz tabele koji su potrebni za konfigurisanje. Na slici 1.32 je prikazan je registar ADCON0. Registar ADCON0 sluzi za podesavanje A/D konverzije: frekvencije semplovanja A/D konvertora, kanal koji se koristi za A/D konverziju, pocetak A/D konverzije i ukljucuje se modul za A/D konverziju. Registrom ADCON1 (na slici 1.33) odredjujemo ulogu pojedinih pinova (analogni ili digitalni). Modul za A/D konverziju se bazira na A/D konvertor sa sukcesivni aproksimacijama.

34

Page 36: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.32 Registar za podesavanje A/D konverzije

35

Page 37: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.33 Podesavanje tipa kanala (analogni/digitalni)

36

Page 38: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

2.19. Strujna,naponska i temperaturna ogranicenja

U tabeli 1.7 dat je pregled strujnih, naponskih i temperaturnih ogranicenja mikrokontrolera i pojedinih portova. Tabela 1.7: Strujna,naponska i temperaturna ogranicenja mikrokontrolera

Radna temperatura ambijenta -55 do +125ºC Napon na pojedinim pinovima u odnosu na Vss (bez Vdd, MCLR i RA4)

-0.3V do(Vdd+0.3)

Temperatura cuvanja mikrokontrolera -65 do +150ºC Napon Vdd u odnosu na Vss -0.3V do +7.5V Napon na MCLR u odnosu na Vss 0 do +14V Napon na RA4 u odnosu na Vss 0 do +8.5 V Ukupna disipacija 1W Maksimalna izlazna struja na pinu Vss 300mA Maksimalna ulazna struja na pinu Vdd 250mA Ulazna struja kroz klamp diode IIK (VI < 0 ili VI > VDD) +/- 20mA Izlazna struja kroz klamp diode IOK (VO < 0 or VO > VDD) +/- 20mA Maksimalna struja koju moze da primi jedan pin 25mA Maksimalna struja koju moze da da svaki pin 25mA Maksimalna struja koju moze port da primi(port A,B,C,D i E)

200mA

Maksimalna struja koju moze port da da (port A,B,C,D i E) 200mA

2.20. Organizacija memorije

Strukturu memorije ovog mikrokontrolera cine tri odvojena bloka: 1. Programska memorija 2. Memorija podataka 3. EEPROM memorija podataka

Odvojeno od nabrojanoh memorijskih blokova egzistira zasebna struktura magacina

(Stack), koji se satoji od osam 13-bitnih registara. Stack pointer se ne moze citati, niti se u njega moze upisivati. Prilikom izvrsenja instrukcije CALL ili prilikom poziva prekida mikrokontrolera, adresa sledece instrukcije se stavlja na magacin. Magacin radi na principu ciklicnog bafera, sto znaci da se u njega mogu staviti osam razlicitih adresa, a da se upisom devete brise prva i tako redom. Programski se ne moze utvrditi da li je doslo do prepunjeja steka.

37

Page 39: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Organizcija programske memorije

PIC16F877A imaju 13-bitni programski brojac (PC) koji je u mogucnosti da adresira memorijski prostor od 8k programskih reci od 14 bita. Reset vektor je 0x0000 i od njega pocinje izvrsavanje programa. Interapt vektor je 0x0004. Mapa programske memorije i magacin prikazani su na slici 1.34.

Sl.1.34 Mapa programske memorije i stack

Organizacija memorije podataka

Memorija za podatke je izdeljena u vise celina–banki (banks), a sastoji se od registara opste namene (General Purpose Registers) i registara specijalne funkcije (Special Function Registers). U jednom od specijalnih registara, tzv. STATUS registru postoje dva bita RP1 i RP0 koji sluze za odabir zeljene banke podataka po principu prikazanom na slici 1.35.

38

Page 40: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.35.Nacin kodovanja Bank

Svaka banka moze da sadrzi do 128 registara (0x7F). Nize lokacije u banci zauzimaju specijalni regisri, a ostatak prostora popunjavaju registri opste namene implementirani kao staticki RAM. Neki specijalni registri koji se cesto koriste mapirani su u sve banke da bi se omogućio brzi pristup i redukcija kôda. Mapa registara mikrokontrolera PIC16F877 prikazana je na slici 1.36. Nekoliko specijalnih registara su registri jezgra, usko povezani sa funkcionisanjem CPU. Ostali registri su vezani za periferne module i sluze njihovom upravljanju i kontroli statusa.

Programski brojač (PC) odredjuje adresu instrukcije u programskom flesu koja ce sledeca biti pribavljena. Rec je o 13-bitnom registru. Simbolicko ime nizeg bajta je PCL. To je registar koji se moze i upisivati i iscitavati. Težih pet bita programskog brojaca smesteni su u izolovani registar PCH kojem se pristupa samo preko leca PCLATH mapiranom u internom RAM-u na adresi 0x0A.

STATUS registar je veoma bitan i zato je predvidjeno da se moze adresirati iz bilo koje banke. On pokazuje status aritmeticko-logicke jedinice, reset status mikrokontrolera i sadrzi bite za selekciju banki internog RAM-a. Od navedenih flegova posebno treba izdvojiti Zero bit (Z) koji se postavlja kad je rezultat aritmeticke operacije jednak nuli i bit prenosa/pozajmice Carry (C).

Registar OPTION_REG se koristi za konfiguraciju preskalera za tajmer 0 ili Watchdog, za upravljanje tajmerom0, selekciju ivice okidanja eksternog interapta, i za omogucavanje Pull-up otpornika na portu B.

Kada je rec o registrima jezgra ne treba zaboraviti par FSR (File Select Register) i INDF (Indirect File), koji sluze za indirektno adresiranje memorije podataka. Bilo koja instrukcija koja se obraca INDF registru ustvari indirektno pristupa onoj lokaciji internog RAM-a cija je adresa trenutno u registru FSR.

39

Page 41: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.36 Mapa registra PIC16F877

40

Page 42: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Interni EEPROM za podatke

Ako je potrebno neke podatke sacuvati i po ukidanju napajanja mikrokontrolera, treba ih prethodno zapisati u interni EEPROM. Ova memorija sadrzi 256 bajtova.

2.21. Tajmeri

Ove se periferije koriste za merenje vremena i brojanje eksternih dogadjaja. Ugradjena su tri tajmerska modula (TMR 0,1,2) i svaki ima svoje specificnosti. Tajmer0 je jednostavni 8-bitni brojač koji generise interapt pri prelasku sa 0xFF na 0x00 (overflow). Poseduju ga svi nizi PICmicro™ procesori i ovde je zadrzana kompatibilnost s njima. Izvor takta za tajmer0 moze biti bilo interni sistemski sat (Fosc/4), bilo spoljni generator takta spojen na pin RA4/T0CKI. Moguce je podesiti da se brojac inkrementira na rastucu ili opadajucu ivicu spoljnjeg signala. U kombinaciji sa modulom tajmera 0 moze se koristiti programabilni preskaler (delilac frekvencije) sa odnosima deljenja od 1:2 do 1:256. Ukoliko deljenje nije potrebno preskaler se dodeli watchdog tajmeru. Kada je preskaler u upotrebi maksimalna frekvencija eksternog izvora iznosi 50 MHz sto je vece od maksimalne frekvencije samog mikrokontrolera. Tajmer1 je 16-bitni i takodje je osposobljen da radi kao brojac ili merac vremena. Ima tri izvora takta: sistemski sat (Fosc/4), spoljasnji takt ili spoljasnji kristal. Brojac eksternih dogadjaja moze se sinhronizovati sa internim oscilatorom, a postoji i asinhroni nacin rada koji omogucuje da se brojac inkrementira i u sleep rezimu. Preskaliranje je upotrebljivo sa vrednostima deljenja 1:1, 1:2, 1:4 i 1:8. Tajmer2 je 8-bitni tajmer sa programabilnim preskalerom i postskalerom. Moze biti tajmer/brojac opste namene. Medjutim, potreban je CCP modulu prilikom generisanja PWM signala i modulu za sinhronu serijsku komunikaciju (SSP) kao Baud Rate generator. U kooperaciji sa tajmerom 2 koristi se registar PR2 (Period Register). Kada se vrednost brojaca izjednaci sa vrednoscu upisanom u registar PR2, generise se odgovarajuci interapt.

2.22. CCP moduli

CCP je skracenica za Compare/Capture/PWM. PIC16F877A poseduje dva ovakva modula koji mu pomazu da se lakse nosi sa raznim zahtevima real-time aplikacija. U rezimu rada Capture kada se desi dogadjaj na pinu RC2/CCP1 16-bitna vrednost tajmera 1 preslikava se u registre CCPR1H:CCPR1L. Istovremeno se setuje korespondentni interapt fleg u registru PIR1. Da bi ova operacija bila uspesna tajmer1 mora raditi u tajmerskom rezimu ili rezimu sinhronizovanog brojanja. U rezumu rada Compare 16-bitna vrednost registra CCPR1 se stalno poredi sa vrijednoscu para registara tajmera1. Kada dodje do izjednacenja moguce je da se pin RC2/CCP1 setuje, resetuje ili ostane nepromenjen, sto se ranije podesi odgovarajućim konfiguracionim bajtom upisanim u registar CCP1CON. I u ovom slucaju se setuje interapt fleg CCP1IF. U rezimu rada PWM (Pulse Width Modulation) pin RC2/CCP1 proizvodi sirinsko-impulsni modulisani signal rezolucije do 10 bita. Pojednostavljeni blok-dijagram PWM modula dat je na slici 1.37.

41

Page 43: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.37 Pojednostavljeni blok-dijagram PWM modula

Period PWM signala odredjuje se upisom u PR2 registar po formuli: PWM_perid = [(PR2)+1]*4*Tosc*TMR2_preskajler Vreme ispune (Duty Cycle Time) menja se upisom u registar CCPR1L i dva bita registra CCP1CON (biti 5 i 4). Time je omogucena maksimalno 10-bitna rezolucija PWM izlaza. Formula za proracun je: PWM_Duty_Cycle = (CCPR1L:CCP1CON<5:4>)*Tosc*TMR2_preskajler

2.23. Ostale periferne jedinice

Mikrokontroler PIC16F877 poseduje jos nekoliko korisnih periferijskih modula koji ce u ovom odjeljku biti samo kratko spomenuti. Mikrokontroler obicno nije usamljen, nego je deo mreze uredjaja koji trebaju medjusobno komunicirati i razmenjivati podatke. U tu svrhu, on je opremljen sa tri hardverska komunikaciona modula. Prvi od njih je SSP modul (Synchronous Serial Port), koji sluzi za komunikaciju sa serijskim EEPROM-ima, pomerackim registrima, displej-drajverima, itd. Ovaj modul moze raditi u jednom od dva rezima: 1. Serial Peripheral Interface (SPI) 2. Inter-Integrated Circuit (I2C)

Drugi serijski komunikacioni modul je USART (Universal Synchronous Asynchronous Receiver Transmiter).On uglavnom sluzi za povezivanje sa personalnim

42

Page 44: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

racunarom, ali to nije njegova jedina mogucnost primene. USART se moze konfigurisati u neki od sledecih modova rada: 1. Asinhroni rad (full duplex) 2. Sinhroni master rad (half duplex) 3. Sinhroni slave rad (half duplex) Osim serijskih, postoji i jedan paralelni komunikacioni modul. Rec je o modulu PSP (Parallel Slave Port). On sluzi da se PIC16F877 direktno poveze na 8-bitnu magistralu podataka drugog mikroprocesora. Eksterni procesor tada koristeci linije Read (RD) i Write (WR) moze citati i upisivati PORTD registar kao svaki drugi 8-bitni lec.

2.24. Set instrukcija mikrokontrolera PIC16F877A U tabelei 1.8 dat je prikaz instrukcija mikrokontrolera PIC16F877A. Tabela 1.8: Set instrukcija PIC16F877A

Instrukcija instr flegovi trajanje ADDWF f, d add W and f C,DC,Z 1 ANDWF f, d AND W with f Z 1 CLRF f Clear f Z 1 CLRW Clear W Z 1 COMF f, d Complement f Z 1 DECF f, d Decrement f Z 1

DECFSZ f, d Decrement f, Skip if 0 - 1

INCF f, d Increment f Z 1

INCFSZ f, d Increment f, Skip if 0 - 1

IORWF f, d Inclusive OR W with f Z 1

MOVF f, d Move f Z 1 MOVWF f Move W to f - 1 NOP Operation - 1

RLF f, d Rotate left f through carry C 1

RRF f, d Rotate right f through carry C 1

SUBWF f, d Subtract W from f C,DC,Z 1 SWAPF f, d Swap nibles in f - 1 XORWF f, d Exclusive OR W Z 1

43

Page 45: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

with f BCF f, b Bit Clear f - 1 BSF f, b Bit Set f - 1

BTFSC f, b Bit Test f, Skip if Clear - 1/2

BTFSS f, b Bit Test f, Skip if Set - 1/2

ADDLW k Add literal and W C,DC,Z 1 ANDLW k AND literal with W Z 1 CALL k Call subrutine - 2

CLRWDT Clear Watchdog Timer TO’, PD’ 1

GOTO k Go to address - 2

IORLW k Inclusive OR literal with W Z 1

MOVLW k Move literal to W - 1

RETFIE Return from interrupt - 1

RETLW k Return with literal in W - 1

RETURN Return from subroutine - 1

SLEEP Go into stanby mode TO, PD 1

SUBLW k Subtract W from literal C,DC,Z 1

XORLW k Exclusive OR literal with W Z 1

1. ADDWF f,d Operandi: f (0 - 255) d (0 - 1) Operacija: (W) + (f) →(dest) Dodaje sadrzaj registra W sadrzaju registra 'f'. Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'. Primer: ADDWF FSR, 0

44

Page 46: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Pre instrukcije:

W= 0x17 FSR = 0xC2

Posle instrukcije

W= 0xD9 FSR = 0xC2

2. ANDWF f,d Operandi: f (0 - 127) d (0 - 1) Operacija: (W) .AND. (f) → (dest) Logicki AND sa sadrzajima reistra W i 'f' Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'. Primer 1: ANDWF FSR, 1 Pre instrukcije:

W= 0x17 FSR = 0xC2 Posle instrukcije: W = 0x17 FSR = 0x02 Primer 2: Primena ove instrukcije je zgodna ukoliko treba nekoliko bita u nekom registru postaviti da budu 0 a da pritom ostali zadrze svoje stanje. Recimo u PORTB treba ugasiti 2,3 i 6 bit, bez obzira na mjihovo renutno stanje. Ostali bitovi (0,1,4,5,7) treba da zadrze njihovo trenutno stanje.(Na izlazu nam treba x0xx00xxb)

45

Page 47: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

MOWLW 10110011b ;u bitove koje gasimo ide 0 ANDWF POTRB, 1 Pre instrukcije: W = 10110011b PORTB = 01100110b Posle instrukcije: W = 10110011b PORTB = 00100010b

3. CLRF f Operandi: f (0 - 127) Operacija: 00h → (f) Brise sadrzaj registra 'f' i setuje Z flag. Primer: CLRF FLAG_REG Pre instrukcije:

FLAG_REG = 0x5A Posle instrukcije:

FLAG_REG = 0x00 Z = 1

4. CLRW Operandi: nema Operacija: 00h → (W) Brise sadrzaj registra W i setuje Z.flag Primer: CLRW Pre instrukcije:

W = 0x5A Posle instrukcije

W = 0x00 Z = 1

46

Page 48: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

5. COMF f,d Operandi: f (0 - 127) d (0 - 1) Operacija: (f) → (dest) Pravi komplement sadrzaja registra 'f'. Ako je 'd' = 0 rezultat se smesta u registat W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'. Primer: COMF REG1,0 Pre instrukcije:

REG1 = 0x13 Posle instrukcije

REG1 = 0x13 W = 0xEC

odnosno

REG1 = 0b00010011 W = 0b11101100

6. DECF f, d Operandi: f (0 - 127) d (0 - 1) Operacija: (f) - 1 → (dest) Umanjuje zadrzaj registra 'f' Ako je 'd' = 0 rezultat se smesta u registat W. Ako je 'd'= 1 rezultat se smesta u registar 'f'. Primer: DECF CNT,1 Pre instrukcije:

47

Page 49: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

CNT = 0x01 Z = 0

Posle instrukcije

CNT = 0x00 Z = 1

7. DECFSZ f,d Operandi: f (0 - 127) d (0 - 1) Operacija: (f) - 1 → (dest); preskoci ako je rezultat 0 Umanjuje sadrzaj registra 'f'. Ako je 'd' = 0 rezultat se smesta u registat W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'. Ako je rezultat 0, preskace se operacija koja neposredno sledi. Umesto nje se izvrsava NOP. Instrukcija traje 2 ciklusa. Operacija se koristi za uslovno granjane programa. Primer: OVDE DECFSZ CNT, 1 GOTO PETLJA DALJE ---

--- ---

Pre instrukcije:

PC = adresa OVDE Posle instrukcije

CNT = CNT - 1 Ako je CNT = 0

PC = adresa DALJE Ako je CNT <> 0

PC = adresa OVDE + 1

48

Page 50: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

8. INCF f, d

Operandi: f (0 - 127) d (0 - 1) Operacija: (f) + 1 → (dest) Uvecava sadrzaj registra 'f' Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'. Primer: INCF CNT,1 Pre instrukcije:

CNT = 0xFF Z = 0

Posle instrukcije

CNT = 0x00 Z = 1

9. INCFSZ f,d Operandi: f (0 - 127) d (0 - 1) Operacija: (f) + 1 → (dest); preskoci ako je rezultat 0 Uvecava sadrzaj registra 'f'. Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'.Ako je rezultat 0, preskace se operacija koja neposredno sledi. Umesto nje se izvrsava NOP. Instrukcija traje 2 ciklusa. Operacija se korist za uslovno granjane programa. Primer: OVDE INCFSZ CNT, 1 GOTO PETLJA DALJE --- --- --- Pre instrukcije:

49

Page 51: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

PC = adresa OVDE

Posle instrukcije:

CNT = CNT + 1 Ako je CNT = 0:

PC = adresa DALJE Ako je CNT <> 0:

PC = adresa OVDE + 1

10. IORWF f,d Operandi: f (0 - 127) d (0 - 1) Operacija: (W) .OR. (f) → (dest) Logicki OR sa sadrzajima reistra W i 'f' Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u registar 'f'. Primer:

IORWF RESULT,0 Pre instrukcije:

W = 0x91 RESULT = 0x13

Posle instrukcije:

W = 0x13 RESULT = 0x93

Primer 2: Primena ove instrukcije je zgodna ukoliko treba nekoliko bita u nekom registru postaviti da budu 1 a da pritom ostali zadrze svoje stanje. Recimo u PORTB treba ugasiti 2,3 i 6 bit, bez obzira na njihovo renutno stanje. Ostali bitovi (0,1,4,5,7) treba da zadrze svoje trenutno stanje. (Na izlazu nam treba x1xx11xxb) MOWLW 01001100b ;u bitove koje palimo ide 1 ANDWF POTRB,1 Pre instrukcije:

50

Page 52: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

W = 01001100b PORTB = 01100110b Posle instrukcije: W = 01001100b PORTB = 01110110b

11. MOVF f,d Operandi: f (0 - 127) d (0 - 1) Operacija : (f) → (dest) Sadrzaj registra 'f' ce biti stavljen u odredisni registar. Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat ce biti smesten u taj isti registar 'f'. Ovo moze da se koristi kao test sadrzaja registra jer ce status Z biti normalno opsluzen. Primer: MOVF FSR,0 Posle instrukcije:

W ce imati vrednist FSR registra.

12. MOVWF f Operandi: f (0 - 127) Operacija: (W) → (f) Sadrzaj registra W ce biti stavljen u registar 'f'. Primer: MOVWF OPTION,0 Pre instrukcije:

OPTION = 0xFF W = 0x4F

Posle instrukcije:

OPTION = 0x4F W = 0x4F

51

Page 53: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

13. NOP Operandi: Nema Operacija: Nema Kontroler jednostavno ne radi nista, osim sto trosi vreme, jer ova instrukcija traje jedan masinski ciklus. Primer: NOP

14. RLF f, d Operandi: f (0 - 127) d (0 - 1)

Operacija: Rotira sardrzaj registra u levo, i po potrebi setuje C bit u statusnom registru. Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'. Primer: RLF REG1,0 Pre instrukcije:

REG1 = 1110 0110 C = 0

Posle instrukcije

REG1 = 1110 0110 W = 1100 1100 C = 1

15. RRF f, d Operandi: f (0 - 127) d (0 - 1)

52

Page 54: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Operacija: Rotira sardrzaj registra u desno, i po potrebi setuje C bit u statusnom registru. Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u u registar 'f'. Primer: RRF REG1,0 Pre instrukcije:

REG1 = 1110 0110

C = 0 Posle instrukcije:

REG1 = 1110 0110 W = 0111 0011 C = 0

16. SUBWF f, d

Operandi: f (0 - 127) d (0 - 1) Operacija: (f) - (W) → (dest) Oduzima sadrzaj registra W od sadrzaja 'f' registra i zavisno od rezultata setuje C bit u statusnom registru.Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u registar 'f'. Primer 1: SUBWF REG1,1 Pre instrukcije:

REG1 = 3 W = 2 C = ?

Posle instrukcije:

REG1 = 1 W = 2 C = 1 ; rezultat je pozitivan

53

Page 55: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Primer 2: Pre instrukcije:

REG1 = 2 W = 2 C = ?

Posle instrukcije

REG1 = 0 W = 2 C = 1 ; rezultat je nula

Primer 3: Pre instrukcije:

REG1 = 1 W = 2 C = ?

Posle instrukcije

REG1 = FF W = 2 C = 0 ; rezultat je negativan

17. SWAPF f, d Operandi: f (0 - 127) d (0 - 1) Operacija: (f <3:0>) → (dest <7:4>), (f <7:4>) → (dest <3:0>) Visi i nizi nibl u registru 'f' ce zameniti mesta.Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u registar 'f'. Primer: SWAPF REG1,0 Pre instrukcije:

54

Page 56: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

REG1 = A5 Posle instrukcije:

REG1 = A5 W = 5A

18. XORWF f, d Operandi: f (0 - 127) d (0 - 1) Operacija: (W) .XOR. (f) → (dest) Logicki ekskluzivni OR sa sadrzajima reistra W i 'f'Ako je 'd' = 0 rezultat se smesta u registar W. Ako je 'd'= 1 rezultat se smesta u registar 'f'. Primer: XORWF REG,1 Pre instrukcije:

W = B5 RESULT = AF

Posle instrukcije:

W = B5 RESULT = 1A

19. BCF f, b Operandi: f (0 - 127) b (0 - 7) Operacija: 0 → (f<b>) Resetuje bit 'b' u registru 'f'. Primer: BCF FLAG_REG, 7

55

Page 57: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Pre instrukcije:

FLAG_REG = C7 Posle instrukcije:

FLAG_REG = 47

20. BSF f, b Operandi: f (0 - 127) b (0 - 7) Operacija: 1 → (f<b>) Setuje bit 'b' u registru 'f'. Primer: BSF FLAG_REG, 7 Pre instrukcije:

FLAG_REG = 0A Posle instrukcije

FLAG_REG = 8A

21. BTFSC f, b Operandi: f (0 - 127) b (0 - 7) Operacija: Preskoci ako je (f<b>) = 0. Ako je bit 'b' u registru 'f' nula tada ce naredna instrukcija biti preskocena.Ako je bit 'b' nula, instrukcija koja neposredno sledi se ne izvrsava. Umesto nje se izvrsava NOP i u tom slucaju instrukcija traje dva ciklusa. Primer: OVDE BTFSC FLAG,1 NIJE GOTO RUTINA1 NASTAVI -- -- Pre instrukcije:

56

Page 58: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

PC = adresa OVDE

Posle instrukcije Ako je FLAG<1> = 0

PC = adresa NASTAVI Ako je FLAG<1> = 1

PC = adresa NIJE

22. BTFSS f, b Operandi: f (0 - 127) b (0 - 7) Operacija: Preskoci ako je (f<b>) = 1. Ako je bit 'b' u registru 'f' setovan tada ce naredna instrukcija biti preskocena.Ako je bit 'b' setovan, instrukcija koja neposredno sledi se ne izvrsava. Umesto nje se izvrsava NOP i u tom slucaju instrukcija traje dva ciklusa. Primer: OVDE BTFSC FLAG,1 NIJE GOTO RUTINA1 NASTAVI -- -- Pre instrukcije:

PC = adresa OVDE Posle instrukcije: Ako je FLAG<1> = 0

PC = adresa NIJE Ako je FLAG<1> = 1

PC = adresa NASTAVI

23. ADDLW k Operandi: k (0 - 255)

57

Page 59: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Operacija: (W) + k → (W) Sadrzaju registra W bice dodata osmobitna vrednost literala 'k', i rezultat ce biti smesten u registar W. Primer:

ADDLW 15 Pre instrukcije:

W = 10 Posle instrukcije

W = 25

24. ANDLW k perandi: k (0 - 255) Operacija: (W) .AND. (k) → (W) Sa sadrzajem registra W i osmobitnom vrednosti literala 'k' bice izvrseno logicko .AND. i rezultat ce biti smesten u registar W. Primer:

ADDLW 5F Pre instrukcije:

W = A3 Posle instrukcije: W = 03 Primer 2: Primena ove instrukcije je zgodna ukoliko treba nekoliko bita u nekom registru postaviti da budu 0 a da pritom ostali zadrze svoje stanje. Recimo u PORTB treba ugasiti 1,4 i 5 bit, bez obzira na njihovo renutno stanje. Ostali bitovi (0,2,3,6,7) treba da zadrze svoje trenutno stanje. (Na izlazu nam treba x0xx00xxb) ANDLF 10110011b ; u bitove koje gasimo ide 0

58

Page 60: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Pre instrukcije: W = 11101001b Posle instrukcije: W = 10100001b

25. CALL k Operandi: k (0 - 2047) Operacija: (PC) + 1 → TOS k → (PC<10:0>), (PCLATH<4:3>) → (PC<12:11>) Poziv podprograma. Najpre se adresa povratka (PC+1) smesta na stek.Jedanaest bitova direktne adrese smestaju se u PC<10:0> a visi bitovi PC-a se ucitavaju iz PCLATH. Ova instrukcija traje dva ciklusa. Primer:

OVDE CALL TAMO Pre instrukcije:

PC = adresa OVDE Posle instrukcije

PC = adresa TAMO TOS = adresa OVDE

26. CLRWDT Operandi: nema Operacija: 00h → WDT

0 → WDT preskaler

1 →TO 1 → PD

Resetuje watchdog tajmer. Takodje resetuje preskaler za WDT isetuje bitove TO' i PD'.

Primer:

CLRWDT

59

Page 61: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Pre instrukcije:

WDT = ? Posle instrukcije

WDT = 0 WDT preskaler = 0 TO' = 1 PD' = 1

27. GOTO k Operandi: k (0 - 2047) Operacija: k → (PC<10:0>) (PCLATH<4:3>) → (PC<12:11>) Naredba bezuslovnog skoka (granjanja). Jedanaest bitova adrese neposredno iza instrukcije bice upisano u PC<10:0>, visi bitovi PC-a ce biti upisani iz PCLATCH<4:3>. Instrukcija traje dva ciklusa. Primer:

GOTO TAMO Posle instrukcije

PC = adresa TAMO

28. IORLW k Operandi: k (0 - 255) Operacija: (W) .OR. (k) → (W) Sa sadrzajem registra W i osmobitnom vrednosti literala 'k' bice izvrseno logicko .OR. i rezultat ce biti smesten u registar W. Primer:

IORLW 35 Pre instrukcije:

W = 9A

60

Page 62: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Posle instrukcije W = BF

Primer 2: Primena ove instrukcije je zgodna ukoliko treba nekoliko bita u nekom registru postaviti da budu 1 a da pritom ostali zadrze svoje stanje. Recimo u PORTB treba ugasiti 1,4 i 5 bit, bez obzira na njihovo renutno stanje. Ostali bitovi (0,2,3,6,7) treba da zadrze svoje trenutno stanje. (Na izlazu nam treba x1xx11xxb) IORLF 01001100b ; u bitove koje gasimo ide 1 Pre instrukcije: W = 00110110b Posle instrukcije: W = 01111110b

29. MOVLW k Operandi: k (0 - 255) Operacija: (k) → (W) Osmobitna vrednost 'k' bice smestena u registar W. Primer:

MOVLW 5A Posle instrukcije

W = 5A

30. RETFIE Operandi: nema Operacija: TOS → (PC) 1 → GIE Uzima se vrednost sa vrha steka (TOS) i stavlja u PC. Dalji interapt je omogucen automatskim setovanjem bita GIE (Global Interapt Enable). Instrukcija traje dva ciklusa. Primer:

RETFIE

61

Page 63: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Posle instrukcije PC = TOS GIE = 1

31. RETLW k Operandi: k (0 - 255) Operacija: k → W TOS → (PC) Registar W uzima osmobitnu vrednost literala 'k'. PC uzima vrednost sa vrha steka (adresa povratka) Instrukcija traje dva ciklusa. Primer:

CALL TABELa ;W sadrzi offset vrednost tabele -- ;W sada zahtevanu ima vrednost iz -- ;tabele

TABELA ADDWF PC ;W = offset RETLW k1 ;Pocetak tabele RETLW k2 RETLW k3 RETLW k4 Pre instrukcije

W = 04 Posle instrukcije

W = k4

32. RETURN Operandi: nema Operacija: TOS → (PC) Povratak iz podprograma. Uzima se vrednost sa vrha steka (TOS) i stavlja u PC. Instrukcija traje dva ciklusa. Primer:

RETURN

62

Page 64: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Posle instrukcije

PC = TOS

33. SLEEP Operandi: nema Operacija: 00h → WDT 0→WDT preskaler 1 → TO’ 0 → PD’ Power down bit (PD’) se resetuje. Setuje se bit Time-out (TO’). Watchdog Timer i njegov preskaler se resetuju i procesor ide u SLEEP mod sa zaustavljenim oscilatorom. Primer:

SLEEP

34. SUBLW k Operandi: k (0 - 255) d (0 - 7) Operacija: (W) - k → (W) Od sadrzaja registra W bice oduzeta osmobitna vrednost literala 'k',i rezultat ce biti smesten u registar W. Primer:

SUBLW 02 Pre instrukcije:

W = 1 C = ?

Posle instrukcije

W = 1 C = 1 ; rezultat je pozitivan

63

Page 65: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Pre instrukcije:

W = 2 C = ?

Posle instrukcije

W = 0 C = 1 ; rezultat je nula

Pre instrukcije:

W = 3 C = ?

Posle instrukcije

W = FF C = 0 ; rezultat je negativan

35. XORLW k Operandi: k (0 - 255) Operacija: (W) .XOR. (k) → (W) Sa sadrzajem registra W i osmobitnom vrednosti literala 'k' bice izvrseno logicko .XOR. i rezultat ce biti smesten u registar W. Primer:

XORLW AF Pre instrukcije:

W = B5 Posle instrukcije

W = 1A

64

Page 66: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

2.25. Deo za povezivanje LCD-a

Siroku primenu u savremenim mikrokontrolerskim sistemima postigli su LCD displeji koji pored prikaza numerickih karaktera imaju u sebi implementiran ceo ASCII alfabet, kao i razne specijalne znake. Postoje razliciti tipovi alfanumerickih LCD displeja, ali najveci procenat se bazira na istom cip-setu tipa Hitachi HD44780. Iz tog razloga displeji koji su kompatibilni sa HD44780 mogu koristiti iste softverske rutine, bez obzira na tip ili proizvidjaca. U konkretnom resenju za povezivnje LCD-a koriscena su sledeca tri konektora:

1. konektor za prenos podtaka, LCD_DATA; 2. konektor kojim se predaju komande LCD-u, LCD_DATA1; 3. konekor za napajanje, LCD_NAP.

LCD displej je instaliran na gornjrm desnom uglu osnovne ploce. Regulacija osvetljaja LCD displeja ostvarena je preko potenciometra R24 nominalne vrednosti 10k. Nacin povezivanja LCD displeja na napajanje i interfejsa, za regulaciju osvetljaja prikazan je na slici na slici sl.1.38.:

Sl.1.38. Povezivanje LCD displeja na napajanje i interfejsa za regulaciju osvetljaja

LCD displej je formata 2x16 karaktera. Svaki karakter moze da prikaze maksimalno 7x9 osnovnih elemenata. Format prikaza karaktera je programabilan i definise se na pocetku prikaza informacije u redu. Pristup displeju radi upisa karaktera ostvaruje se preko 14-to pinskog konektora, paralelnim pristupom 8-mo bitnog podatkana nozicama od D7 do D14 (vidi sliku 1.39 i 1.40 ).

65

Page 67: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.39. Fizicki izgled organizacije prikaza LCD-a i adresne organizacije memorije za prikaz

Funkcija i namena svakog od pina na konektoru LCD displeja je definisana na slici 1.40.

Sl.1.40. Raspored i funkcije pinova konektora LCD-a Ukazacemo sada na princip rada LCD displeja. Sa mikrokontrolerom LCD displej

komunicira preko sledece dve magistrale:

66

Page 68: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

• dvosmerne magistrala za podatke, D0 do D7, preko ovih linija mikrokontroler moze da upisuje u ili cita podatke iz LCD displeja

• jednosmerne upravljacke magistrale – cine je linije RS, R\W i E. Signal E kada je aktivan (E=1) dozvoljava rad displeja. Signal R\W definise operaciju citanja ili upisa (R\W=1 obavlja se operacija citanja, u suprotnom je upis). Signalom RS definise se kom se registru vrsi pristup, kada je RS =1 registrima za podatke nazvanih DDRAM-a (Display Data Ram) i CGRAM-a (Character Generator Ram), a kada je RS=0 pristupa se komandnom registru.

Upisom u DDRAM podaci se prikazuju na ekranu LCD-a. CGRAM prikazuje

karaktere na displeju u matricno tackastoj formi. Sadrzaj CGRAM-a je moguce softverski menjati, tako da se mogu prikazati forme karaktera kreiranih po zelji korisnika. Internu memoriju LCD displeja koja se koristi za prikaz karaktera cine dva reda od po 40 lokacija(vidi sliku 2.14). U svakoj lokaciji se memorise po jedan karakter, a ukupno je vidljivo 16 karaktera, a nevidljivo 24. To znaci da je moguce ostvariti horizontalno pomeranje informacija u toku prikaza. Na slici 1.39. prikazane su adrese vidljivih lokacija na LCD displeju, pri cemu se pocetna adresa prikaza definise komandom za prikaz u fazi inicijalizacije.

Sl.1.41. Dvoredni smart LCD U cilju ustede broja pinova kojim se LCD displej povezuje na mikrokontroler projektanti cesto koriste cetvorobitni rezim rada komuniciranja. Naime, umesto da se vrsi istovremeni prenos svih osam bitova karaktera prenos se ostvaruje na nivou niblova, i to tako sto se prvo prenosi MS a nakon toga LS nibl. Treba pri ovome naglasiti da se cetvorobitni rezim komuniciranja definise odgovarajucom komandom u fazi inicijalizacije. Na ovaj nacin umesto da se povezivanje ostvari sa 11, realizuje se sa 7 linija. Ako se LCD koristi samo za prikaz poruka, pin RW se može povezati na masu i broj potrebnih pinova je tako smanjen na 6. Na slici 1.42. je pikazno povezivanje LCD-a sa PIC16F877A u 4-bitnom rezimu komuniciranja. U konkretnoj realizaciji koriscen je PORT D i to tako da su za prenos podataka iskorisceni pinovi od RD4 do RD7, a za upravljanje radom displeja pinovi RD2 i RD3.

67

Page 69: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.42. Nacin povezivanja LCD-a i mikrokontrolera

LCD displej je programibilna periferija, pa kao takva podrzava odredjeni skup komandi. Spisak komandi i funkcije koje obavljaju te komande prikazan je na slici 1.43.

68

Page 70: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl.1.43. Tabela instrukcija LCD-a

3. MIKROC – KOMPAJLER ZA PIC MIKROKONTROLERE

MikroC prestavlja mocan softverski alat, koji je razvila beogradska

Mikroelektronika, i namenjen je pisanju koda za Microchip-ove PIC mikrokontrolere. Koristeci mikroC, programeru je omogucen jednostavan nacin da kontrolise proces programiranja i napravi kvalitetan firmware. Osnovne karakteristike programa mikroC su sledece:

Pisanje C koda koriscenjem kvalitetnog editora, sto se ogleda automatskom kontrolom i upozorenjima vezanim za sintaksu koda, koriscenih parametara, kao i automatskoj korekciji pojedinih gresaka

Preglednost strukture programa (koda), promenljivih i funkcija omogucava Code explorer

Jasan asemblerski kod i standardna kompatibilnost generisanih HEX datoteka toka progra-ma preko ugrađeg debagera (debugger)

Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje znacajno ubrzavaju pisanje programa

Detaljan izvestaj i graficko predstavljanje RAM i ROM mape, statistike koda i slicno.

Moramo da napomenemo kako mikroC odstupa od ANSI standarda u nekoliko

segmenata. Neka odstupanja su nacinjena su u cilju da se olaksa programiranje, dok su druge rezultat hardverskih ograni-cenja PIC mikrokontrolera. Pomenucemo neke specificnosti:

Rekurzivne funkcije (function recursion) su podrzane sa izvesnim ogranicenjima, koja su posledica nesto slozenijeg pristupa magacinu (stack) i ogranicenja vezana za memoriju

Pokazivaci (pointers) promenljivih i pokazivaci konstanti nisu kompatibilni, tj. nije moguca međusobna dodela ili upoređivanje

mikroC tretira oznacavanje const kao “true constans” (kod C++), sto omogucava koris-cenje const objekta na mestima gde ANSIC ocekuje constant izraz .Ukoliko se tezi ka pre-nosivosti programa, treba koristiti tradicionalno pretprocesorsko definisanje konstanti

mikroC dozvoljava C++ stil jednolinijskih komentara, koristeci dve kose crte (//). Komentar moze da pocne bilo gde i traje do sledece nove linije programskog koda

Brojne standardne C biblioteke (ctype, math, stdlib, string ) implementirane su u mikroC, uz individualna odstupanja

Napominjemo da mikroC podrzava gotovo sve PIC mikrokontrolere serija 12, 16 i 18. Izuzetak su mikrokontroleri koji imaju staro hardversko jezgro kao na primer PIC12C508, PIC12F508, PIC12C509, PIC12F509 itd. Inace, ogranicena verzija (do 2KB programa) moze da s preuzme sa sajta Mikroelektronike (www.mikroe.com). U

69

Page 71: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

slicaju ako se zeli potpuna verzija (neogranicen kapacitet programa), mora da se plati licenca od 250$.

3.1. Instalacija Ovde cemo preko Slika 1.44-1.56. ilustrovati proces instaliranja mikroC-a. Inace, instalacija traje 30 sekundi. Posle instalacije treba pokrenuti mikroC, a to se najjednostavnije ostvaruje klikom na ikonicu:

Sl. 1.44. Pocetak procesa instalacije se ostvaruje klikom na izvrsni fajl mikroC_..._.exe

70

Page 72: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.45 Sada treba kliknuti na komandno dugme NEXT

Sl. 1.46 Prihvatanje uslova licenciranja i zatim treba kliknuti na komandno dugme NEXT

71

Page 73: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.47 Izbor programatora (PicFlash), gotovih primera i zatim klik na komandno

dugme NEXT

72

Page 74: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.48 . Izbor foldera za smestanje programa i klik na komandno dugme NEXT

3.2. Kreiranje koda U narednim redovima bice ilustrovan postupak kreiranja koda u mikroC-u (Slike 32-39).

73

Page 75: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.49 Izgled editora po startovanju programa mikroC

Sl. 1.50 Kreiranje novog projekta preko opcije Project → New Project

74

Page 76: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.51 Podesavanje parametara novog projekta (naziv, tip mikrokontrolera, takt,

parametri kontrolera)

Sl. 1.52 U editor treba uneti program (kod) mikrokontrolera

75

Page 77: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.53 U editor je unet za primer Soft_UART program

Sl. 1.54 Sada treba izvrsiti prevođenje (compile) programa preko opcije Project →

Build

76

Page 78: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.55 Izgled prozora posle kompilacije sa izvestajem (Messages)

Sl. 1.56 Kao produkti prevođenja (kompilacije/kompajliranja) generise se nekoliko

fajlova: asemblerski kod (ASM), heksadecimalni kod (HEX), izvestaji itd

77

Page 79: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

4. PROGRAMIRANJE MIKROKONTROLERA PIC18F4550

4.1.AllPic programator

Da bi se heksadecimalni kod dobijen iz kompilatora/kompajlera (compiler)

upisao u mikrokon-troler, neophodno je posedovati programator. Programator cine dve celine: bootstrap loader (hardver-ski deo) i softver (za programiranje firmware-a). Uloga bootstrap loader-a je da transformise naponske nivoe porta (DB9, DB25 ili USB) na nivoe standardne logike, dok je uloga softvera da upise heksadecimalni kod u programsku (najcesce: EPROM ili flash) memoriju mikrokontrolera. Za potrebe ovog rada korisceni su bootstrap loader ALLPIC i softver IC-Prog Elektricna sema bootstrap loader-a, ciji je autor Danijel Dabic, prikazana je na slici 1.57, a izgled plocice i gotov uređaj – na slikama 1.58 i 1.59, respektivno

Sl. 1.57 Elektricna sema ALLPIC bootstrap loader-a

Sl. 1.58 . Izgled stampane plocice ALLPIC-a

78

Page 80: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.59 Izgled ALLPIC-a

4.2.Softvare Ic-Prog

Za programiranje mikrokontrolera PIC18F4550 moze da se koristi softver IC-

Prog. Inace, ovaj softver je kompatibilan sa mnogim bootstrap loader-ima, kao sto su JDM Programmer, TAFE Programmer, TAIT Programmer, Conquest Programmer, ProPIC 2 Programmer itd. IC-Prog poseduje mogucnost citanja, upisa i verifikacije (Read, Write, Verify) sadrzaja mikrokontrolera. Narav-no, softver dozvoljava mogucnost podesavanja parametara (WDT, PWRT, BODEN, LVP, CPD, CO, Debugger), kao i izbor oscilatora (RC, LP, XT, HS). Program IC-Prog se ne instalira na racunaru, vec se pokrece direktno – tacnije, klikom na fajl ICPROG.EXE (Sl. 1.60).

Sl. 1.60 Pokretanje softvera IC-Prog

Ako programer ima racunar sa verzijom Windows-a «visom» od Windows-a

98, odmah po star-tovanju progra-ma IC-Prog na ekranu ce se pojaviti prozor sa upozorenjem, koji je prikazan na Sl. 1.61. Razlog je sto su kod svih Windows-a sa platformom NT zasticeni portovi. Zbog toga je neophodno da se instalira odgovarajuci drajver.

Sl. 1.61 Upozorenje prilikom pokretanja programa

79

Page 81: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Ulaskom u podmeni Misc, koji se nalazi u meniju Options, ostvaruje se instaliranje/ukljucivanje drajvera icprog.sys (Settings → Options → Misc: √ Enable 2000/NT/XP), sto je ilustrovano na Sl. 1.62. Na taj nacin omogucava se pristup serijskom portu racunara. Isto tako, neophodno je da se prioritet programiranja postavi ili na High ili na Realtime, a nikako na Normal. Ovo potonje je veoma bitno. Naime, program po startovanju automatski podesi normalan prioritet i ukoliko se ne promeni na High ili Realtime, racunar ne moze da pristupi PIC mikrokontrolerima preko serijskog porta.

Sl. 1.62 Ukljucivanje drajvera i prioriteta

Nakon sto je instaliran/ukljucen drajver, program ce se restartovati i ponudice

opciju podesavanja hardverskih parametara, koji treba da budu postavljeni kao na Sl. 1.63. IC-Prog ima slicnu konfigura-ciju kao JDM Programmer, signali su bez inverzije – dok se komunikacija obavlja preko, na primer, serijskog porta COM2. Ako racunar ima samo jedan serijski port, podrazumeva se da je to COM1.

80

Page 82: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.63 Podesavanje parametara programa

Najpre treba izabrati mikrokontroler PIC18F4550 (obelezeni padajuci meni u

gornjem desnom uglu osnovnog prozora programa), a potom ucitati heksadecimalni kod klikom na opciju Open File iz menija File - sto je ilustrovano na Slikama 1.64, 1.65 i 1.65. (Napomena: Heksadecimalni kod se dobija kompilacijom programa koji je napisan na nekom visem programskom jeziku (C, Pascal, Basic itd.) ili na asembleru. Visi programski jezici za mikrokontrolere imaju izvesne specificnosti u odnosu na stan-dardne programske jezike, ali ovde te specificnosti nece biti razmatrane.)

81

Page 83: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.64 Upisivanje/ucitavanje koda u bafer programa

Sl. 1.65 Upisivanje/ucitavanje fajla projekat.hex koji sadrzi kod

82

Page 84: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Ulaskom u meni Command i startovanjem opcije Program All (Sl. 49). Zapravo, proces pro-gramiranja podrazumeva da se sadrzaj bafera programa (Sl. 48) upise u flash memoriju naseg mikro-kontrolera. Naravno program ce postaviti pitanje, tj. mogucnost da se izabere da li da otpocne proces progra-miranja ili da se od njega odustane (Sl. 1.67). Ukoliko se izabere programiranje, program ce obrisati prethodni sadrzaj flash memorije mikrokontrolera i u nju “prepisati” sadrzaj bafera programa, ciji se je-dan deo vidi na Sl. 1.66 Napredak proces programiranja, a potom i verifikacije programiranja je ilustrovan na Sl. 1.68. Ukoliko je proces uspesno okoncan, na ekranu ce se pojaviti prozor kao na Sl. 1.69 – u suprotnom, izgled prozora ce biti kao na Sl. 1.70.

Sl. 1.66 Startovanje programiranja mikrokontrolera

Sl. 1.67 Mogucnost da se prekine proces programiranja

83

Page 85: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.68 Proces programiranja, a zatim i verifikacije

Sl. 1.69 Poruka nakon uspesnog programiranja

Sl. 1.70 Poruka nakon neuspesnog programiranja

84

Page 86: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

5. Hardverska realzacija

Za hardversku realizaciju koriscen je programski paket Protel 99 Se. Sistem se sastoji od mikrokontrolera PIC16F877, kao centralnog elementa, koji ima ulogu da opslužuje komunikaciju sa karticom i kontrroliše LED koja signalizira čitanje kartice. Sistem koristi napajanje sa adaptera. Za ovakvo rešenje smo odlučili iz razloga što sistem nije veliki potrošač. Na slici 1.71 prikazana je elektična šema celokupnog sistema.

Na LCD displeju prikazujemo informacije koje se nalaze na kartici. Tu se misli na serijski broj kartice i kredit koji je preostao na kartici. Pored toga na njemu ispisujemo pratece poruke koje pomazu korisniku tokom rukovanja sa sistemom. Na ploci sistema postoji mikro taster koji sluzi za resetovanje celog sistema kada je to potrebno.

Tranzistor Q3 sluzi kao prekidac napona napajanja kartice. Napon na kartici je

prisutan samo za vreme iscitavanja. Prisustvo napona napajanja kartice signalizira dioda D4.

85

Page 87: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Dioda D5 signalizira napon napajanja celog sistema. Sistem radi sa oscilatorom od 8MHz, sto je sasvim dovoljno za brzo citanje

kartice. Brzina citanja karice moze i da se poveca, frekvencija isčitavanja kartica može da bude od 3,57 MHz pa sve do 12 MHz, ali mislimo da je ova brzina dovoljna za laboratorijske potrebe, jer neke kartice novije generacije ipak ne mogu izdržati na naponu od 5v veće frekvencije rada tako da na ovaj način se i kartice štite od pregorevanja.

Potenciometar R2 sluzi za regulaciju kontrasta LCD-a. Kontrast se povecava smanjivanjem napona na pinu VEE LCD-a a smanjuje povecavanjem napona na pinu VEE-LCD-a.

Na slici 1.72 prikazan je izgled stampane ploce sistema. Prilikom projektovanja stampane ploce vodjeno je racuna o bezbednosti prilikom koriscenja sistema, o malim gabaritima ploce kao i o funkcionalnosti sistema, tj. da bude jednostavan i praktican za rukovanje.

86

Page 88: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Sl. 1.72

87

Page 89: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Na slici 1.73 je prikazan raspored elemenata na gornoj strani plocice.

Sl 1.73

88

Page 90: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

6. SOFTVER

6.1. Softver mikrokontrolera Kao sto je vec napomenuto ranije softver za mikrokontroler je radjen u MikroC-u. Algoritam programa prikazan je:

Na početku programa definišemo parametre odznačaja za izvršenje programa i definišemo promenjive koje kasnije koristimo.

89

Page 91: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Potprogram lcdkredit prikazuje tekući kredit na alfanumeričkom displeju. Algoritam potprograma je:

Potprogram vrši izdvajanje cifre iz decimalnog broja i prikazuje je na alfanumeričkom displeju.

90

Page 92: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Potprogram shift_in vrši konverziju binarnog broja u decimalni. Ovaj potprogram ima ulogu kod čitanja serijskog broja kartice. Potprogram shift_in_kredit broji broj jedinica u isčitanm bajtu podataka. Njegova uloga je na osnovu broja jedinica u bajtu sračuna preostali kredit na kartici. Potprogram cip_card_read vrsi čitanje kartice i prikaz preostalog kredita na alfanumeričkom displeju. Njegov algoritam je:

91

Page 93: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Njegov listing sa komentarina prikazan je: #define nap PORTC.F4 #define clk PORTD.F0 #define res PORTD.F1 #define out PORTD.F2 #define det PORTD.F3  unsigned char kartica, det_jednom,q,broj,privremeno; unsigned char eep_sifra_temp[4]={0x33,0x44,0x21,0x55}; char text[4], text1[7];  void interrupt() { if(INTCON.T0IF)     //prvi put ubacena kartica    {      if(det==1) // kada ima kartice det=1        {           kartica=1;        }      else         {         kartica=0;         }     INTCON.T0IF=0;      } } void Lcd_kredit(unsigned int kred) { int temp; if(kred>10000)   {   temp=(kred/10000);   Lcd_Chr(2,1,temp+48);   kred=kred‐temp*10000;   } else    {    Lcd_Chr(2,1,0+48);    }     if(kred>1000) 

92

Page 94: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

  {   temp=(kred/1000);   Lcd_Chr_Cp(temp+48);   kred=kred‐temp*1000;   } else    {    Lcd_Chr_Cp(0+48);    }  if(kred>100)   {   temp=(kred/100);   Lcd_Chr_Cp(temp+48);   kred=kred‐temp*100;   } else    {    Lcd_Chr_Cp(0+48);    }     Lcd_Chr_Cp(46);  if(kred>10)   {   temp=(kred/10);   Lcd_Chr_Cp(temp+48);   kred=kred‐temp*10;   } else    {    Lcd_Chr_Cp(0+48);    }     Lcd_Chr_Cp(kred+48); Lcd_Chr_Cp(32); }  unsigned char shift_in() {   unsigned char n,k,dat;   k=128;   dat=0;   for(n=1;n<=8;n++) 

93

Page 95: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

     {       clk=1;       if(!out)         {          dat=dat+k;          }       Delay_ms(2);       clk=0;        k=k>>1;      }   return(dat); }    unsigned char shift_in_kredit() {  unsigned char n,g;  g=8;  for(n=1;n<=8;n++)     {      clk=1;      if(!out)         {         g‐‐;         }      Delay_ms(2);      clk=0;     }  return(g); }   void chipcard_read() {  unsigned int kredit, temp_kredit, m;  unsigned char i;  if(kartica)     {      if(det_jednom)        {         Lcd_Cmd(Lcd_CLEAR);         det_jednom=0; 

94

Page 96: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

        nap=0;         Delay_ms(100);         Delay_ms(100);         clk=0;         res=0;         Delay_ms(100);         clk=1;         res=1;         Delay_ms(2);         res=0;         clk=0;         Delay_ms(2);         for(i=1;i<=32;i++)   // preskacemo prva 4 bajta            {             clk=1;             Delay_ms(1);             clk=0;             Delay_ms(1);            }         for(i=0;i<=3;i++)        //citamo serijski broj            {            eep_sifra_temp[i]=shift_in();            }        for(i=0;i<=3;i++)            {             ByteToStr(eep_sifra_temp[i],text);             Lcd_Out(1,((i*4)+1),text);            }          kredit=0;        m=4096;        for(i=0;i<=4;i++)            {             kredit=kredit+m*shift_in_kredit();             m=m/8;            }        temp_kredit=(kredit*2);        Lcd_kredit(temp_kredit);        Lcd_Out_Cp("Dinara");           nap=1;           broj=1;           clk=0;           res=0; 

95

Page 97: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

       }     }  else     {      if((!det_jednom)&&(broj==1))         {         Lcd_Cmd(Lcd_CLEAR);         Lcd_Out(1,1,"Ubacite");         Lcd_Out(2,1,"Karticu");         broj=broj+1;         if(broj>2) broj=2;         }         det_jednom=1;         nap=1;     } }  void main(void) { INTCON.GIE=0; OPTION_REG=0x00; INTCON.T0IE=1; TRISA=0x00; PORTA=0X00; TRISB=0x00; PORTB=0x00; TRISC=0x00; PORTC=0x00; TRISD=0xFC; PORTD=0x00; det_jednom=1; Lcd_Config(&PORTB,2,3,1,7,6,5,4);        //rs,en,wr,d7,d6,d5,d4 Lcd_Cmd(Lcd_CLEAR); Lcd_Cmd(Lcd_CURSOR_OFF); broj=1; clk=0; res=0; nap=1;              //iskljucujemo napajanje Lcd_Out(1,1,"Dobrodosli"); Delay_ms(500); Delay_ms(500); Delay_ms(500); Lcd_Cmd(Lcd_CLEAR); 

96

Page 98: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Lcd_Out(1,1,"PROJEKAT"); Lcd_Out(2,1,"MIPS"); Delay_ms(500); Delay_ms(500); Delay_ms(500); Lcd_Cmd(Lcd_CLEAR); Lcd_Out(1,1,"Ubacite"); Lcd_Out(2,1,"Karticu");   INTCON.GIE=1;    while(1)     {     //test();      chipcard_read();     }  } 

97

Page 99: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

7. PRILOZI

7.1. ALLPIC programator Univerzalni programator Microchip PIC mikrokontrolera

Programator je namenjen programiranju većine serijskih PICmikrokontrolera. Pomenućemo samo neke od najpoznatijih: PIC16F8x, PIC16F62x, PIC16F87x, PIC12C50x, PIC12F6xx itd. Hardver je zasnovan na već oprobanom i veoma popularnom serijskom programatoru Pony Prog.

7.2. OPIS UREĐAJA

Sa šeme veza (Slika 1) vidi se jednostavnost, kao i kompaktnost uređaja. Uređaj se povezuje sa PC računarom putem RS232 serijskog porta, koji standardno postoji na većini današnjih PC računara. Za rad programatora potreban je i slabiji izvor napona napajanja oko 15 V. Dioda Dl na ulazu za napajanje je predviđena kao zaštita od pogrešnog priključenja polariteta izvora za napajanje. Izvor može biti i naizmenični napon, ukoliko vam je takav pri ruci. Stabilizator napona 78L05 obezbeđuje 5 V napon potreban za napajanje mikrokontrolera, dok se Vppnapon (aprox. 13V) generiše pomoću zener diode D3. Ostatak kola čine tranzistori NPN i PNP, univerzal nog tipa, kao i propratne zener diode D5 i D6 i otpornici R4 i R5 koji obezbeđuju TTL logičke nivoe (5V) potrebne za programiranje mikrokontrolera. Razlika u odnosu na postojeće programatore koji se mogu sresti na internetu (Pony prog, JDM) je upravo u delu kola koga čine T3, T4 i JPl sa pratećim elementima. Kod starih modela programatora (Pony, JDM,...) javlja se problem ako je potrebno reprogramirati PIC koji je prethodno programiran sa uključenim ;INT/RC; i uključenim internim MCLR, u FUSES podešavanjima. U tom slučaju PONY programator ne može ni da obriše PIC jer nije ispoštovana procedura preporučena od strane proizvođača mikrokontrolera, koja se odnosi na to da se Vdd (+5 V) napon sme pojaviti tek nakon uspostavljanja MCLR (+13 V) programskog napona. Jedino je sa ovakvim sistemom moguće da PIC uđe u programski mod i da se ponovno reprogramira. Sve navedene osobine poseduje AllPIC. Međutim stari

98

Page 100: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

modeli PIC mikrokontrolera koji nemaju interni oscilator zahtevaju obrnut proces od gore navedenog tj. prvo Vdd napon pa tek nakon toga MCLR napon i za takve PIC kontrolere je ubačena podrška u vidu džampera JPl kojim se bira mod rada ;Vdd mode select.

Indikator LED1 nas informiše o prisustvu napona napajanja programatora i on treba da bude u granicama 14-20V, s tim da treba računati da pri 20V napajanju grejanje stabilizatora može biti primetno. Indikator LED2 indicira prisutan napon napajanja (Vdd +5 V ) na čipu koji se programira. Kratkospajač JPl ima funkciju: Ukoliko je spojen, Vdd (+5 V) napon će stalno biti prisutan što će se i videti upaljenom LED2. Ovaj mod je za sve Microchip PIC mikrokontrolere koji nemaju interni oscilator (16F84, 16F87x,) kao i eeprome. Za sve nove mikrokontrolere potrebno je skinuti JPl i u tom modu Vdd (+5v) se pojavljuje tek po uspostavljanju Vpp (13 V) programskog napona na početku programiranja. Ovakav način rada je potreban za programiranje sledećih mikrokontrolera 16F627, 16F628, 12F629, 12F675...

99

Page 101: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

Kratkospajač JP2 služi za izbor Write protect moda za eeprome 24CXX. Poseban konektor koji je označen na šemi veza kao CON1 koristi se za eksterni priključak za incircuit programiranje (ICSP). Napomena: Programator nije predviđen za 16C5x seriju i još neke specifične Microchip mikrokontrolere.

7.3. Listig koga u asembleru

;  ASM code generated by mikroVirtualMachine for PIC ‐ V. 8.2.0.0 ;  Date/Time: 22.6.2009 11:07:24 ;  Info: http://www.mikroe.com   ; ADDRESS  OPCODE  ASM ; ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ $0000  $29B6      GOTO  _main $0004  $  _interrupt: $0004  $00FF      MOVWF  STACK_15 $0005  $0E03      SWAPF STATUS, 0 $0006  $0183      CLRF  STATUS $0007  $00AE      MOVWF  ?saveSTATUS $0008  $0804      MOVF  FSR, 0 $0009  $00AD     MOVWF  ?saveFSR $000A  $080A      MOVF  PCLATH, 0 $000B  $00AF      MOVWF  ?savePCLATH $000C  $018A      CLRF  PCLATH $000D $0871      MOVF  STACK_1, 0 $000E  $00E3      MOVWF  STSAVED_1 $000F  $0870      MOVF  STACK_0, 0 $0010  $00E2      MOVWF  STSAVED_0 ;halo_card.c,11 ::     void interrupt() ;halo_card.c,13 ::     if(INTCON.T0IF)     //prvi put ubacena kartica $0011  $1D0B      BTFSS  INTCON, 2 $0012  $2820      GOTO  L_interrupt_0 ;halo_card.c,15 ::     if(det==1) // kada ima kartice det=1 $0013  $3000      MOVLW  0 $0014  $1988      BTFSC  PORTD, 3 $0015  $3001      MOVLW  1 $0016  $00F1      MOVWF  STACK_1 

100

Page 102: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0017  $0871      MOVF  STACK_1, 0 $0018  $3A01      XORLW  1 $0019  $1D03      BTFSS  STATUS, Z $001A  $281E      GOTO  L_interrupt_1 ;halo_card.c,17 ::     kartica=1; $001B  $3001      MOVLW  1 $001C  $00A0      MOVWF  _kartica ;halo_card.c,18 ::     } $001D $281F      GOTO  L_interrupt_2 $001E  $  L_interrupt_1: ;halo_card.c,21 ::     kartica=0; $001E  $01A0      CLRF  _kartica, 1 ;halo_card.c,22 ::     } $001F  $  L_interrupt_2: ;halo_card.c,23 ::     INTCON.T0IF=0; $001F  $110B      BCF  INTCON, 2 ;halo_card.c,25 ::     } $0020  $  L_interrupt_0: ;halo_card.c,26 ::     } $0020  $  L_Interrupt_end: $0020  $0863      MOVF  STSAVED_1, 0 $0021  $00F1      MOVWF  STACK_1 $0022  $0862      MOVF  STSAVED_0, 0 $0023  $00F0      MOVWF  STACK_0 $0024  $082F      MOVF  ?savePCLATH, 0 $0025  $008A      MOVWF  PCLATH $0026  $082D      MOVF  ?saveFSR, 0 $0027  $0084      MOVWF  FSR $0028  $0E2E      SWAPF ?saveSTATUS, 0 $0029  $0083      MOVWF  STATUS $002A  $0EFF      SWAPF STACK_15, 1 $002B  $0E7F      SWAPF STACK_15, 0 $002C  $0009      RETFIE $06C7  $  _Delay_1us: $06C7  $0000      NOP $06C8  $0000      NOP $06C9  $0008      RETURN $0689  $  _Delay_5500us: $0689  $300F      MOVLW  15 $068A  $1303      BCF  STATUS, RP1 $068B  $1283      BCF  STATUS, RP0 $068C  $00FB      MOVWF  STACK_11 $068D $30FF      MOVLW  255 $068E  $00FA      MOVWF  STACK_10 

101

Page 103: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$068F  $0BFB      DECFSZ  STACK_11, F $0690  $2E92      GOTO  $+2 $0691  $2E95      GOTO  $+4 $0692  $0BFA      DECFSZ  STACK_10, F $0693  $2E92      GOTO  $‐1 $0694  $2E8F      GOTO  $‐5 $0695  $303E      MOVLW  62 $0696  $00FA      MOVWF  STACK_10 $0697  $0BFA      DECFSZ  STACK_10, F $0698  $2E97      GOTO  $‐1 $0699  $0000      NOP $069A  $0008      RETURN $06C0  $  _Delay_50us: $06C0  $3021      MOVLW  33 $06C1  $1303      BCF  STATUS, RP1 $06C2  $1283      BCF  STATUS, RP0 $06C3  $00FA      MOVWF  STACK_10 $06C4  $0BFA      DECFSZ  STACK_10, F $06C5  $2EC4      GOTO  $‐1 $06C6  $0008      RETURN $05B3  $  _Div_16x16_S_L: $05B3  $1303      BCF  STATUS, RP1 $05B4  $1283      BCF  STATUS, RP0 $05B5  $0D71      RLF  STACK_1, W $05B6  $0DF8      RLF  STACK_8, F $05B7  $0DF9      RLF  STACK_9, F $05B8  $0874      MOVF  STACK_4, W $05B9  $02F8      SUBWF STACK_8, F $05BA $0875      MOVF  STACK_5, W $05BB  $1C03      BTFSS  STATUS, C $05BC  $0F75      INCFSZ STACK_5, W $05BD $02F9      SUBWF STACK_9, F $05BE  $0DF0      RLF  STACK_0, F $05BF  $0DF1      RLF  STACK_1, F $05C0  $300F      MOVLW  15 $05C1  $00FC      MOVWF  STACK_12 $05C2  $0D71      RLF  STACK_1, W $05C3  $0DF8      RLF  STACK_8, F $05C4  $0DF9      RLF  STACK_9, F $05C5  $0874      MOVF  STACK_4, W $05C6  $1C70      BTFSS  STACK_0, 0 $05C7  $2DCE      GOTO  $+7 $05C8  $02F8      SUBWF STACK_8, F $05C9  $0875      MOVF  STACK_5, W 

102

Page 104: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$05CA $1C03      BTFSS  STATUS, C $05CB  $0F75      INCFSZ STACK_5, W $05CC  $02F9      SUBWF STACK_9, F $05CD $2DD3     GOTO  $+6 $05CE  $07F8      ADDWF  STACK_8, F $05CF  $0875      MOVF  STACK_5, W $05D0 $1803      BTFSC  STATUS, C $05D1 $0F75      INCFSZ STACK_5, W $05D2 $07F9      ADDWF  STACK_9, F $05D3 $0DF0      RLF  STACK_0, F $05D4 $0DF1      RLF  STACK_1, F $05D5 $0BFC      DECFSZ  STACK_12, F $05D6 $2DC2      GOTO  $‐20 $05D7 $1870      BTFSC  STACK_0, 0 $05D8 $2DDF      GOTO  $+7 $05D9 $0874      MOVF  STACK_4, W $05DA $07F8      ADDWF  STACK_8, F $05DB $0875      MOVF  STACK_5, W $05DC $1803      BTFSC  STATUS, C $05DD $0F75      INCFSZ STACK_5, W $05DE $07F9      ADDWF  STACK_9, F $05DF  $0000      NOP $05E0  $0008      RETURN $0474  $  _Lcd_Cmd: $0474  $1303      BCF  STATUS, RP1 $0475  $1283      BCF  STATUS, RP0 $0476  $0821      MOVF  LCD_port_address, 0 $0477  $0084      MOVWF  FSR $0478  $0861      MOVF  FARG_Lcd_Cmd+0, 0 $0479  $1903      BTFSC  STATUS, Z $047A  $2C7B      GOTO  L_Lcd_Cmd_0 $047B  $  L_Lcd_Cmd_0: $047B  $1180      BCF  INDF, ___ENABLE $047C  $1100      BCF  INDF, ___RS $047D $1380      BCF  INDF, ___DB7 $047E  $1300      BCF  INDF, ___DB6 $047F  $1280      BCF  INDF, ___DB5 $0480  $1200      BCF  INDF, ___DB4 $0481  $1BE1      BTFSC  FARG_Lcd_Cmd+0, 7 $0482  $1780      BSF  INDF, ___DB7 $0483  $1B61      BTFSC  FARG_Lcd_Cmd+0, 6 $0484  $1700      BSF  INDF, ___DB6 $0485  $1AE1      BTFSC  FARG_Lcd_Cmd+0, 5 $0486  $1680      BSF  INDF, ___DB5 

103

Page 105: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0487  $1A61      BTFSC  FARG_Lcd_Cmd+0, 4 $0488  $1600      BSF  INDF, ___DB4 $0489  $0822      MOVF  LCD_cmd_status, 0 $048A  $1903      BTFSC  STATUS, Z $048B  $2C8E      GOTO  L_Lcd_Cmd_1 $048C  $1100      BCF  INDF, ___RS $048D $2C8F      GOTO  L_Lcd_Cmd_2 $048E  $  L_Lcd_Cmd_1: $048E  $1500      BSF  INDF, ___RS $048F  $  L_Lcd_Cmd_2: $048F  $1580      BSF  INDF, ___ENABLE $0490  $26C7      CALL  _Delay_1us $0491  $0861      MOVF  FARG_Lcd_Cmd+0, 0 $0492  $1903      BTFSC  STATUS, Z $0493  $2C94      GOTO  L_Lcd_Cmd_3 $0494  $  L_Lcd_Cmd_3: $0494  $1180      BCF  INDF, ___ENABLE $0495  $1100      BCF  INDF, ___RS $0496  $1380      BCF  INDF, ___DB7 $0497  $1300      BCF  INDF, ___DB6 $0498  $1280      BCF  INDF, ___DB5 $0499  $1200      BCF  INDF, ___DB4 $049A  $19E1      BTFSC  FARG_Lcd_Cmd+0, 3 $049B  $1780      BSF  INDF, ___DB7 $049C  $1961      BTFSC  FARG_Lcd_Cmd+0, 2 $049D $1700      BSF  INDF, ___DB6 $049E  $18E1      BTFSC  FARG_Lcd_Cmd+0, 1 $049F  $1680      BSF  INDF, ___DB5 $04A0  $1861      BTFSC  FARG_Lcd_Cmd+0, 0 $04A1  $1600      BSF  INDF, ___DB4 $04A2  $0822      MOVF  LCD_cmd_status, 0 $04A3  $1903      BTFSC  STATUS, Z $04A4  $2CA7      GOTO  L_Lcd_Cmd_4 $04A5  $1100      BCF  INDF, ___RS $04A6  $2CA8      GOTO  L_Lcd_Cmd_5 $04A7  $  L_Lcd_Cmd_4: $04A7  $1500      BSF  INDF, ___RS $04A8  $  L_Lcd_Cmd_5: $04A8  $1580      BSF  INDF, ___ENABLE $04A9  $26C7      CALL  _Delay_1us $04AA $1180      BCF  INDF, ___ENABLE $04AB $0822      MOVF  LCD_cmd_status, 0 $04AC $1903      BTFSC  STATUS, Z $04AD $2CB0      GOTO  L_Lcd_Cmd_6 

104

Page 106: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$04AE  $2689      CALL  _Delay_5500us $04AF  $2CB1      GOTO  L_Lcd_Cmd_7 $04B0  $  L_Lcd_Cmd_6: $04B0  $26C0      CALL  _Delay_50us $04B1  $  L_Lcd_Cmd_7: $04B1  $0008      RETURN $069B  $  _Div_8x8_U: $069B  $1303      BCF  STATUS, RP1 $069C  $1283      BCF  STATUS, RP0 $069D $01F8      CLRF  STACK_8, F $069E  $3008      MOVLW  8 $069F  $00FC      MOVWF  STACK_12 $06A0  $0D70      RLF  STACK_0, W $06A1  $0DF8      RLF  STACK_8, F $06A2  $0874      MOVF  STACK_4, W $06A3  $02F8      SUBWF STACK_8, F $06A4  $1803      BTFSC  STATUS, C $06A5  $2EA8      GOTO  $+3 $06A6  $07F8      ADDWF  STACK_8, F $06A7  $1003      BCF  STATUS, C $06A8  $0DF0      RLF  STACK_0, F $06A9  $0BFC      DECFSZ  STACK_12, F $06AA $2EA0      GOTO  $‐10 $06AB $0008      RETURN $041A  $  _Div_16x16_S: $041A  $1303      BCF  STATUS, RP1 $041B  $1283      BCF  STATUS, RP0 $041C  $01FD      CLRF  STACK_13 $041D $01F9      CLRF  STACK_9 $041E  $01F8      CLRF  STACK_8 $041F  $0871      MOVF  STACK_1, W $0420  $0470      IORWF STACK_0, W $0421  $1903      BTFSC  STATUS, Z $0422  $3400      RETLW 0 $0423  $0871      MOVF  STACK_1, W $0424  $0675      XORWF  STACK_5, W $0425  $00FA      MOVWF  STACK_10 $0426  $1BFA      BTFSC  STACK_10, 7 $0427  $09FD      COMF  STACK_13, F $0428  $01FB      CLRF  STACK_11 $0429  $1FF5      BTFSS  STACK_5, 7 $042A  $2C30      GOTO  $+6 $042B  $09F4      COMF  STACK_4, F $042C  $09F5      COMF  STACK_5, F 

105

Page 107: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$042D $0AF4      INCF  STACK_4, F $042E  $1903      BTFSC  STATUS, Z $042F  $0AF5      INCF  STACK_5, F $0430  $1FF1      BTFSS  STACK_1, 7 $0431  $2C37      GOTO  $+6 $0432  $09F0      COMF  STACK_0, F $0433  $09F1      COMF  STACK_1, F $0434  $0AF0      INCF  STACK_0, F $0435  $1903      BTFSC  STATUS, Z $0436  $0AF1      INCF  STACK_1, F $0437  $0871      MOVF  STACK_1, W $0438  $0475      IORWF STACK_5, W $0439  $00FA      MOVWF  STACK_10 $043A  $1BFA      BTFSC  STACK_10, 7 $043B  $2C4C      GOTO  $+17 $043C  $25B3      CALL  _Div_16x16_S_L $043D $187B      BTFSC  STACK_11, 0 $043E  $2C5F      GOTO  $+33 $043F  $1FFD      BTFSS  STACK_13, 7 $0440  $3400      RETLW 0 $0441  $09F0      COMF  STACK_0, F $0442  $09F1      COMF  STACK_1, F $0443  $0AF0      INCF  STACK_0, F $0444  $1903      BTFSC  STATUS, Z $0445  $0AF1      INCF  STACK_1, F $0446  $09F8      COMF  STACK_8, F $0447  $09F9      COMF  STACK_9, F $0448  $0AF8      INCF  STACK_8, F $0449  $1903      BTFSC  STATUS, Z $044A  $0AF9      INCF  STACK_9, F $044B  $3400      RETLW 0 $044C  $1FF5      BTFSS  STACK_5, 7 $044D $2C5B      GOTO  $+14 $044E  $1BF1      BTFSC  STACK_1, 7 $044F  $2C57      GOTO  $+8 $0450  $0871      MOVF  STACK_1, W $0451  $00F9      MOVWF  STACK_9 $0452  $0870      MOVF  STACK_0, W $0453  $00F8      MOVWF  STACK_8 $0454  $01F1      CLRF  STACK_1 $0455  $01F0      CLRF  STACK_0 $0456  $2C3F      GOTO  $‐23 $0457  $01F1      CLRF  STACK_1 $0458  $01F0      CLRF  STACK_0 

106

Page 108: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0459  $0AF0      INCF  STACK_0, F $045A  $3400      RETLW 0 $045B  $09F1      COMF  STACK_1, F $045C  $09F0      COMF  STACK_0, F $045D $0AFB      INCF  STACK_11, F $045E  $2C3C      GOTO  $‐34 $045F  $0AF8      INCF  STACK_8, F $0460  $1903      BTFSC  STATUS, Z $0461  $0AF9      INCF  STACK_9, F $0462  $0874      MOVF  STACK_4, W $0463  $0278      SUBWF STACK_8, W $0464  $1D03      BTFSS  STATUS, Z $0465  $2C3F      GOTO  $‐38 $0466  $0875      MOVF  STACK_5, W $0467  $0279      SUBWF STACK_9, W $0468  $1D03      BTFSS  STATUS, Z $0469  $2C3F      GOTO  $‐42 $046A  $01F9      CLRF  STACK_9 $046B  $01F8      CLRF  STACK_8 $046C  $0AF0      INCF  STACK_0, F $046D $1903      BTFSC  STATUS, Z $046E  $0AF1      INCF  STACK_1, F $046F  $1FF1      BTFSS  STACK_1, 7 $0470  $2C3F      GOTO  $‐49 $0471  $0000      NOP $0472  $34FF      RETLW 255 $0473  $0008      RETURN $06AC $  _Lcd_Chr_CP: $06AC $1303      BCF  STATUS, RP1 $06AD $1283      BCF  STATUS, RP0 $06AE  $01A2      CLRF  LCD_cmd_status, 1 $06AF  $085E      MOVF  FARG_Lcd_Chr_CP+0, 0 $06B0  $00E1      MOVWF  FARG_Lcd_Cmd+0 $06B1  $2474      CALL  _Lcd_Cmd $06B2  $3001      MOVLW  1 $06B3  $00A2      MOVWF  LCD_cmd_status $06B4  $0008      RETURN $057C  $  _Lcd_Chr: $057C  $2D8E      GOTO  L_Lcd_Chr_8 $057D $  L_Lcd_Chr_10: $057D $3080      MOVLW  128 $057E  $1303      BCF  STATUS, RP1 $057F  $1283      BCF  STATUS, RP0 $0580  $00DE      MOVWF  FARG_Lcd_Chr+0 

107

Page 109: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0581  $2DA1     GOTO  L_Lcd_Chr_9 $0582  $  L_Lcd_Chr_11: $0582  $30C0      MOVLW  192 $0583  $00DE      MOVWF  FARG_Lcd_Chr+0 $0584  $2DA1     GOTO  L_Lcd_Chr_9 $0585  $  L_Lcd_Chr_12: $0585  $3094      MOVLW  148 $0586  $00DE      MOVWF  FARG_Lcd_Chr+0 $0587  $2DA1     GOTO  L_Lcd_Chr_9 $0588  $  L_Lcd_Chr_13: $0588  $30D4      MOVLW  212 $0589  $00DE      MOVWF  FARG_Lcd_Chr+0 $058A  $2DA1     GOTO  L_Lcd_Chr_9 $058B  $  L_Lcd_Chr_14: $058B  $3080      MOVLW  128 $058C  $00DE      MOVWF  FARG_Lcd_Chr+0 $058D $2DA1     GOTO  L_Lcd_Chr_9 $058E  $  L_Lcd_Chr_8: $058E  $1303      BCF  STATUS, RP1 $058F  $1283      BCF  STATUS, RP0 $0590  $085E      MOVF  FARG_Lcd_Chr+0, 0 $0591  $3A01      XORLW  1 $0592  $1903      BTFSC  STATUS, Z $0593  $2D7D     GOTO  L_Lcd_Chr_10 $0594  $085E      MOVF  FARG_Lcd_Chr+0, 0 $0595  $3A02      XORLW  2 $0596  $1903      BTFSC  STATUS, Z $0597  $2D82      GOTO  L_Lcd_Chr_11 $0598  $085E      MOVF  FARG_Lcd_Chr+0, 0 $0599  $3A03      XORLW  3 $059A  $1903      BTFSC  STATUS, Z $059B  $2D85      GOTO  L_Lcd_Chr_12 $059C  $085E      MOVF  FARG_Lcd_Chr+0, 0 $059D $3A04      XORLW  4 $059E  $1903      BTFSC  STATUS, Z $059F  $2D88      GOTO  L_Lcd_Chr_13 $05A0  $2D8B      GOTO  L_Lcd_Chr_14 $05A1  $  L_Lcd_Chr_9: $05A1  $035F      DECF  FARG_Lcd_Chr+1, 0 $05A2  $00F0      MOVWF  STACK_0 $05A3  $085E      MOVF  FARG_Lcd_Chr+0, 0 $05A4  $07F0      ADDWF  STACK_0, 1 $05A5  $0870      MOVF  STACK_0, 0 $05A6  $00DE      MOVWF  FARG_Lcd_Chr+0 

108

Page 110: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$05A7  $3001      MOVLW  1 $05A8  $00A2      MOVWF  LCD_cmd_status $05A9  $0870      MOVF  STACK_0, 0 $05AA $00E1      MOVWF  FARG_Lcd_Cmd+0 $05AB $2474      CALL  _Lcd_Cmd $05AC $01A2      CLRF  LCD_cmd_status, 1 $05AD $0860      MOVF  FARG_Lcd_Chr+2, 0 $05AE  $00E1      MOVWF  FARG_Lcd_Cmd+0 $05AF  $2474      CALL  _Lcd_Cmd $05B0  $3001      MOVLW  1 $05B1  $00A2      MOVWF  LCD_cmd_status $05B2  $0008      RETURN $0658  $  _Div_16x16_U: $0658  $1303      BCF  STATUS, RP1 $0659  $1283      BCF  STATUS, RP0 $065A  $01F8      CLRF  STACK_8 $065B  $01F9      CLRF  STACK_9 $065C  $3010      MOVLW  16 $065D $00FC      MOVWF  STACK_12 $065E  $0D71      RLF  STACK_1, W $065F  $0DF8      RLF  STACK_8, F $0660  $0DF9      RLF  STACK_9, F $0661  $0874      MOVF  STACK_4, W $0662  $02F8      SUBWF STACK_8, F $0663  $0875      MOVF  STACK_5, W $0664  $1C03      BTFSS  STATUS, C $0665  $0F75      INCFSZ STACK_5, W $0666  $02F9      SUBWF STACK_9, F $0667  $1803      BTFSC  STATUS, C $0668  $2E70      GOTO  $+8 $0669  $0874      MOVF  STACK_4, W $066A  $07F8      ADDWF  STACK_8, F $066B  $0875      MOVF  STACK_5, W $066C  $1803      BTFSC  STATUS, C $066D $0F75      INCFSZ STACK_5, W $066E  $07F9      ADDWF  STACK_9, F $066F  $1003      BCF  STATUS, C $0670  $0DF0      RLF  STACK_0, F $0671  $0DF1      RLF  STACK_1, F $0672  $0BFC      DECFSZ  STACK_12, F $0673  $2E5E      GOTO  $‐21 $0674  $0008      RETURN $04F5  $  _Mul_16x16_S: $04F5  $1303      BCF  STATUS, RP1 

109

Page 111: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$04F6  $1283      BCF  STATUS, RP0 $04F7  $01FB      CLRF  STACK_11 $04F8  $01FA      CLRF  STACK_10 $04F9  $01F9      CLRF  STACK_9 $04FA  $3080      MOVLW  128 $04FB  $00F8      MOVWF  STACK_8 $04FC  $01FD      CLRF  STACK_13 $04FD  $1FF1      BTFSS  STACK_1, 7 $04FE  $2D05      GOTO  $+7 $04FF  $09F1      COMF  STACK_1, F $0500  $09F0      COMF  STACK_0, F $0501  $0AF0      INCF  STACK_0, F $0502  $1903      BTFSC  STATUS, Z $0503  $0AF1      INCF  STACK_1, F $0504  $0AFD      INCF  STACK_13, F $0505  $1FF5      BTFSS  STACK_5, 7 $0506  $2D0D     GOTO  $+7 $0507  $09F5      COMF  STACK_5, F $0508  $09F4      COMF  STACK_4, F $0509  $0AF4      INCF  STACK_4, F $050A  $1903      BTFSC  STATUS, Z $050B  $0AF5      INCF  STACK_5, F $050C  $0AFD      INCF  STACK_13, F $050D $0CF1      RRF  STACK_1, F $050E  $0CF0      RRF  STACK_0, F $050F  $1C03      BTFSS  STATUS, C $0510  $2D1A     GOTO  $+10 $0511  $0874      MOVF  STACK_4, W $0512  $07F9      ADDWF  STACK_9, F $0513  $0875      MOVF  STACK_5, W $0514  $1803      BTFSC  STATUS, C $0515  $0F75      INCFSZ STACK_5, W $0516  $07FA      ADDWF  STACK_10, F $0517  $1803      BTFSC  STATUS, C $0518  $0AFB      INCF  STACK_11, F $0519  $1003      BCF  STATUS, C $051A  $1FF0      BTFSS  STACK_0, 7 $051B  $2D22      GOTO  $+7 $051C  $0874      MOVF  STACK_4, W $051D $07FA      ADDWF  STACK_10, F $051E  $1803      BTFSC  STATUS, C $051F  $0AFB      INCF  STACK_11, F $0520  $0875      MOVF  STACK_5, W $0521  $07FB      ADDWF  STACK_11, F 

110

Page 112: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0522  $0CFB      RRF  STACK_11, F $0523  $0CFA      RRF  STACK_10, F $0524  $0CF9      RRF  STACK_9, F $0525  $0CF8      RRF  STACK_8, F $0526  $1C03      BTFSS  STATUS, C $0527  $2D0D     GOTO  $‐26 $0528  $1C7D      BTFSS  STACK_13, 0 $0529  $2D35      GOTO  $+12 $052A  $09FB      COMF  STACK_11, F $052B  $09FA      COMF  STACK_10, F $052C  $09F9      COMF  STACK_9, F $052D $09F8      COMF  STACK_8, F $052E  $0AF8      INCF  STACK_8, F $052F  $1903      BTFSC  STATUS, Z $0530  $0AF9      INCF  STACK_9, F $0531  $1903      BTFSC  STATUS, Z $0532  $0AFA      INCF  STACK_10, F $0533  $1903      BTFSC  STATUS, Z $0534  $0AFB      INCF  STACK_11, F $0535  $087B      MOVF  STACK_11, W $0536  $00F3      MOVWF  STACK_3 $0537  $087A      MOVF  STACK_10, W $0538  $00F2      MOVWF  STACK_2 $0539  $0879      MOVF  STACK_9, W $053A  $00F1      MOVWF  STACK_1 $053B  $0878      MOVF  STACK_8, W $053C  $00F0      MOVWF  STACK_0 $053D $0000      NOP $053E  $0008      RETURN $060C  $  _shift_in: ;halo_card.c,80 ::     unsigned char shift_in() ;halo_card.c,83 ::     k=128; $060C  $3080      MOVLW  128 $060D $1303      BCF  STATUS, RP1 $060E  $1283      BCF  STATUS, RP0 $060F  $00DB      MOVWF  shift_in_k_L0 ;halo_card.c,84 ::     dat=0; $0610  $01DC      CLRF  shift_in_dat_L0, 1 ;halo_card.c,85 ::     for(n=1;n<=8;n++) $0611  $3001      MOVLW  1 $0612  $00DA     MOVWF  shift_in_n_L0 $0613  $  L_shift_in_11: $0613  $085A      MOVF  shift_in_n_L0, 0 $0614  $3C08      SUBLW 8 

111

Page 113: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0615  $1C03      BTFSS  STATUS, C $0616  $2E31      GOTO  L_shift_in_12 ;halo_card.c,87 ::     clk=1; $0617  $1408      BSF  PORTD, 0 ;halo_card.c,88 ::     if(!out) $0618  $1908      BTFSC  PORTD, 2 $0619  $2E1C      GOTO  L_shift_in_14 ;halo_card.c,90 ::     dat=dat+k; $061A  $085B      MOVF  shift_in_k_L0, 0 $061B  $07DC      ADDWF  shift_in_dat_L0, 1 ;halo_card.c,91 ::     } $061C  $  L_shift_in_14: ;halo_card.c,92 ::     Delay_ms(2); $061C  $3006      MOVLW  6 $061D $00FB      MOVWF  STACK_11 $061E  $30FF      MOVLW  255 $061F  $00FA      MOVWF  STACK_10 $0620  $0BFB      DECFSZ  STACK_11, F $0621  $2E23      GOTO  $+2 $0622  $2E26      GOTO  $+4 $0623  $0BFA      DECFSZ  STACK_10, F $0624  $2E23      GOTO  $‐1 $0625  $2E20      GOTO  $‐5 $0626  $302C      MOVLW  44 $0627  $00FA      MOVWF  STACK_10 $0628  $0BFA      DECFSZ  STACK_10, F $0629  $2E28      GOTO  $‐1 $062A  $0000      NOP $062B  $0000      NOP ;halo_card.c,93 ::     clk=0; $062C  $1008      BCF  PORTD, 0 ;halo_card.c,95 ::     k=k>>1; $062D $0CDB      RRF  shift_in_k_L0, 1 $062E  $13DB      BCF  shift_in_k_L0, 7 ;halo_card.c,96 ::     } $062F  $  L_shift_in_13: ;halo_card.c,85 ::     for(n=1;n<=8;n++) $062F  $0ADA     INCF  shift_in_n_L0, 1 ;halo_card.c,96 ::     } $0630  $2E13      GOTO  L_shift_in_11 $0631  $  L_shift_in_12: ;halo_card.c,97 ::     return(dat); $0631  $085C      MOVF  shift_in_dat_L0, 0 $0632  $00F0      MOVWF  STACK_0 

112

Page 114: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

;halo_card.c,98 ::     } $0633  $0008      RETURN $053F  $  _ByteToStr: $053F  $1303      BCF  STATUS, RP1 $0540  $1283      BCF  STATUS, RP0 $0541  $085B      MOVF  FARG_ByteToStr+1, 0 $0542  $0084      MOVWF  FSR $0543  $3020      MOVLW  32 $0544  $0080      MOVWF  INDF $0545  $3020      MOVLW  32 $0546  $0A84      INCF  FSR, F $0547  $0080      MOVWF  INDF $0548  $0A84      INCF  FSR, F $0549  $0080      MOVWF  INDF $054A  $3001      MOVLW  1 $054B  $00DC      MOVWF  ByteToStr_len_L0 $054C  $085A      MOVF  FARG_ByteToStr+0, 0 $054D $3C09      SUBLW 9 $054E  $1803      BTFSC  STATUS, C $054F  $2D51      GOTO  L_ByteToStr_0 $0550  $0ADC     INCF  ByteToStr_len_L0, 1 $0551  $  L_ByteToStr_0: $0551  $085A      MOVF  FARG_ByteToStr+0, 0 $0552  $3C63      SUBLW 99 $0553  $1803      BTFSC  STATUS, C $0554  $2D56      GOTO  L_ByteToStr_1 $0555  $0ADC     INCF  ByteToStr_len_L0, 1 $0556  $  L_ByteToStr_1: $0556  $3003      MOVLW  3 $0557  $075B      ADDWF  FARG_ByteToStr+1, 0 $0558  $00F0      MOVWF  STACK_0 $0559  $0870      MOVF  STACK_0, 0 $055A  $0084      MOVWF  FSR $055B  $0180      CLRF  INDF, 1 $055C  $0384      DECF  FSR, 1 $055D $  L_ByteToStr_2: $055D $085C      MOVF  ByteToStr_len_L0, 0 $055E  $3C00      SUBLW 0 $055F  $1803      BTFSC  STATUS, C $0560  $2D7B      GOTO  L_ByteToStr_3 $0561  $300A      MOVLW  10 $0562  $00F4      MOVWF  STACK_4 $0563  $085A      MOVF  FARG_ByteToStr+0, 0 $0564  $00F0      MOVWF  STACK_0 

113

Page 115: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0565  $269B      CALL  _div_8x8_u $0566  $0878      MOVF  STACK_8, 0 $0567  $00F0      MOVWF  STACK_0 $0568  $0870      MOVF  STACK_0, 0 $0569  $0080      MOVWF  INDF $056A  $0800      MOVF  INDF, 0 $056B  $025A      SUBWF FARG_ByteToStr+0, 0 $056C  $00F0      MOVWF  STACK_0 $056D $01F1      CLRF  STACK_0+1 $056E  $1C03      BTFSS  STATUS, C $056F  $03F1      DECF  STACK_0+1, 1 $0570  $300A      MOVLW  10 $0571  $00F4      MOVWF  STACK_4 $0572  $01F5      CLRF  STACK_4+1 $0573  $241A      CALL  _div_16x16_s $0574  $0870      MOVF  STACK_0, 0 $0575  $00DA     MOVWF  FARG_ByteToStr+0 $0576  $3030      MOVLW  48 $0577  $0780      ADDWF  INDF, 1 $0578  $0384      DECF  FSR, 1 $0579  $03DC      DECF  ByteToStr_len_L0, 1 $057A  $2D5D     GOTO  L_ByteToStr_2 $057B  $  L_ByteToStr_3: $057B  $0008      RETURN $04B2  $  _LCD_Out: $04B2  $2CC4      GOTO  L_LCD_Out_17 $04B3  $  L_LCD_Out_19: $04B3  $3080      MOVLW  128 $04B4  $1303      BCF  STATUS, RP1 $04B5  $1283      BCF  STATUS, RP0 $04B6  $00DA     MOVWF  FARG_LCD_Out+0 $04B7  $2CD7      GOTO  L_LCD_Out_18 $04B8  $  L_LCD_Out_20: $04B8  $30C0      MOVLW  192 $04B9  $00DA     MOVWF  FARG_LCD_Out+0 $04BA $2CD7      GOTO  L_LCD_Out_18 $04BB  $  L_LCD_Out_21: $04BB  $3094      MOVLW  148 $04BC  $00DA     MOVWF  FARG_LCD_Out+0 $04BD $2CD7      GOTO  L_LCD_Out_18 $04BE  $  L_LCD_Out_22: $04BE  $30D4      MOVLW  212 $04BF  $00DA     MOVWF  FARG_LCD_Out+0 $04C0  $2CD7      GOTO  L_LCD_Out_18 

114

Page 116: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$04C1  $  L_LCD_Out_23: $04C1  $3080      MOVLW  128 $04C2  $00DA     MOVWF  FARG_LCD_Out+0 $04C3  $2CD7      GOTO  L_LCD_Out_18 $04C4  $  L_LCD_Out_17: $04C4  $1303      BCF  STATUS, RP1 $04C5  $1283      BCF  STATUS, RP0 $04C6  $085A      MOVF  FARG_LCD_Out+0, 0 $04C7  $3A01      XORLW  1 $04C8  $1903      BTFSC  STATUS, Z $04C9  $2CB3      GOTO  L_LCD_Out_19 $04CA $085A      MOVF  FARG_LCD_Out+0, 0 $04CB  $3A02      XORLW  2 $04CC  $1903      BTFSC  STATUS, Z $04CD $2CB8      GOTO  L_LCD_Out_20 $04CE  $085A      MOVF  FARG_LCD_Out+0, 0 $04CF  $3A03      XORLW  3 $04D0 $1903      BTFSC  STATUS, Z $04D1 $2CBB      GOTO  L_LCD_Out_21 $04D2 $085A      MOVF  FARG_LCD_Out+0, 0 $04D3 $3A04      XORLW  4 $04D4 $1903      BTFSC  STATUS, Z $04D5 $2CBE      GOTO  L_LCD_Out_22 $04D6 $2CC1      GOTO  L_LCD_Out_23 $04D7 $  L_LCD_Out_18: $04D7 $035B      DECF  FARG_LCD_Out+1, 0 $04D8 $00F0      MOVWF  STACK_0 $04D9 $085A      MOVF  FARG_LCD_Out+0, 0 $04DA $07F0      ADDWF  STACK_0, 1 $04DB $0870      MOVF  STACK_0, 0 $04DC $00DA     MOVWF  FARG_LCD_Out+0 $04DD $0870      MOVF  STACK_0, 0 $04DE $00E1      MOVWF  FARG_Lcd_Cmd+0 $04DF  $2474      CALL  _Lcd_Cmd $04E0  $01A2      CLRF  LCD_cmd_status, 1 $04E1  $01DD     CLRF  LCD_Out_i_L0, 1 $04E2  $  L_LCD_Out_24: $04E2  $085D      MOVF  LCD_Out_i_L0, 0 $04E3  $075C      ADDWF  FARG_LCD_Out+2, 0 $04E4  $0084      MOVWF  FSR $04E5  $0800      MOVF  INDF, 0 $04E6  $00F0      MOVWF  STACK_0 $04E7  $0870      MOVF  STACK_0, 0 $04E8  $1903      BTFSC  STATUS, Z 

115

Page 117: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$04E9  $2CF2      GOTO  L_LCD_Out_25 $04EA  $085D      MOVF  LCD_Out_i_L0, 0 $04EB  $075C      ADDWF  FARG_LCD_Out+2, 0 $04EC  $0084      MOVWF  FSR $04ED $0800      MOVF  INDF, 0 $04EE  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $04EF  $26AC      CALL  _Lcd_Chr_CP $04F0  $0ADD     INCF  LCD_Out_i_L0, 1 $04F1  $2CE2      GOTO  L_LCD_Out_24 $04F2  $  L_LCD_Out_25: $04F2  $3001      MOVLW  1 $04F3  $00A2      MOVWF  LCD_cmd_status $04F4  $0008      RETURN $0634  $  _shift_in_kredit: ;halo_card.c,102 ::     unsigned char shift_in_kredit() ;halo_card.c,105 ::     g=8; $0634  $3008      MOVLW  8 $0635  $1303      BCF  STATUS, RP1 $0636  $1283      BCF  STATUS, RP0 $0637  $00DB      MOVWF  shift_in_kredit_g_L0 ;halo_card.c,106 ::     for(n=1;n<=8;n++) $0638  $3001      MOVLW  1 $0639  $00DA     MOVWF  shift_in_kredit_n_L0 $063A  $  L_shift_in_kredit_15: $063A  $085A      MOVF  shift_in_kredit_n_L0, 0 $063B  $3C08      SUBLW 8 $063C  $1C03      BTFSS  STATUS, C $063D $2E55      GOTO  L_shift_in_kredit_16 ;halo_card.c,108 ::     clk=1; $063E  $1408      BSF  PORTD, 0 ;halo_card.c,109 ::     if(!out) $063F  $1908      BTFSC  PORTD, 2 $0640  $2E42      GOTO  L_shift_in_kredit_18 ;halo_card.c,111 ::     g‐‐; $0641  $03DB      DECF  shift_in_kredit_g_L0, 1 ;halo_card.c,112 ::     } $0642  $  L_shift_in_kredit_18: ;halo_card.c,113 ::     Delay_ms(2); $0642  $3006      MOVLW  6 $0643  $00FB      MOVWF  STACK_11 $0644  $30FF      MOVLW  255 $0645  $00FA      MOVWF  STACK_10 $0646  $0BFB      DECFSZ  STACK_11, F $0647  $2E49      GOTO  $+2 

116

Page 118: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0648  $2E4C      GOTO  $+4 $0649  $0BFA      DECFSZ  STACK_10, F $064A  $2E49      GOTO  $‐1 $064B  $2E46      GOTO  $‐5 $064C  $302C      MOVLW  44 $064D $00FA      MOVWF  STACK_10 $064E  $0BFA      DECFSZ  STACK_10, F $064F  $2E4E      GOTO  $‐1 $0650  $0000      NOP $0651  $0000      NOP ;halo_card.c,114 ::     clk=0; $0652  $1008      BCF  PORTD, 0 ;halo_card.c,115 ::     } $0653  $  L_shift_in_kredit_17: ;halo_card.c,106 ::     for(n=1;n<=8;n++) $0653  $0ADA     INCF  shift_in_kredit_n_L0, 1 ;halo_card.c,115 ::     } $0654  $2E3A      GOTO  L_shift_in_kredit_15 $0655  $  L_shift_in_kredit_16: ;halo_card.c,116 ::     return(g); $0655  $085B      MOVF  shift_in_kredit_g_L0, 0 $0656  $00F0      MOVWF  STACK_0 ;halo_card.c,117 ::     } $0657  $0008      RETURN $0309  $  _Lcd_kredit: ;halo_card.c,27 ::     void Lcd_kredit(unsigned int kred) ;halo_card.c,30 ::     if(kred>10000) $0309  $1303      BCF  STATUS, RP1 $030A  $1283      BCF  STATUS, RP0 $030B  $085B      MOVF  FARG_Lcd_kredit+1, 0 $030C  $3C27      SUBLW 39 $030D $1D03      BTFSS  STATUS, Z $030E  $2B11      GOTO  L_Lcd_kredit_40 $030F  $085A      MOVF  FARG_Lcd_kredit+0, 0 $0310  $3C10      SUBLW 16 $0311  $  L_Lcd_kredit_40: $0311  $1803      BTFSC  STATUS, C $0312  $2B38      GOTO  L_Lcd_kredit_3 ;halo_card.c,32 ::     temp=(kred/10000); $0313  $3010      MOVLW  16 $0314  $00F4      MOVWF  STACK_4 $0315  $3027      MOVLW  39 $0316  $00F5      MOVWF  STACK_4+1 $0317  $085A      MOVF  FARG_Lcd_kredit+0, 0 

117

Page 119: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0318  $00F0      MOVWF  STACK_0 $0319  $085B      MOVF  FARG_Lcd_kredit+1, 0 $031A  $00F1      MOVWF  STACK_0+1 $031B  $2658      CALL  _div_16x16_u $031C  $0870      MOVF  STACK_0, 0 $031D $00DC      MOVWF  Lcd_kredit_temp_L0 $031E  $0871      MOVF  STACK_0+1, 0 $031F  $00DD     MOVWF  Lcd_kredit_temp_L0+1 ;halo_card.c,33 ::     Lcd_Chr(2,1,temp+48); $0320  $3002      MOVLW  2 $0321  $00DE      MOVWF  FARG_Lcd_Chr+0 $0322  $3001      MOVLW  1 $0323  $00DF      MOVWF  FARG_Lcd_Chr+1 $0324  $3030      MOVLW  48 $0325  $0770      ADDWF  STACK_0, 0 $0326  $00E0      MOVWF  FARG_Lcd_Chr+2 $0327  $257C      CALL  _Lcd_Chr ;halo_card.c,34 ::     kred=kred‐temp*10000; $0328  $085C      MOVF  Lcd_kredit_temp_L0, 0 $0329  $00F0      MOVWF  STACK_0 $032A  $085D      MOVF  Lcd_kredit_temp_L0+1, 0 $032B  $00F1      MOVWF  STACK_0+1 $032C  $3010      MOVLW  16 $032D $00F4      MOVWF  STACK_4 $032E  $3027      MOVLW  39 $032F  $00F5      MOVWF  STACK_4+1 $0330  $24F5      CALL  _mul_16x16_s $0331  $0870      MOVF  STACK_0, 0 $0332  $02DA     SUBWF FARG_Lcd_kredit+0, 1 $0333  $1C03      BTFSS  STATUS, C $0334  $03DB      DECF  FARG_Lcd_kredit+1, 1 $0335  $0871      MOVF  STACK_0+1, 0 $0336  $02DB      SUBWF FARG_Lcd_kredit+1, 1 ;halo_card.c,35 ::     } $0337  $2B3F      GOTO  L_Lcd_kredit_4 $0338  $  L_Lcd_kredit_3: ;halo_card.c,38 ::     Lcd_Chr(2,1,0+48); $0338  $3002      MOVLW  2 $0339  $00DE      MOVWF  FARG_Lcd_Chr+0 $033A  $3001      MOVLW  1 $033B  $00DF      MOVWF  FARG_Lcd_Chr+1 $033C  $3030      MOVLW  48 $033D $00E0      MOVWF  FARG_Lcd_Chr+2 $033E  $257C      CALL  _Lcd_Chr 

118

Page 120: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

;halo_card.c,39 ::     } $033F  $  L_Lcd_kredit_4: ;halo_card.c,41 ::     if(kred>1000) $033F  $085B      MOVF  FARG_Lcd_kredit+1, 0 $0340  $3C03      SUBLW 3 $0341  $1D03      BTFSS  STATUS, Z $0342  $2B45      GOTO  L_Lcd_kredit_41 $0343  $085A      MOVF  FARG_Lcd_kredit+0, 0 $0344  $3CE8      SUBLW 232 $0345  $  L_Lcd_kredit_41: $0345  $1803      BTFSC  STATUS, C $0346  $2B68      GOTO  L_Lcd_kredit_5 ;halo_card.c,43 ::     temp=(kred/1000); $0347  $30E8      MOVLW  232 $0348  $00F4      MOVWF  STACK_4 $0349  $3003      MOVLW  3 $034A  $00F5      MOVWF  STACK_4+1 $034B  $085A      MOVF  FARG_Lcd_kredit+0, 0 $034C  $00F0      MOVWF  STACK_0 $034D $085B      MOVF  FARG_Lcd_kredit+1, 0 $034E  $00F1      MOVWF  STACK_0+1 $034F  $2658      CALL  _div_16x16_u $0350  $0870      MOVF  STACK_0, 0 $0351  $00DC      MOVWF  Lcd_kredit_temp_L0 $0352  $0871      MOVF  STACK_0+1, 0 $0353  $00DD     MOVWF  Lcd_kredit_temp_L0+1 ;halo_card.c,44 ::     Lcd_Chr_Cp(temp+48); $0354  $3030      MOVLW  48 $0355  $0770      ADDWF  STACK_0, 0 $0356  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $0357  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,45 ::     kred=kred‐temp*1000; $0358  $085C      MOVF  Lcd_kredit_temp_L0, 0 $0359  $00F0      MOVWF  STACK_0 $035A  $085D      MOVF  Lcd_kredit_temp_L0+1, 0 $035B  $00F1      MOVWF  STACK_0+1 $035C  $30E8      MOVLW  232 $035D $00F4      MOVWF  STACK_4 $035E  $3003      MOVLW  3 $035F  $00F5      MOVWF  STACK_4+1 $0360  $24F5      CALL  _mul_16x16_s $0361  $0870      MOVF  STACK_0, 0 $0362  $02DA     SUBWF FARG_Lcd_kredit+0, 1 $0363  $1C03      BTFSS  STATUS, C 

119

Page 121: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0364  $03DB      DECF  FARG_Lcd_kredit+1, 1 $0365  $0871      MOVF  STACK_0+1, 0 $0366  $02DB      SUBWF FARG_Lcd_kredit+1, 1 ;halo_card.c,46 ::     } $0367  $2B6B      GOTO  L_Lcd_kredit_6 $0368  $  L_Lcd_kredit_5: ;halo_card.c,49 ::     Lcd_Chr_Cp(0+48); $0368  $3030      MOVLW  48 $0369  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $036A  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,50 ::     } $036B  $  L_Lcd_kredit_6: ;halo_card.c,52 ::     if(kred>100) $036B  $085B      MOVF  FARG_Lcd_kredit+1, 0 $036C  $3C00      SUBLW 0 $036D $1D03      BTFSS  STATUS, Z $036E  $2B71      GOTO  L_Lcd_kredit_42 $036F  $085A      MOVF  FARG_Lcd_kredit+0, 0 $0370  $3C64      SUBLW 100 $0371  $  L_Lcd_kredit_42: $0371  $1803      BTFSC  STATUS, C $0372  $2B94      GOTO  L_Lcd_kredit_7 ;halo_card.c,54 ::     temp=(kred/100); $0373  $3064      MOVLW  100 $0374  $00F4      MOVWF  STACK_4 $0375  $3000      MOVLW  0 $0376  $00F5      MOVWF  STACK_4+1 $0377  $085A      MOVF  FARG_Lcd_kredit+0, 0 $0378  $00F0      MOVWF  STACK_0 $0379  $085B      MOVF  FARG_Lcd_kredit+1, 0 $037A  $00F1      MOVWF  STACK_0+1 $037B  $2658      CALL  _div_16x16_u $037C  $0870      MOVF  STACK_0, 0 $037D $00DC      MOVWF  Lcd_kredit_temp_L0 $037E  $0871      MOVF  STACK_0+1, 0 $037F  $00DD     MOVWF  Lcd_kredit_temp_L0+1 ;halo_card.c,55 ::     Lcd_Chr_Cp(temp+48); $0380  $3030      MOVLW  48 $0381  $0770      ADDWF  STACK_0, 0 $0382  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $0383  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,56 ::     kred=kred‐temp*100; $0384  $085C      MOVF  Lcd_kredit_temp_L0, 0 $0385  $00F0      MOVWF  STACK_0 

120

Page 122: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0386  $085D      MOVF  Lcd_kredit_temp_L0+1, 0 $0387  $00F1      MOVWF  STACK_0+1 $0388  $3064      MOVLW  100 $0389  $00F4      MOVWF  STACK_4 $038A  $3000      MOVLW  0 $038B  $00F5      MOVWF  STACK_4+1 $038C  $24F5      CALL  _mul_16x16_s $038D $0870      MOVF  STACK_0, 0 $038E  $02DA     SUBWF FARG_Lcd_kredit+0, 1 $038F  $1C03      BTFSS  STATUS, C $0390  $03DB      DECF  FARG_Lcd_kredit+1, 1 $0391  $0871      MOVF  STACK_0+1, 0 $0392  $02DB      SUBWF FARG_Lcd_kredit+1, 1 ;halo_card.c,57 ::     } $0393  $2B97      GOTO  L_Lcd_kredit_8 $0394  $  L_Lcd_kredit_7: ;halo_card.c,60 ::     Lcd_Chr_Cp(0+48); $0394  $3030      MOVLW  48 $0395  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $0396  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,61 ::     } $0397  $  L_Lcd_kredit_8: ;halo_card.c,63 ::     Lcd_Chr_Cp(46); $0397  $302E      MOVLW  46 $0398  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $0399  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,65 ::     if(kred>10) $039A  $085B      MOVF  FARG_Lcd_kredit+1, 0 $039B  $3C00      SUBLW 0 $039C  $1D03      BTFSS  STATUS, Z $039D $2BA0      GOTO  L_Lcd_kredit_43 $039E  $085A      MOVF  FARG_Lcd_kredit+0, 0 $039F  $3C0A      SUBLW 10 $03A0  $  L_Lcd_kredit_43: $03A0  $1803      BTFSC  STATUS, C $03A1  $2BC3      GOTO  L_Lcd_kredit_9 ;halo_card.c,67 ::     temp=(kred/10); $03A2  $300A      MOVLW  10 $03A3  $00F4      MOVWF  STACK_4 $03A4  $3000      MOVLW  0 $03A5  $00F5      MOVWF  STACK_4+1 $03A6  $085A      MOVF  FARG_Lcd_kredit+0, 0 $03A7  $00F0      MOVWF  STACK_0 $03A8  $085B      MOVF  FARG_Lcd_kredit+1, 0 

121

Page 123: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$03A9  $00F1      MOVWF  STACK_0+1 $03AA $2658      CALL  _div_16x16_u $03AB $0870      MOVF  STACK_0, 0 $03AC $00DC      MOVWF  Lcd_kredit_temp_L0 $03AD $0871      MOVF  STACK_0+1, 0 $03AE  $00DD     MOVWF  Lcd_kredit_temp_L0+1 ;halo_card.c,68 ::     Lcd_Chr_Cp(temp+48); $03AF  $3030      MOVLW  48 $03B0  $0770      ADDWF  STACK_0, 0 $03B1  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $03B2  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,69 ::     kred=kred‐temp*10; $03B3  $085C      MOVF  Lcd_kredit_temp_L0, 0 $03B4  $00F0      MOVWF  STACK_0 $03B5  $085D      MOVF  Lcd_kredit_temp_L0+1, 0 $03B6  $00F1      MOVWF  STACK_0+1 $03B7  $300A      MOVLW  10 $03B8  $00F4      MOVWF  STACK_4 $03B9  $3000      MOVLW  0 $03BA $00F5      MOVWF  STACK_4+1 $03BB  $24F5      CALL  _mul_16x16_s $03BC  $0870      MOVF  STACK_0, 0 $03BD $02DA     SUBWF FARG_Lcd_kredit+0, 1 $03BE  $1C03      BTFSS  STATUS, C $03BF  $03DB      DECF  FARG_Lcd_kredit+1, 1 $03C0  $0871      MOVF  STACK_0+1, 0 $03C1  $02DB      SUBWF FARG_Lcd_kredit+1, 1 ;halo_card.c,70 ::     } $03C2  $2BC6      GOTO  L_Lcd_kredit_10 $03C3  $  L_Lcd_kredit_9: ;halo_card.c,73 ::     Lcd_Chr_Cp(0+48); $03C3  $3030      MOVLW  48 $03C4  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $03C5  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,74 ::     } $03C6  $  L_Lcd_kredit_10: ;halo_card.c,76 ::     Lcd_Chr_Cp(kred+48); $03C6  $3030      MOVLW  48 $03C7  $075A      ADDWF  FARG_Lcd_kredit+0, 0 $03C8  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $03C9  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,77 ::     Lcd_Chr_Cp(32); $03CA $3020      MOVLW  32 $03CB  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 

122

Page 124: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$03CC  $26AC      CALL  _Lcd_Chr_CP ;halo_card.c,78 ::     } $03CD $0008      RETURN $0675  $  _LCD_Out_CP: $0675  $1303      BCF  STATUS, RP1 $0676  $1283      BCF  STATUS, RP0 $0677  $01DB      CLRF  LCD_Out_CP_i_L0, 1 $0678  $  L_LCD_Out_CP_15: $0678  $085B      MOVF  LCD_Out_CP_i_L0, 0 $0679  $075A      ADDWF  FARG_LCD_Out_CP+0, 0 $067A  $0084      MOVWF  FSR $067B  $0800      MOVF  INDF, 0 $067C  $00F0      MOVWF  STACK_0 $067D $0870      MOVF  STACK_0, 0 $067E  $1903      BTFSC  STATUS, Z $067F  $2E88      GOTO  L_LCD_Out_CP_16 $0680  $085B      MOVF  LCD_Out_CP_i_L0, 0 $0681  $075A      ADDWF  FARG_LCD_Out_CP+0, 0 $0682  $0084      MOVWF  FSR $0683  $0800      MOVF  INDF, 0 $0684  $00DE      MOVWF  FARG_Lcd_Chr_CP+0 $0685  $26AC      CALL  _Lcd_Chr_CP $0686  $0ADB     INCF  LCD_Out_CP_i_L0, 1 $0687  $2E78      GOTO  L_LCD_Out_CP_15 $0688  $  L_LCD_Out_CP_16: $0688  $0008      RETURN $05E1  $  _Mul_16x16_U: $05E1  $1303      BCF  STATUS, RP1 $05E2  $1283      BCF  STATUS, RP0 $05E3  $01FB      CLRF  STACK_11 $05E4  $01FA      CLRF  STACK_10 $05E5  $01F9      CLRF  STACK_9 $05E6  $3080      MOVLW  128 $05E7  $00F8      MOVWF  STACK_8 $05E8  $0CF1      RRF  STACK_1, F $05E9  $0CF0      RRF  STACK_0, F $05EA  $1C03      BTFSS  STATUS, C $05EB  $2DF5      GOTO  $+10 $05EC  $0874      MOVF  STACK_4, W $05ED $07F9      ADDWF  STACK_9, F $05EE  $0875      MOVF  STACK_5, W $05EF  $1803      BTFSC  STATUS, C $05F0  $0F75      INCFSZ STACK_5, W $05F1  $07FA      ADDWF  STACK_10, F 

123

Page 125: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$05F2  $1803      BTFSC  STATUS, C $05F3  $0AFB      INCF  STACK_11, F $05F4  $1003      BCF  STATUS, C $05F5  $1FF0      BTFSS  STACK_0, 7 $05F6  $2DFD      GOTO  $+7 $05F7  $0874      MOVF  STACK_4, W $05F8  $07FA      ADDWF  STACK_10, F $05F9  $0875      MOVF  STACK_5, W $05FA  $1803      BTFSC  STATUS, C $05FB  $0F75      INCFSZ STACK_5, W $05FC  $07FB      ADDWF  STACK_11, F $05FD  $0CFB      RRF  STACK_11, F $05FE  $0CFA      RRF  STACK_10, F $05FF  $0CF9      RRF  STACK_9, F $0600  $0CF8      RRF  STACK_8, F $0601  $1C03      BTFSS  STATUS, C $0602  $2DE8      GOTO  $‐26 $0603  $087B      MOVF  STACK_11, W $0604  $00F3      MOVWF  STACK_3 $0605  $087A      MOVF  STACK_10, W $0606  $00F2      MOVWF  STACK_2 $0607  $0879      MOVF  STACK_9, W $0608  $00F1      MOVWF  STACK_1 $0609  $0878      MOVF  STACK_8, W $060A  $00F0      MOVWF  STACK_0 $060B  $0008      RETURN $002D $  _chipcard_read: $002D $3044      MOVLW  68 $002E  $1303      BCF  STATUS, RP1 $002F  $1683      BSF  STATUS, RP0 $0030  $00A0      MOVWF  lstr1_halo_card+0 $0031  $3069      MOVLW  105 $0032  $00A1      MOVWF  lstr1_halo_card+1 $0033  $306E      MOVLW  110 $0034  $00A2      MOVWF  lstr1_halo_card+2 $0035  $3061      MOVLW  97 $0036  $00A3      MOVWF  lstr1_halo_card+3 $0037  $3072      MOVLW  114 $0038  $00A4      MOVWF  lstr1_halo_card+4 $0039  $3061      MOVLW  97 $003A  $00A5      MOVWF  lstr1_halo_card+5 $003B  $01A6      CLRF  lstr1_halo_card+6 $003C  $3055      MOVLW  85 $003D $00A7      MOVWF  lstr2_halo_card+0 

124

Page 126: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$003E  $3062      MOVLW  98 $003F  $00A8      MOVWF  lstr2_halo_card+1 $0040  $3061      MOVLW  97 $0041  $00A9      MOVWF  lstr2_halo_card+2 $0042  $3063      MOVLW  99 $0043  $00AA      MOVWF  lstr2_halo_card+3 $0044  $3069      MOVLW  105 $0045  $00AB      MOVWF  lstr2_halo_card+4 $0046  $3074      MOVLW  116 $0047  $00AC      MOVWF  lstr2_halo_card+5 $0048  $3065      MOVLW  101 $0049  $00AD     MOVWF  lstr2_halo_card+6 $004A  $01AE      CLRF  lstr2_halo_card+7 $004B  $304B      MOVLW  75 $004C  $00AF      MOVWF  lstr3_halo_card+0 $004D $3061      MOVLW  97 $004E  $00B0      MOVWF  lstr3_halo_card+1 $004F  $3072      MOVLW  114 $0050  $00B1      MOVWF  lstr3_halo_card+2 $0051  $3074      MOVLW  116 $0052  $00B2      MOVWF  lstr3_halo_card+3 $0053  $3069      MOVLW  105 $0054  $00B3      MOVWF  lstr3_halo_card+4 $0055  $3063      MOVLW  99 $0056  $00B4      MOVWF  lstr3_halo_card+5 $0057  $3075      MOVLW  117 $0058  $00B5      MOVWF  lstr3_halo_card+6 $0059  $01B6      CLRF  lstr3_halo_card+7 ;halo_card.c,120 ::     void chipcard_read() ;halo_card.c,124 ::     if(kartica) $005A  $1283      BCF  STATUS, RP0 $005B  $0820      MOVF  _kartica, 0 $005C  $1903      BTFSC  STATUS, Z $005D $2990      GOTO  L_chipcard_read_19 ;halo_card.c,126 ::     if(det_jednom) $005E  $0823      MOVF  _det_jednom, 0 $005F  $1903      BTFSC  STATUS, Z $0060  $298F      GOTO  L_chipcard_read_20 ;halo_card.c,128 ::     Lcd_Cmd(Lcd_CLEAR); $0061  $3001      MOVLW  1 $0062  $00E1      MOVWF  FARG_Lcd_Cmd+0 $0063  $2474      CALL  _Lcd_Cmd ;halo_card.c,129 ::     det_jednom=0; $0064  $01A3      CLRF  _det_jednom, 1 

125

Page 127: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

;halo_card.c,130 ::     nap=0; $0065  $1207      BCF  PORTC, 4 ;halo_card.c,131 ::     Delay_ms(100); $0066  $3002      MOVLW  2 $0067  $00FC      MOVWF  STACK_12 $0068  $30FF      MOVLW  255 $0069  $00FB      MOVWF  STACK_11 $006A  $30FF      MOVLW  255 $006B  $00FA      MOVWF  STACK_10 $006C  $0BFC      DECFSZ  STACK_12, F $006D $286F      GOTO  $+2 $006E  $2876      GOTO  $+8 $006F  $0BFB      DECFSZ  STACK_11, F $0070  $2872      GOTO  $+2 $0071  $2875      GOTO  $+4 $0072  $0BFA      DECFSZ  STACK_10, F $0073  $2872      GOTO  $‐1 $0074  $286F      GOTO  $‐5 $0075  $286C      GOTO  $‐9 $0076  $3006      MOVLW  6 $0077  $00FB      MOVWF  STACK_11 $0078  $30FF      MOVLW  255 $0079  $00FA      MOVWF  STACK_10 $007A  $0BFB      DECFSZ  STACK_11, F $007B  $287D      GOTO  $+2 $007C  $2880      GOTO  $+4 $007D $0BFA      DECFSZ  STACK_10, F $007E  $287D      GOTO  $‐1 $007F  $287A      GOTO  $‐5 $0080  $300A      MOVLW  10 $0081  $00FA      MOVWF  STACK_10 $0082  $0BFA      DECFSZ  STACK_10, F $0083  $2882      GOTO  $‐1 ;halo_card.c,132 ::     Delay_ms(100); $0084  $3002      MOVLW  2 $0085  $00FC      MOVWF  STACK_12 $0086  $30FF      MOVLW  255 $0087  $00FB      MOVWF  STACK_11 $0088  $30FF      MOVLW  255 $0089  $00FA      MOVWF  STACK_10 $008A  $0BFC      DECFSZ  STACK_12, F $008B  $288D      GOTO  $+2 $008C  $2894      GOTO  $+8 $008D $0BFB      DECFSZ  STACK_11, F 

126

Page 128: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$008E  $2890      GOTO  $+2 $008F  $2893      GOTO  $+4 $0090  $0BFA      DECFSZ  STACK_10, F $0091  $2890      GOTO  $‐1 $0092  $288D      GOTO  $‐5 $0093  $288A      GOTO  $‐9 $0094  $3006      MOVLW  6 $0095  $00FB      MOVWF  STACK_11 $0096  $30FF      MOVLW  255 $0097  $00FA      MOVWF  STACK_10 $0098  $0BFB      DECFSZ  STACK_11, F $0099  $289B      GOTO  $+2 $009A  $289E      GOTO  $+4 $009B  $0BFA      DECFSZ  STACK_10, F $009C  $289B      GOTO  $‐1 $009D $2898      GOTO  $‐5 $009E  $300A      MOVLW  10 $009F  $00FA      MOVWF  STACK_10 $00A0  $0BFA      DECFSZ  STACK_10, F $00A1  $28A0      GOTO  $‐1 ;halo_card.c,133 ::     clk=0; $00A2  $1008      BCF  PORTD, 0 ;halo_card.c,134 ::     res=0; $00A3  $1088      BCF  PORTD, 1 ;halo_card.c,135 ::     Delay_ms(100); $00A4  $3002      MOVLW  2 $00A5  $00FC      MOVWF  STACK_12 $00A6  $30FF      MOVLW  255 $00A7  $00FB      MOVWF  STACK_11 $00A8  $30FF      MOVLW  255 $00A9  $00FA      MOVWF  STACK_10 $00AA $0BFC      DECFSZ  STACK_12, F $00AB $28AD     GOTO  $+2 $00AC $28B4      GOTO  $+8 $00AD $0BFB      DECFSZ  STACK_11, F $00AE  $28B0      GOTO  $+2 $00AF  $28B3      GOTO  $+4 $00B0  $0BFA      DECFSZ  STACK_10, F $00B1  $28B0      GOTO  $‐1 $00B2  $28AD     GOTO  $‐5 $00B3  $28AA      GOTO  $‐9 $00B4  $3006      MOVLW  6 $00B5  $00FB      MOVWF  STACK_11 $00B6  $30FF      MOVLW  255 

127

Page 129: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$00B7  $00FA      MOVWF  STACK_10 $00B8  $0BFB      DECFSZ  STACK_11, F $00B9  $28BB      GOTO  $+2 $00BA $28BE      GOTO  $+4 $00BB  $0BFA      DECFSZ  STACK_10, F $00BC  $28BB      GOTO  $‐1 $00BD $28B8      GOTO  $‐5 $00BE  $300A      MOVLW  10 $00BF  $00FA      MOVWF  STACK_10 $00C0  $0BFA      DECFSZ  STACK_10, F $00C1  $28C0      GOTO  $‐1 ;halo_card.c,136 ::     clk=1; $00C2  $1408      BSF  PORTD, 0 ;halo_card.c,137 ::     res=1; $00C3  $1488      BSF  PORTD, 1 ;halo_card.c,138 ::     Delay_ms(2); $00C4  $3006      MOVLW  6 $00C5  $00FB      MOVWF  STACK_11 $00C6  $30FF      MOVLW  255 $00C7  $00FA      MOVWF  STACK_10 $00C8  $0BFB      DECFSZ  STACK_11, F $00C9  $28CB      GOTO  $+2 $00CA $28CE      GOTO  $+4 $00CB  $0BFA      DECFSZ  STACK_10, F $00CC  $28CB      GOTO  $‐1 $00CD $28C8      GOTO  $‐5 $00CE  $302C      MOVLW  44 $00CF  $00FA      MOVWF  STACK_10 $00D0 $0BFA      DECFSZ  STACK_10, F $00D1 $28D0      GOTO  $‐1 $00D2 $0000      NOP $00D3 $0000      NOP ;halo_card.c,139 ::     res=0; $00D4 $1088      BCF  PORTD, 1 ;halo_card.c,140 ::     clk=0; $00D5 $1008      BCF  PORTD, 0 ;halo_card.c,141 ::     Delay_ms(2); $00D6 $3006      MOVLW  6 $00D7 $00FB      MOVWF  STACK_11 $00D8 $30FF      MOVLW  255 $00D9 $00FA      MOVWF  STACK_10 $00DA $0BFB      DECFSZ  STACK_11, F $00DB $28DD     GOTO  $+2 $00DC $28E0      GOTO  $+4 

128

Page 130: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$00DD $0BFA      DECFSZ  STACK_10, F $00DE $28DD     GOTO  $‐1 $00DF  $28DA     GOTO  $‐5 $00E0  $302C      MOVLW  44 $00E1  $00FA      MOVWF  STACK_10 $00E2  $0BFA      DECFSZ  STACK_10, F $00E3  $28E2      GOTO  $‐1 $00E4  $0000      NOP $00E5  $0000      NOP ;halo_card.c,142 ::     for(i=1;i<=32;i++)   // preskacemo prva 4 bajta $00E6  $3001      MOVLW  1 $00E7  $1683      BSF  STATUS, RP0 $00E8  $00BB      MOVWF  chipcard_read_i_L0 $00E9  $  L_chipcard_read_21: $00E9  $083B      MOVF  chipcard_read_i_L0, 0 $00EA  $3C20      SUBLW 32 $00EB  $1C03      BTFSS  STATUS, C $00EC  $290F      GOTO  L_chipcard_read_22 ;halo_card.c,144 ::     clk=1; $00ED $1283      BCF  STATUS, RP0 $00EE  $1408      BSF  PORTD, 0 ;halo_card.c,145 ::     Delay_ms(1); $00EF  $3003      MOVLW  3 $00F0  $00FB      MOVWF  STACK_11 $00F1  $30FF      MOVLW  255 $00F2  $00FA      MOVWF  STACK_10 $00F3  $0BFB      DECFSZ  STACK_11, F $00F4  $28F6      GOTO  $+2 $00F5  $28F9      GOTO  $+4 $00F6  $0BFA      DECFSZ  STACK_10, F $00F7  $28F6      GOTO  $‐1 $00F8  $28F3      GOTO  $‐5 $00F9  $3096      MOVLW  150 $00FA  $00FA      MOVWF  STACK_10 $00FB  $0BFA      DECFSZ  STACK_10, F $00FC  $28FB      GOTO  $‐1 ;halo_card.c,146 ::     clk=0; $00FD  $1008      BCF  PORTD, 0 ;halo_card.c,147 ::     Delay_ms(1); $00FE  $3003      MOVLW  3 $00FF  $00FB      MOVWF  STACK_11 $0100  $30FF      MOVLW  255 $0101  $00FA      MOVWF  STACK_10 $0102  $0BFB      DECFSZ  STACK_11, F 

129

Page 131: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0103  $2905      GOTO  $+2 $0104  $2908      GOTO  $+4 $0105  $0BFA      DECFSZ  STACK_10, F $0106  $2905      GOTO  $‐1 $0107  $2902      GOTO  $‐5 $0108  $3096      MOVLW  150 $0109  $00FA      MOVWF  STACK_10 $010A  $0BFA      DECFSZ  STACK_10, F $010B  $290A      GOTO  $‐1 ;halo_card.c,148 ::     } $010C  $  L_chipcard_read_23: ;halo_card.c,142 ::     for(i=1;i<=32;i++)   // preskacemo prva 4 bajta $010C  $1683      BSF  STATUS, RP0 $010D $0ABB      INCF  chipcard_read_i_L0, 1 ;halo_card.c,148 ::     } $010E  $28E9      GOTO  L_chipcard_read_21 $010F  $  L_chipcard_read_22: ;halo_card.c,149 ::     for(i=0;i<=3;i++)        //citamo serijski broj $010F  $01BB      CLRF  chipcard_read_i_L0, 1 $0110  $  L_chipcard_read_24: $0110  $083B      MOVF  chipcard_read_i_L0, 0 $0111  $3C03      SUBLW 3 $0112  $1C03      BTFSS  STATUS, C $0113  $291F      GOTO  L_chipcard_read_25 ;halo_card.c,151 ::     eep_sifra_temp[i]=shift_in(); $0114  $083B      MOVF  chipcard_read_i_L0, 0 $0115  $3F24      ADDLW  _eep_sifra_temp $0116  $00BC      MOVWF  FLOC_chipcard_read+28 $0117  $260C      CALL  _shift_in $0118  $1683      BSF  STATUS, RP0 $0119  $083C      MOVF  FLOC_chipcard_read+28, 0 $011A  $0084      MOVWF  FSR $011B  $0870      MOVF  STACK_0, 0 $011C  $0080      MOVWF  INDF ;halo_card.c,152 ::     } $011D $  L_chipcard_read_26: ;halo_card.c,149 ::     for(i=0;i<=3;i++)        //citamo serijski broj $011D $0ABB      INCF  chipcard_read_i_L0, 1 ;halo_card.c,152 ::     } $011E  $2910      GOTO  L_chipcard_read_24 $011F  $  L_chipcard_read_25: ;halo_card.c,153 ::     for(i=0;i<=3;i++) $011F  $01BB      CLRF  chipcard_read_i_L0, 1 $0120  $  L_chipcard_read_27: 

130

Page 132: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0120  $083B      MOVF  chipcard_read_i_L0, 0 $0121  $3C03      SUBLW 3 $0122  $1C03      BTFSS  STATUS, C $0123  $2944      GOTO  L_chipcard_read_28 ;halo_card.c,155 ::     ByteToStr(eep_sifra_temp[i],text); $0124  $083B      MOVF  chipcard_read_i_L0, 0 $0125  $3F24      ADDLW  _eep_sifra_temp $0126  $0084      MOVWF  FSR $0127  $0800      MOVF  INDF, 0 $0128  $1283      BCF  STATUS, RP0 $0129  $00DA     MOVWF  FARG_ByteToStr+0 $012A  $3028      MOVLW  _text $012B  $00DB      MOVWF  FARG_ByteToStr+1 $012C  $253F      CALL  _ByteToStr ;halo_card.c,156 ::     Lcd_Out(1,((i*4)+1),text); $012D $3001      MOVLW  1 $012E  $00DA     MOVWF  FARG_LCD_Out+0 $012F  $3002      MOVLW  2 $0130  $00F4      MOVWF  STACK_4 $0131  $1683      BSF  STATUS, RP0 $0132  $083B      MOVF  chipcard_read_i_L0, 0 $0133  $00F0      MOVWF  STACK_0 $0134  $0874      MOVF  STACK_4, 0 $0135  $  L_chipcard_read_44: $0135  $1903      BTFSC  STATUS, Z $0136  $293B      GOTO  L_chipcard_read_45 $0137  $0DF0      RLF  STACK_0, 1 $0138  $1070      BCF  STACK_0, 0 $0139  $3FFF      ADDLW  255 $013A  $2935      GOTO  L_chipcard_read_44 $013B  $  L_chipcard_read_45: $013B  $0A70      INCF  STACK_0, 0 $013C  $1283      BCF  STATUS, RP0 $013D $00DB      MOVWF  FARG_LCD_Out+1 $013E  $3028      MOVLW  _text $013F  $00DC      MOVWF  FARG_LCD_Out+2 $0140  $24B2      CALL  _LCD_Out ;halo_card.c,157 ::     } $0141  $  L_chipcard_read_29: ;halo_card.c,153 ::     for(i=0;i<=3;i++) $0141  $1683      BSF  STATUS, RP0 $0142  $0ABB      INCF  chipcard_read_i_L0, 1 ;halo_card.c,157 ::     } $0143  $2920      GOTO  L_chipcard_read_27 

131

Page 133: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0144  $  L_chipcard_read_28: ;halo_card.c,160 ::     kredit=0; $0144  $01B7      CLRF  chipcard_read_kredit_L0 $0145  $01B8      CLRF  chipcard_read_kredit_L0+1 ;halo_card.c,161 ::     m=4096; $0146  $3000      MOVLW  0 $0147  $00B9      MOVWF  chipcard_read_m_L0 $0148  $3010      MOVLW  16 $0149  $00BA      MOVWF  chipcard_read_m_L0+1 ;halo_card.c,162 ::     for(i=0;i<=4;i++) $014A  $01BB      CLRF  chipcard_read_i_L0, 1 $014B  $  L_chipcard_read_30: $014B  $083B      MOVF  chipcard_read_i_L0, 0 $014C  $3C04      SUBLW 4 $014D $1C03      BTFSS  STATUS, C $014E  $2973      GOTO  L_chipcard_read_31 ;halo_card.c,164 ::     kredit=kredit+m*shift_in_kredit(); $014F  $2634      CALL  _shift_in_kredit $0150  $3000      MOVLW  0 $0151  $00F1      MOVWF  STACK_0+1 $0152  $1683      BSF  STATUS, RP0 $0153  $0839      MOVF  chipcard_read_m_L0, 0 $0154  $00F4      MOVWF  STACK_4 $0155  $083A      MOVF  chipcard_read_m_L0+1, 0 $0156  $00F5      MOVWF  STACK_4+1 $0157  $25E1      CALL  _mul_16x16_u $0158  $0870      MOVF  STACK_0, 0 $0159  $1683      BSF  STATUS, RP0 $015A  $07B7      ADDWF  chipcard_read_kredit_L0, 1 $015B  $0871      MOVF  STACK_0+1, 0 $015C  $1803      BTFSC  STATUS, C $015D $3F01      ADDLW  1 $015E  $07B8      ADDWF  chipcard_read_kredit_L0+1, 1 ;halo_card.c,165 ::     m=m/8; $015F  $3003      MOVLW  3 $0160  $00F4      MOVWF  STACK_4 $0161  $0839      MOVF  chipcard_read_m_L0, 0 $0162  $00F0      MOVWF  STACK_0 $0163  $083A      MOVF  chipcard_read_m_L0+1, 0 $0164  $00F1      MOVWF  STACK_0+1 $0165  $0874      MOVF  STACK_4, 0 $0166  $  L_chipcard_read_46: $0166  $1903      BTFSC  STATUS, Z $0167  $296D      GOTO  L_chipcard_read_47 

132

Page 134: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0168  $0CF1      RRF  STACK_0+1, 1 $0169  $0CF0      RRF  STACK_0, 1 $016A  $13F1      BCF  STACK_0+1, 7 $016B  $3FFF      ADDLW  255 $016C  $2966      GOTO  L_chipcard_read_46 $016D $  L_chipcard_read_47: $016D $0870      MOVF  STACK_0, 0 $016E  $00B9      MOVWF  chipcard_read_m_L0 $016F  $0871      MOVF  STACK_0+1, 0 $0170  $00BA      MOVWF  chipcard_read_m_L0+1 ;halo_card.c,166 ::     } $0171  $  L_chipcard_read_32: ;halo_card.c,162 ::     for(i=0;i<=4;i++) $0171  $0ABB      INCF  chipcard_read_i_L0, 1 ;halo_card.c,166 ::     } $0172  $294B      GOTO  L_chipcard_read_30 $0173  $  L_chipcard_read_31: ;halo_card.c,167 ::     temp_kredit=(kredit*2); $0173  $3001      MOVLW  1 $0174  $00F4      MOVWF  STACK_4 $0175  $0837      MOVF  chipcard_read_kredit_L0, 0 $0176  $00F0      MOVWF  STACK_0 $0177  $0838      MOVF  chipcard_read_kredit_L0+1, 0 $0178  $00F1      MOVWF  STACK_0+1 $0179  $0874      MOVF  STACK_4, 0 $017A  $  L_chipcard_read_48: $017A  $1903      BTFSC  STATUS, Z $017B  $2981      GOTO  L_chipcard_read_49 $017C  $0DF0      RLF  STACK_0, 1 $017D $0DF1      RLF  STACK_0+1, 1 $017E  $1070      BCF  STACK_0, 0 $017F  $3FFF      ADDLW  255 $0180  $297A      GOTO  L_chipcard_read_48 $0181  $  L_chipcard_read_49: ;halo_card.c,168 ::     Lcd_kredit(temp_kredit); $0181  $0870      MOVF  STACK_0, 0 $0182  $1283      BCF  STATUS, RP0 $0183  $00DA     MOVWF  FARG_Lcd_kredit+0 $0184  $0871      MOVF  STACK_0+1, 0 $0185  $00DB      MOVWF  FARG_Lcd_kredit+1 $0186  $2309      CALL  _Lcd_kredit ;halo_card.c,169 ::     Lcd_Out_Cp("Dinara"); $0187  $30A0      MOVLW  lstr1_halo_card $0188  $00DA     MOVWF  FARG_LCD_Out_CP+0 

133

Page 135: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0189  $2675      CALL  _LCD_Out_CP ;halo_card.c,170 ::     nap=1; $018A  $1607      BSF  PORTC, 4 ;halo_card.c,171 ::     broj=1; $018B  $3001      MOVLW  1 $018C  $00AC      MOVWF  _broj ;halo_card.c,172 ::     clk=0; $018D $1008      BCF  PORTD, 0 ;halo_card.c,173 ::     res=0; $018E  $1088      BCF  PORTD, 1 ;halo_card.c,174 ::     } $018F  $  L_chipcard_read_20: ;halo_card.c,175 ::     } $018F  $29B5      GOTO  L_chipcard_read_33 $0190  $  L_chipcard_read_19: ;halo_card.c,179 ::     if((!det_jednom)&&(broj==1)) $0190  $0823      MOVF  _det_jednom, 0 $0191  $1D03      BTFSS  STATUS, Z $0192  $29B2      GOTO  L_chipcard_read_36 $0193  $082C      MOVF  _broj, 0 $0194  $3A01      XORLW  1 $0195  $1D03      BTFSS  STATUS, Z $0196  $29B2      GOTO  L_chipcard_read_36 $0197  $  L401_ex_L_chipcard_read_36: ;halo_card.c,181 ::     Lcd_Cmd(Lcd_CLEAR); $0197  $3001      MOVLW  1 $0198  $00E1      MOVWF  FARG_Lcd_Cmd+0 $0199  $2474      CALL  _Lcd_Cmd ;halo_card.c,182 ::     Lcd_Out(1,1,"Ubacite"); $019A  $3001      MOVLW  1 $019B  $00DA     MOVWF  FARG_LCD_Out+0 $019C  $3001      MOVLW  1 $019D $00DB      MOVWF  FARG_LCD_Out+1 $019E  $30A7      MOVLW  lstr2_halo_card $019F  $00DC      MOVWF  FARG_LCD_Out+2 $01A0  $24B2      CALL  _LCD_Out ;halo_card.c,183 ::     Lcd_Out(2,1,"Karticu"); $01A1  $3002      MOVLW  2 $01A2  $00DA     MOVWF  FARG_LCD_Out+0 $01A3  $3001      MOVLW  1 $01A4  $00DB      MOVWF  FARG_LCD_Out+1 $01A5  $30AF      MOVLW  lstr3_halo_card $01A6  $00DC      MOVWF  FARG_LCD_Out+2 $01A7  $24B2      CALL  _LCD_Out 

134

Page 136: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

;halo_card.c,184 ::     broj=broj+1; $01A8  $0A2C      INCF  _broj, 0 $01A9  $00F2      MOVWF  STACK_2 $01AA $0872      MOVF  STACK_2, 0 $01AB $00AC      MOVWF  _broj ;halo_card.c,185 ::     if(broj>2) broj=2; $01AC $0872      MOVF  STACK_2, 0 $01AD $3C02      SUBLW 2 $01AE  $1803      BTFSC  STATUS, C $01AF  $29B2      GOTO  L_chipcard_read_37 $01B0  $3002      MOVLW  2 $01B1  $00AC      MOVWF  _broj $01B2  $  L_chipcard_read_37: ;halo_card.c,186 ::     } $01B2  $  L_chipcard_read_36: ;halo_card.c,187 ::     det_jednom=1; $01B2  $3001      MOVLW  1 $01B3  $00A3      MOVWF  _det_jednom ;halo_card.c,188 ::     nap=1; $01B4  $1607      BSF  PORTC, 4 ;halo_card.c,189 ::     } $01B5  $  L_chipcard_read_33: ;halo_card.c,190 ::     } $01B5  $0008      RETURN $06B5  $  GlobalInihalo_card: $06B5  $3033      MOVLW  51 $06B6  $1303      BCF  STATUS, RP1 $06B7  $1283      BCF  STATUS, RP0 $06B8  $00A4      MOVWF  _eep_sifra_temp+0 $06B9  $3044      MOVLW  68 $06BA $00A5      MOVWF  _eep_sifra_temp+1 $06BB  $3021      MOVLW  33 $06BC  $00A6      MOVWF  _eep_sifra_temp+2 $06BD $3055      MOVLW  85 $06BE  $00A7      MOVWF  _eep_sifra_temp+3 $06BF  $0008      RETURN $03CE  $  _Lcd_Init: $03CE  $2689      CALL  _Delay_5500us $03CF  $2689      CALL  _Delay_5500us $03D0 $2689      CALL  _Delay_5500us $03D1 $0859      MOVF  FARG_Lcd_Init+0, 0 $03D2 $00A1      MOVWF  LCD_port_address $03D3 $0859      MOVF  FARG_Lcd_Init+0, 0 $03D4 $0084      MOVWF  FSR 

135

Page 137: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$03D5 $1784      BSF  FSR, 7 $03D6 $1180      BCF  INDF, ___ENABLE $03D7 $1100      BCF  INDF, ___RS $03D8 $1080      BCF  INDF, ___RW $03D9 $1380      BCF  INDF, ___DB7 $03DA $1300      BCF  INDF, ___DB6 $03DB $1280      BCF  INDF, ___DB5 $03DC $1200      BCF  INDF, ___DB4 $03DD $1384      BCF  FSR, 7 $03DE $1180      BCF  INDF, ___ENABLE $03DF  $1100      BCF  INDF, ___RS $03E0  $1080      BCF  INDF, ___RW $03E1  $1380      BCF  INDF, ___DB7 $03E2  $1300      BCF  INDF, ___DB6 $03E3  $1280      BCF  INDF, ___DB5 $03E4  $1200      BCF  INDF, ___DB4 $03E5  $1680      BSF  INDF, ___DB5 $03E6  $1600      BSF  INDF, ___DB4 $03E7  $1580      BSF  INDF, ___ENABLE $03E8  $1180      BCF  INDF, ___ENABLE $03E9  $2689      CALL  _Delay_5500us $03EA  $1580      BSF  INDF, ___ENABLE $03EB  $1180      BCF  INDF, ___ENABLE $03EC  $2689      CALL  _Delay_5500us $03ED $1580      BSF  INDF, ___ENABLE $03EE  $1180      BCF  INDF, ___ENABLE $03EF  $2689      CALL  _Delay_5500us $03F0  $1680      BSF  INDF, ___DB5 $03F1  $1200      BCF  INDF, ___DB4 $03F2  $1580      BSF  INDF, ___ENABLE $03F3  $1180      BCF  INDF, ___ENABLE $03F4  $2689      CALL  _Delay_5500us $03F5  $0180      CLRF  INDF $03F6  $1680      BSF  INDF, ___DB5 $03F7  $1580      BSF  INDF, ___ENABLE $03F8  $1180      BCF  INDF, ___ENABLE $03F9  $0180      CLRF  INDF $03FA  $1780      BSF  INDF, ___DB7 $03FB  $1580      BSF  INDF, ___ENABLE $03FC  $1180      BCF  INDF, ___ENABLE $03FD  $2689      CALL  _Delay_5500us $03FE  $0180      CLRF  INDF $03FF  $1600      BSF  INDF, ___DB4 $0400  $1580      BSF  INDF, ___ENABLE 

136

Page 138: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0401  $1180      BCF  INDF, ___ENABLE $0402  $0180      CLRF  INDF $0403  $1580      BSF  INDF, ___ENABLE $0404  $1180      BCF  INDF, ___ENABLE $0405  $2689      CALL  _Delay_5500us $0406  $0180      CLRF  INDF $0407  $1580      BSF  INDF, ___ENABLE $0408  $1180      BCF  INDF, ___ENABLE $0409  $1600      BSF  INDF, ___DB4 $040A  $1580      BSF  INDF, ___ENABLE $040B  $1180      BCF  INDF, ___ENABLE $040C  $2689      CALL  _Delay_5500us $040D $0180      CLRF  INDF $040E  $1580      BSF  INDF, ___ENABLE $040F  $1180      BCF  INDF, ___ENABLE $0410  $1600      BSF  INDF, ___DB4 $0411  $1680      BSF  INDF, ___DB5 $0412  $1700      BSF  INDF, ___DB6 $0413  $1780      BSF  INDF, ___DB7 $0414  $1580      BSF  INDF, ___ENABLE $0415  $1180      BCF  INDF, ___ENABLE $0416  $2689      CALL  _Delay_5500us $0417  $3001      MOVLW  1 $0418  $00A2      MOVWF  LCD_cmd_status $0419  $0008      RETURN $01B6  $  _main: $01B6  $26B5      CALL  GlobalInihalo_card $01B7  $3044      MOVLW  68 $01B8  $00B0      MOVWF  lstr4_halo_card+0 $01B9  $306F      MOVLW  111 $01BA $00B1      MOVWF  lstr4_halo_card+1 $01BB  $3062      MOVLW  98 $01BC  $00B2      MOVWF  lstr4_halo_card+2 $01BD $3072      MOVLW  114 $01BE  $00B3      MOVWF  lstr4_halo_card+3 $01BF  $306F      MOVLW  111 $01C0  $00B4      MOVWF  lstr4_halo_card+4 $01C1  $3064      MOVLW  100 $01C2  $00B5      MOVWF  lstr4_halo_card+5 $01C3  $306F      MOVLW  111 $01C4  $00B6      MOVWF  lstr4_halo_card+6 $01C5  $3073      MOVLW  115 $01C6  $00B7      MOVWF  lstr4_halo_card+7 $01C7  $306C      MOVLW  108 

137

Page 139: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$01C8  $00B8      MOVWF  lstr4_halo_card+8 $01C9  $3069      MOVLW  105 $01CA $00B9      MOVWF  lstr4_halo_card+9 $01CB  $01BA      CLRF  lstr4_halo_card+10 $01CC  $3050      MOVLW  80 $01CD $00BB      MOVWF  lstr5_halo_card+0 $01CE  $3052      MOVLW  82 $01CF  $00BC      MOVWF  lstr5_halo_card+1 $01D0 $304F      MOVLW  79 $01D1 $00BD      MOVWF  lstr5_halo_card+2 $01D2 $304A      MOVLW  74 $01D3 $00BE      MOVWF  lstr5_halo_card+3 $01D4 $3045      MOVLW  69 $01D5 $00BF      MOVWF  lstr5_halo_card+4 $01D6 $304B      MOVLW  75 $01D7 $00C0      MOVWF  lstr5_halo_card+5 $01D8 $3041      MOVLW  65 $01D9 $00C1      MOVWF  lstr5_halo_card+6 $01DA $3054      MOVLW  84 $01DB $00C2      MOVWF  lstr5_halo_card+7 $01DC $01C3      CLRF  lstr5_halo_card+8 $01DD $304D      MOVLW  77 $01DE $00C4      MOVWF  lstr6_halo_card+0 $01DF  $3049      MOVLW  73 $01E0  $00C5      MOVWF  lstr6_halo_card+1 $01E1  $3050      MOVLW  80 $01E2  $00C6      MOVWF  lstr6_halo_card+2 $01E3  $3053      MOVLW  83 $01E4  $00C7      MOVWF  lstr6_halo_card+3 $01E5  $01C8      CLRF  lstr6_halo_card+4 $01E6  $3055      MOVLW  85 $01E7  $00C9      MOVWF  lstr7_halo_card+0 $01E8  $3062      MOVLW  98 $01E9  $00CA      MOVWF  lstr7_halo_card+1 $01EA  $3061      MOVLW  97 $01EB  $00CB      MOVWF  lstr7_halo_card+2 $01EC  $3063      MOVLW  99 $01ED $00CC      MOVWF  lstr7_halo_card+3 $01EE  $3069      MOVLW  105 $01EF  $00CD      MOVWF  lstr7_halo_card+4 $01F0  $3074      MOVLW  116 $01F1  $00CE      MOVWF  lstr7_halo_card+5 $01F2  $3065      MOVLW  101 $01F3  $00CF      MOVWF  lstr7_halo_card+6 

138

Page 140: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$01F4  $01D0      CLRF  lstr7_halo_card+7 $01F5  $304B      MOVLW  75 $01F6  $00D1      MOVWF  lstr8_halo_card+0 $01F7  $3061      MOVLW  97 $01F8  $00D2      MOVWF  lstr8_halo_card+1 $01F9  $3072      MOVLW  114 $01FA  $00D3      MOVWF  lstr8_halo_card+2 $01FB  $3074      MOVLW  116 $01FC  $00D4      MOVWF  lstr8_halo_card+3 $01FD  $3069      MOVLW  105 $01FE  $00D5      MOVWF  lstr8_halo_card+4 $01FF  $3063      MOVLW  99 $0200  $00D6      MOVWF  lstr8_halo_card+5 $0201  $3075      MOVLW  117 $0202  $00D7      MOVWF  lstr8_halo_card+6 $0203  $01D8      CLRF  lstr8_halo_card+7 ;halo_card.c,192 ::     void main(void) ;halo_card.c,194 ::     INTCON.GIE=0; $0204  $138B      BCF  INTCON, 7 ;halo_card.c,195 ::     OPTION_REG=0x00; $0205  $1683      BSF  STATUS, RP0 $0206  $0181      CLRF  OPTION_REG, 1 ;halo_card.c,196 ::     INTCON.T0IE=1; $0207  $168B      BSF  INTCON, 5 ;halo_card.c,197 ::     TRISA=0x00; $0208  $0185      CLRF  TRISA, 1 ;halo_card.c,198 ::     PORTA=0X00; $0209  $1283      BCF  STATUS, RP0 $020A  $0185      CLRF  PORTA, 1 ;halo_card.c,199 ::     TRISB=0x00; $020B  $1683      BSF  STATUS, RP0 $020C  $0186      CLRF  TRISB, 1 ;halo_card.c,200 ::     PORTB=0x00; $020D $1283      BCF  STATUS, RP0 $020E  $0186      CLRF  PORTB, 1 ;halo_card.c,201 ::     TRISC=0x00; $020F  $1683      BSF  STATUS, RP0 $0210  $0187      CLRF  TRISC, 1 ;halo_card.c,202 ::     PORTC=0x00; $0211  $1283      BCF  STATUS, RP0 $0212  $0187      CLRF  PORTC, 1 ;halo_card.c,203 ::     TRISD=0xFC; $0213  $30FC      MOVLW  252 $0214  $1683      BSF  STATUS, RP0 

139

Page 141: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0215  $0088      MOVWF  TRISD ;halo_card.c,204 ::     PORTD=0x00; $0216  $1283      BCF  STATUS, RP0 $0217  $0188      CLRF  PORTD, 1 ;halo_card.c,205 ::     det_jednom=1; $0218  $3001      MOVLW  1 $0219  $00A3      MOVWF  _det_jednom ;halo_card.c,206 ::     Lcd_Config(&PORTB,2,3,1,7,6,5,4);        //rs,en,wr,d7,d6,d5,d4 $021A  $3006      MOVLW  PORTB $021B  $00D9      MOVWF  FARG_Lcd_Init+0 $021C  $23CE      CALL  _Lcd_Init ;halo_card.c,207 ::     Lcd_Cmd(Lcd_CLEAR); $021D $3001      MOVLW  1 $021E  $00E1      MOVWF  FARG_Lcd_Cmd+0 $021F  $2474      CALL  _Lcd_Cmd ;halo_card.c,208 ::     Lcd_Cmd(Lcd_CURSOR_OFF); $0220  $300C      MOVLW  12 $0221  $00E1      MOVWF  FARG_Lcd_Cmd+0 $0222  $2474      CALL  _Lcd_Cmd ;halo_card.c,209 ::     broj=1; $0223  $3001      MOVLW  1 $0224  $00AC      MOVWF  _broj ;halo_card.c,210 ::     clk=0; $0225  $1008      BCF  PORTD, 0 ;halo_card.c,211 ::     res=0; $0226  $1088      BCF  PORTD, 1 ;halo_card.c,212 ::     nap=1;              //iskljucujemo napajanje $0227  $1607      BSF  PORTC, 4 ;halo_card.c,213 ::     Lcd_Out(1,1,"Dobrodosli"); $0228  $3001      MOVLW  1 $0229  $00DA     MOVWF  FARG_LCD_Out+0 $022A  $3001      MOVLW  1 $022B  $00DB      MOVWF  FARG_LCD_Out+1 $022C  $3030      MOVLW  lstr4_halo_card $022D $00DC      MOVWF  FARG_LCD_Out+2 $022E  $24B2      CALL  _LCD_Out ;halo_card.c,214 ::     Delay_ms(500); $022F  $3006      MOVLW  6 $0230  $00FC      MOVWF  STACK_12 $0231  $30FF      MOVLW  255 $0232  $00FB      MOVWF  STACK_11 $0233  $30FF      MOVLW  255 $0234  $00FA      MOVWF  STACK_10 

140

Page 142: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0235  $0BFC      DECFSZ  STACK_12, F $0236  $2A38      GOTO  $+2 $0237  $2A3F      GOTO  $+8 $0238  $0BFB      DECFSZ  STACK_11, F $0239  $2A3B      GOTO  $+2 $023A  $2A3E      GOTO  $+4 $023B  $0BFA      DECFSZ  STACK_10, F $023C  $2A3B      GOTO  $‐1 $023D $2A38      GOTO  $‐5 $023E  $2A35      GOTO  $‐9 $023F  $301A      MOVLW  26 $0240  $00FB      MOVWF  STACK_11 $0241  $30FF      MOVLW  255 $0242  $00FA      MOVWF  STACK_10 $0243  $0BFB      DECFSZ  STACK_11, F $0244  $2A46      GOTO  $+2 $0245  $2A49      GOTO  $+4 $0246  $0BFA      DECFSZ  STACK_10, F $0247  $2A46      GOTO  $‐1 $0248  $2A43      GOTO  $‐5 $0249  $3042      MOVLW  66 $024A  $00FA      MOVWF  STACK_10 $024B  $0BFA      DECFSZ  STACK_10, F $024C  $2A4B      GOTO  $‐1 ;halo_card.c,215 ::     Delay_ms(500); $024D $3006      MOVLW  6 $024E  $00FC      MOVWF  STACK_12 $024F  $30FF      MOVLW  255 $0250  $00FB      MOVWF  STACK_11 $0251  $30FF      MOVLW  255 $0252  $00FA      MOVWF  STACK_10 $0253  $0BFC      DECFSZ  STACK_12, F $0254  $2A56      GOTO  $+2 $0255  $2A5D     GOTO  $+8 $0256  $0BFB      DECFSZ  STACK_11, F $0257  $2A59      GOTO  $+2 $0258  $2A5C      GOTO  $+4 $0259  $0BFA      DECFSZ  STACK_10, F $025A  $2A59      GOTO  $‐1 $025B  $2A56      GOTO  $‐5 $025C  $2A53      GOTO  $‐9 $025D $301A      MOVLW  26 $025E  $00FB      MOVWF  STACK_11 $025F  $30FF      MOVLW  255 

141

Page 143: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0260  $00FA      MOVWF  STACK_10 $0261  $0BFB      DECFSZ  STACK_11, F $0262  $2A64      GOTO  $+2 $0263  $2A67      GOTO  $+4 $0264  $0BFA      DECFSZ  STACK_10, F $0265  $2A64      GOTO  $‐1 $0266  $2A61      GOTO  $‐5 $0267  $3042      MOVLW  66 $0268  $00FA      MOVWF  STACK_10 $0269  $0BFA      DECFSZ  STACK_10, F $026A  $2A69      GOTO  $‐1 ;halo_card.c,216 ::     Delay_ms(500); $026B  $3006      MOVLW  6 $026C  $00FC      MOVWF  STACK_12 $026D $30FF      MOVLW  255 $026E  $00FB      MOVWF  STACK_11 $026F  $30FF      MOVLW  255 $0270  $00FA      MOVWF  STACK_10 $0271  $0BFC      DECFSZ  STACK_12, F $0272  $2A74      GOTO  $+2 $0273  $2A7B      GOTO  $+8 $0274  $0BFB      DECFSZ  STACK_11, F $0275  $2A77      GOTO  $+2 $0276  $2A7A      GOTO  $+4 $0277  $0BFA      DECFSZ  STACK_10, F $0278  $2A77      GOTO  $‐1 $0279  $2A74      GOTO  $‐5 $027A  $2A71      GOTO  $‐9 $027B  $301A      MOVLW  26 $027C  $00FB      MOVWF  STACK_11 $027D $30FF      MOVLW  255 $027E  $00FA      MOVWF  STACK_10 $027F  $0BFB      DECFSZ  STACK_11, F $0280  $2A82      GOTO  $+2 $0281  $2A85      GOTO  $+4 $0282  $0BFA      DECFSZ  STACK_10, F $0283  $2A82      GOTO  $‐1 $0284  $2A7F      GOTO  $‐5 $0285  $3042      MOVLW  66 $0286  $00FA      MOVWF  STACK_10 $0287  $0BFA      DECFSZ  STACK_10, F $0288  $2A87      GOTO  $‐1 ;halo_card.c,217 ::     Lcd_Cmd(Lcd_CLEAR); $0289  $3001      MOVLW  1 

142

Page 144: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$028A  $00E1      MOVWF  FARG_Lcd_Cmd+0 $028B  $2474      CALL  _Lcd_Cmd ;halo_card.c,218 ::     Lcd_Out(1,1,"PROJEKAT"); $028C  $3001      MOVLW  1 $028D $00DA     MOVWF  FARG_LCD_Out+0 $028E  $3001      MOVLW  1 $028F  $00DB      MOVWF  FARG_LCD_Out+1 $0290  $303B      MOVLW  lstr5_halo_card $0291  $00DC      MOVWF  FARG_LCD_Out+2 $0292  $24B2      CALL  _LCD_Out ;halo_card.c,219 ::     Lcd_Out(2,1,"MIPS"); $0293  $3002      MOVLW  2 $0294  $00DA     MOVWF  FARG_LCD_Out+0 $0295  $3001      MOVLW  1 $0296  $00DB      MOVWF  FARG_LCD_Out+1 $0297  $3044      MOVLW  lstr6_halo_card $0298  $00DC      MOVWF  FARG_LCD_Out+2 $0299  $24B2      CALL  _LCD_Out ;halo_card.c,220 ::     Delay_ms(500); $029A  $3006      MOVLW  6 $029B  $00FC      MOVWF  STACK_12 $029C  $30FF      MOVLW  255 $029D $00FB      MOVWF  STACK_11 $029E  $30FF      MOVLW  255 $029F  $00FA      MOVWF  STACK_10 $02A0  $0BFC      DECFSZ  STACK_12, F $02A1  $2AA3      GOTO  $+2 $02A2  $2AAA     GOTO  $+8 $02A3  $0BFB      DECFSZ  STACK_11, F $02A4  $2AA6      GOTO  $+2 $02A5  $2AA9      GOTO  $+4 $02A6  $0BFA      DECFSZ  STACK_10, F $02A7  $2AA6      GOTO  $‐1 $02A8  $2AA3      GOTO  $‐5 $02A9  $2AA0      GOTO  $‐9 $02AA $301A      MOVLW  26 $02AB $00FB      MOVWF  STACK_11 $02AC $30FF      MOVLW  255 $02AD $00FA      MOVWF  STACK_10 $02AE  $0BFB      DECFSZ  STACK_11, F $02AF  $2AB1      GOTO  $+2 $02B0  $2AB4      GOTO  $+4 $02B1  $0BFA      DECFSZ  STACK_10, F $02B2  $2AB1      GOTO  $‐1 

143

Page 145: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$02B3  $2AAE      GOTO  $‐5 $02B4  $3042      MOVLW  66 $02B5  $00FA      MOVWF  STACK_10 $02B6  $0BFA      DECFSZ  STACK_10, F $02B7  $2AB6      GOTO  $‐1 ;halo_card.c,221 ::     Delay_ms(500); $02B8  $3006      MOVLW  6 $02B9  $00FC      MOVWF  STACK_12 $02BA $30FF      MOVLW  255 $02BB  $00FB      MOVWF  STACK_11 $02BC  $30FF      MOVLW  255 $02BD $00FA      MOVWF  STACK_10 $02BE  $0BFC      DECFSZ  STACK_12, F $02BF  $2AC1      GOTO  $+2 $02C0  $2AC8      GOTO  $+8 $02C1  $0BFB      DECFSZ  STACK_11, F $02C2  $2AC4      GOTO  $+2 $02C3  $2AC7      GOTO  $+4 $02C4  $0BFA      DECFSZ  STACK_10, F $02C5  $2AC4      GOTO  $‐1 $02C6  $2AC1      GOTO  $‐5 $02C7  $2ABE      GOTO  $‐9 $02C8  $301A      MOVLW  26 $02C9  $00FB      MOVWF  STACK_11 $02CA $30FF      MOVLW  255 $02CB  $00FA      MOVWF  STACK_10 $02CC  $0BFB      DECFSZ  STACK_11, F $02CD $2ACF      GOTO  $+2 $02CE  $2AD2     GOTO  $+4 $02CF  $0BFA      DECFSZ  STACK_10, F $02D0 $2ACF      GOTO  $‐1 $02D1 $2ACC      GOTO  $‐5 $02D2 $3042      MOVLW  66 $02D3 $00FA      MOVWF  STACK_10 $02D4 $0BFA      DECFSZ  STACK_10, F $02D5 $2AD4     GOTO  $‐1 ;halo_card.c,222 ::     Delay_ms(500); $02D6 $3006      MOVLW  6 $02D7 $00FC      MOVWF  STACK_12 $02D8 $30FF      MOVLW  255 $02D9 $00FB      MOVWF  STACK_11 $02DA $30FF      MOVLW  255 $02DB $00FA      MOVWF  STACK_10 $02DC $0BFC      DECFSZ  STACK_12, F 

144

Page 146: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$02DD $2ADF      GOTO  $+2 $02DE $2AE6      GOTO  $+8 $02DF  $0BFB      DECFSZ  STACK_11, F $02E0  $2AE2      GOTO  $+2 $02E1  $2AE5      GOTO  $+4 $02E2  $0BFA      DECFSZ  STACK_10, F $02E3  $2AE2      GOTO  $‐1 $02E4  $2ADF      GOTO  $‐5 $02E5  $2ADC     GOTO  $‐9 $02E6  $301A      MOVLW  26 $02E7  $00FB      MOVWF  STACK_11 $02E8  $30FF      MOVLW  255 $02E9  $00FA      MOVWF  STACK_10 $02EA  $0BFB      DECFSZ  STACK_11, F $02EB  $2AED      GOTO  $+2 $02EC  $2AF0      GOTO  $+4 $02ED $0BFA      DECFSZ  STACK_10, F $02EE  $2AED      GOTO  $‐1 $02EF  $2AEA      GOTO  $‐5 $02F0  $3042      MOVLW  66 $02F1  $00FA      MOVWF  STACK_10 $02F2  $0BFA      DECFSZ  STACK_10, F $02F3  $2AF2      GOTO  $‐1 ;halo_card.c,223 ::     Lcd_Cmd(Lcd_CLEAR); $02F4  $3001      MOVLW  1 $02F5  $00E1      MOVWF  FARG_Lcd_Cmd+0 $02F6  $2474      CALL  _Lcd_Cmd ;halo_card.c,224 ::     Lcd_Out(1,1,"Ubacite"); $02F7  $3001      MOVLW  1 $02F8  $00DA     MOVWF  FARG_LCD_Out+0 $02F9  $3001      MOVLW  1 $02FA  $00DB      MOVWF  FARG_LCD_Out+1 $02FB  $3049      MOVLW  lstr7_halo_card $02FC  $00DC      MOVWF  FARG_LCD_Out+2 $02FD  $24B2      CALL  _LCD_Out ;halo_card.c,225 ::     Lcd_Out(2,1,"Karticu"); $02FE  $3002      MOVLW  2 $02FF  $00DA     MOVWF  FARG_LCD_Out+0 $0300  $3001      MOVLW  1 $0301  $00DB      MOVWF  FARG_LCD_Out+1 $0302  $3051      MOVLW  lstr8_halo_card $0303  $00DC      MOVWF  FARG_LCD_Out+2 $0304  $24B2      CALL  _LCD_Out ;halo_card.c,228 ::     INTCON.GIE=1; 

145

Page 147: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

$0305  $178B      BSF  INTCON, 7 ;halo_card.c,231 ::     while(1) $0306  $  L_main_38: ;halo_card.c,234 ::     chipcard_read(); $0306  $202D      CALL  _chipcard_read ;halo_card.c,235 ::     } $0307  $2B06      GOTO  L_main_38 ;halo_card.c,237 ::     } $0308  $2B08      GOTO  $                                 

146

Page 148: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

8. ZAKLJUCAK

Prilikom realizacije sistema upoznali smo sa detaljima iščitavanja smart kartica, kao i sa prakticnim radom pri realizacije iste. Uvideli smo svu slozenost smart kartica, a pritom i prednosti i mogucnosti koja ona donosi. O ovome je bilo reci u predhodnom tekstu. Ovaj rad moze posluziti studentima da izuce smart kartice i da se na prakticnom primeru upoznaju sa njima. To je i ujedno i bio cilj ovog projekta. Zahvaljujem se Prof. Dr Miletu Stojcevu sto mi je izasao u susret i omogucio da radom na ovom projektu prosirim svoje znanje.

147

Page 149: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

9. LITERATURA

PIC mikrokontroleri-Nebojsa Matic PC interfejsi–Vojo Milanovic Programiranje mikrokontrolera PicBASIC-om-Vojo Milanovic www.microchip.comwww.mikroelektronika.co.yu   

148

Page 150: ČITAČ HALO KARTICAes.elfak.ni.ac.rs/Papers/Miljan Ilic - Projekat - Citac...1. UVOD Smart kartica je plastična kartica, koja po izgledu podseća na običnu kreditinu ili debitnu

 

10. BIOGRAFIJA AUTORA

Ime i prezime: Miljan Ilic

Datum i mesto rođenja: 31.12.1982. Vranje

Adresa stanovanja: Vladičin han, s. Suva morava

Obrazovanje: Gimnazija - matematički smerVladičin Han

Godina upisa fakulteta: 2002.

Smer: Elektronika

Poznavanje jezika: Engleski

Poznavanje softvera i programskih jezika:

MSOffice, Photoshop

Interesovanja: Satelitski sistemi i televizija

149