Top Banner
Elektronski fakultet u Nišu Katedra za elektroniku Predmet: Mikroprocesorski sistemi prof. dr Mile Stojčev SIMULACIJA PIC MIKROKONTROLERA PREKO SOFTVERA PIC SIMULATOR IDE Student: Ranko Prokopović 10609
102

PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

Feb 05, 2018

Download

Documents

buicong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

Elektronski fakultet u Nišu Katedra za elektroniku Predmet: Mikroprocesorski sistemi prof. dr Mile Stojčev

SIMULACIJA PIC MIKROKONTROLERA PREKO SOFTVERA PIC SIMULATOR IDE

Student: Ranko Prokopović 10609

Page 2: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

2

SADRŽAJ

1. Uvod.........................................................................................3 2. Opis mikrokontrolera PIC16F877.............................................4 3. Asembler za PIC mikrokontrolere...........................................13 4. PIC simulator IDE...................................................................30 5. Primeri....................................................................................46 6. Laboratorijske vežbe..............................................................99 7. Zaključak...............................................................................100 8. Literatura...............................................................................101 9. CV.........................................................................................102

Page 3: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

3

1. Uvod

Misao vodilja autora ovog seminarskog rada bila je da studentima približi program PIC Simulator IDE, koji je razvio Vladimir Šošo iz Zemuna. U pitanju je simulator velikog broja mikrokontrolera 12F i 16F serija. Detaljnije informacije o pomenutom programu su dostupne na sajtu http://www.oshonsoft.com/pic.html, a koriste ga brojni renomirani koledži i fakulteti. U radu je dat kratak opis mikrokontrolera PIC16F877, pregled menija PIC Simulator IDE, napisano je 8 primera u asembleru, urađena su 3 jednostavna i 3 naprednija primera kao i 4 dopunska primera. Na kraju su u Laboratorijskoj vežbi dati zadaci za samostalan rad studenata – tačnije, omogućeno je da studenti samostalno isprogramiraju neke jednostavne aplikacije. Nadam se da će naredni opis programa PIC Simulator IDE naići na dobar prijem kod studenata i da će ih zaintrigirati da koriste PIC mikrokontrolere.

Page 4: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

4

2. OPIS MIKROKONTROLERA PIC16F877 2.1. OSNOVNE KARAKTERISTIKE MIKROKONTROLERA

PIC16F877 je Microchip-ov 8-bitni CMOS mikrokontroler baziran na flash tehnologiji.To znači da u samom čipu postoji programska memorija koja se upisuje i briše električnim putem, što je daleko naprednije od brisanja EPROM-a UV zracima.

RISC arhitektura omogućuje odvojene magistrale 8-bitnih podataka i 14-bitne programske memorije, pa je moguće da se pribavlja naredna instrukcija dok se izvršava tekuća (eng. pipelining). Sve instrukcije traju jednako (osim u slučaju grananja programa) i završe se za četiri ciklusa oscilatora. Dakle, ako je oscilator konfigurisan na 4 MHz, dobija se da ciklus instrukcije iznosi 1 µs.

Jezgro mikrokontrolera PIC16F877 proizvodi se u 40-pinskom (DIP) ili u 44-pinskim kućištima (QFP i PLCC), Slika 2-1.

Slika 2-1. Kućišta u koja se «pakuje» PIC16F877 (a. DIP-40, b.PLC-44, c.TQFP-44)

Sa blok dijagrama kojeg daje Microchip (Slika 2-2) može se ustanoviti da se

koncepcija ovog mikrokontrolera ne razlikuje mnogo od koncepcije RISC mikrokontrolera drugih proizvođača prisutnih na tržištu. Uočavaju se standardne komponente:

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

Page 5: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

5

PIC16F877 podržava tehniku prekida (eng. interrupts). Postoji ukupno 14 izvora prekida, što spoljašnjih, što unutrašnjih. Svaki prekid nema sopstveni interapt-vektor, već postoji jedinstvena adresa (0x0004) od koje se nastavlja izvršavanje programa kada se dogodi bilo koji od njih. Tada je na programeru da prozivanjem zastavica/markera pojedinih prekida (eng. interrupt flags polling) ustanovi ko traži prekid i uputi program na izvršavanje odgovarajuće rutine za obradu. Adresa na koju se program treba vratiti po obradi prekida čuva se automatski u hardverskom magacinu i u programski brojač vraća izvršavanjem instrukcije RETFIE.

Slika 2-2. Arhitektura mikrokontrolera

Ono što mikrokontrolere izdvaja od ostalih procesora jeste prisustvo raznih

specijalnih kola koja se trebaju izboriti sa potrebama real-time aplikacija. Ovaj mikrokontroler poseduje niz osobina potrebnih da se maksimizuje pouzdanost sistema, minimizuje cena kroz eliminaciju eksternih komponenti, omoguće režimi niske potrošnje energije, pružanje zaštite programskog kôda. Upotreba navedenih resursa definiše se u programatorskom softveru upisom odgovarajuće konfiguracione reči u registar CONFIG. Taj registar je dostupan samo u toku upisa programa u mikrokontroler i drugačije se ne može adresirati.

Među ponuđenim karakteristikama postoji mogućnost izbora četiri tipa oscilatora, mogućnost upotrebe Power-up (PWRT) i Oscilator Start-up (OST) tajmera, te eventualno korišćenje Power-on (POR) i/ili Brown-out (BOR) reseta. Povećanju

Page 6: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

6

pouzdanosti kroz sprečavanje zalaska programa u mrtve petlje pomaže upotreba Watchdog tajmera (WDT). Zaštitu kôda od neželjenog čitanja pruža opcija code protection.

Za uređaje sa baterijskim napajanjem interesantna mogućnost je Sleep Mode, režim sa smanjenom potrošnjom energije, kada se program ne izvršava, ali rade neke periferne jedinice koje mogu “probuditi” mikrokontroler. Tada je potrošnja mikrokontrolera ispod 1 µA.

Slika 2-3. Mapa programske memorije

Napajanje se dovodi na pinove VDD, a masa na pinove VSS. Nožice OSC1 i

OSC2 služe za priključenje oscilatorskih komponenti (RC-kolo ili rezonator), odnosno priključenje eksternog oscilatora kao bolje, ali skuplje varijante. Osim za reset-kolo pin 1 (MCLR/VPP) ima ulogu u toku procesa programiranja mikrokontrolera. Ostalih 33 pina predstavljaju I/O linije. Oni su grupisani u pet portova (PORT A, B, C, D i E) i svaki od njih je individualno konfigurabilan kao izlazni ili kao ulazni. Osim opšte namene, većina pinova ima i specifičnu svrhu koja se programski dodeljuje u slučaju korišćenja nekih specijalnih periferija mikrokontrolera (brojača, serijske komunikacije, A/D konvertora i dr.)

Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri dominantni u odnosu na konkurentne relativno visokom strujom koju može propustiti I/O pin (25 mA). Takođe, ova familija mikrokontrolera poseduje veoma širok opseg napona napajanja koji se proteže od 2,0 V do 5,5 V.

Page 7: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

7

2.2. MEMORIJSKA MAPA MIKROKONTROLERA Strukturu memorije kod PICmicro™ mikrokontrolera čine tri odvojena bloka:

• Programska memorija • Memorija podataka • EEPROM memorija podataka.

Odvojeno od navedenih memorijskih blokova egzistira zasebna struktura magacin (stack), koja se sastoji od osam 13-bitnih registara. Stek pointer se ne može čitati i upisivati. Prilikom izvršenja instrukcije CALL ili prilikom poziva prekida mikrokontrolera, adresa sledeće instrukcije se stavlja na magacin. Ponovno vraćanje starog sadržaja programskog brojača izaziva izvršenje instrukcije RETURN, RETFIE ili RETLW. Magacin radi na principu cirkularnog bafera, što znači da se u njega može staviti osam različitih adresa, a da pokušaj unošenja devete izaziva brisanje prve i tako redom. Programski se ne može utvrditi da li je došlo do prepunjavanja magacina. Organizacija programske memorije

PIC16F877 mikrokontroleri imaju 13-bitni programski brojač (PC) koji može da adresira memorijski prostor od 8k programskih reči od 14 bita. Reset vektor je 0x0000 i od njega počinje izvršavanje programa. Interapt vektor je 0x0004. Mapa programske memorije i magacin prikazani su dijagramom na Slici 2-3.

Organizacija memorije podataka

Memorija za podatke je izdeljena u više celina banki (eng. banks), a sastoji se od registara opšte 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 služe za odabir željene banke podataka po principu:

Svaka banka može da sadrži do 128 registara (0x7F). Niže lokacije u banci

zauzimaju specijalni registri, a ostatak prostora popunjavaju registri opšte namene implementirani kao statički RAM. Neki specijalni registri koji se često koriste mapirani su u sve banke da bi se omogućio brži pristup i redukcija kôda.

Mapa registara procesora PIC16F877A prikazana je na Slici 2-4. Nekoliko specijalnih registara su registri jezgra, usko povezani sa funkcionisanjem CPU. Ostali registri su vezani za periferne module i služe njihovom upravljanju i kontroli statusa.

Sledi opis nekoliko najvažnijih i najčešće korišćenih registara jezgra: - Programski brojač (PC) određuje adresu instrukcije u programskom flešu koja će

sledeća biti pribavljena. Reč je o 13-bitnom registru. Simboličko ime nižeg bajta je PCL. To je registar koji se može i upisivati i iščitavati. Težih pet bita programskog brojača smešteni su u izolovani registar PCH kojem se pristupa samo preko leča PCLATH mapiranom u internom RAM-u na adresi 0x0A.

- STATUS registar je veoma bitan i zato je predviđeno da se može adresirati iz bilo koje banke. On pokazuje status aritmetičko-logičke jedinice, reset status mikrokontrolera i

Page 8: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

8

Slika 2-4. Registarska mapa mikrokontrolera

sadrži bite za selekciju banki internog RAM-a. Od navedenih flegova posebno treba izdvojiti Zero bit (Z) koji se postavlja kad je rezultat aritmetičke operacije jednak nuli i bit prenosa (eng. Carry - C).

- Registar OPTION_REG se koristi za konfiguraciju preskalera za tajmer 0 ili Watchdog, za upravljanje tajmerom 0, selekciju ivice okidanja eksternog interapta, te za omogućenje Pull-up otpornika na portu B.

- INTCON je registar za manipulisanje sistemom prekida mikrokontrolera. Pored bita za omogućenje svih prekida (GIE) i bita za omogućenje perifernih prekida (PEIE), u ovom registru su interapt-flegovi i biti omogućenja prekida tajmera 0, spoljašnjeg prekida na pinu RB0/INT i prekida porta B na promenu stanja. Osim ova tri osnovna prekida postoji još 11 periferijskih prekida. Bitovi za njihovo omogućenje nalaze se u registrima PIE1 i PIE2, a korespondentni flegovi, vesnici interapta, u registrima PIR1 i PIR2. Ovi se flegovi setuju čim se ispuni uslov interapta bez obzira na stanje njihovog bita omogućenja, a po izvršenju servis rutine potrebno ih je softverski resetovati.

- Kada je reč o registrima jezgra ne treba zaboraviti par FSR (File Select Register) i INDF (Indirect File), koji služe za indirektno adresiranje memorije podataka. Bilo koja instrukcija koja se obraća INDF registru, u stvari, indirektno pristupa onoj lokaciji internog RAM-a čija je adresa trenutno u registru FSR.

- Konačno, treba spomenuti registar PCON (Power Control Register). U PIC16F877 ovaj registar sadrži samo dva bita. Pomoću bita POR detektuje se razlika između Power-on reseta i reseta izazvanih drugim uzrokom. Drugi bit (BOR) služi kao indikacija

Page 9: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

9

Brown-out stanja (nedozvoljeni naponski nivoi u napajanju mikrokontrolera), zbog kojeg se takođe može desiti reset. Interni EEPROM za podatke

Ova memorija sadrži 256 bajtova. Ukoliko je potrebno neke podatke sačuvati i po ukidanju napajanja mikrokontrolera, treba ih prethodno zapisati u interni EEPROM. 2.3. OPIS PERIFERNIH JEDINICA I/O portovi

Za vezu mikrokontrolera sa svetom oko sebe zaduženi su ulazno/izlazni portovi. Ima ih pet i označeni su slovima od A do E. Nejednake su širine, pa tako port E čine samo tri pina, port A šest, a ostala tri porta su osmopinski.

Neki pinovi I/O porta su povezani sa nekom perifernom funkcijom mikrokontrolera. Jedino ako je odgovarajuća periferna jedinica neupotrebljena, moguće je njen pin koristiti kao I/O liniju opšte namene. Konfiguracija smera portova vrši se upisom konfiguracionog bajta u pripadajući TRIS registar po pravilu da nula čini pin izlaznim, a jedinica ulaznim.

Svaki port poseduje odgovarajući registar (PORTX) preko kojeg se programski pristupa I/O pinovima. Upis u neki od tih registara iniciraće upis u leč tog porta, a njegovo čitanje rezultiraće čitanjem logičkih stanja direktno sa pinova. Sve instrukcije upisivanja su tzv. read-modify-write instrukcije. To znači da se pri upisu u port prvo očitaju stanja pinova, izvrši modifikacija, a potom ispravljena vrednost smesti u leč porta.

Nema velike razlike u električnoj konstrukciji navedenih pet portova. Port B se od ostalih razlikuje interesantnom opcijom koju nude četiri njegova viša bita. Ukoliko se setuje bit RBIE u registru INTCON, svaka promena stanja na ovim pinovima izazvaće prekid mikrokontrolera.

Port A

PortA je 6-bitni (RA5 – RA0) bidirekcioni port (podaci mogu da se šalju u oba smera).

Sadržaj registra TRISA određuje smer pinova na portu, da li je pin ulazni ili izlazni. PortA ima mogućnost analogno-digitalne konverzije i prvenstveno se koristi u te svrhe. U mikrokontroleru je integrisan 10-bitni A/D konvertor sa 8 ulaznih kanala ali se u ove svrhe koriste i svi pinovi porta E kao i pinovi porta A sem pina RA4. Pin RA4 je sa otvorenim drejnom i može da se koristi za ulazni takt tajmera TIMER0.

RA0/AN0 I/O (ulaz/izlaz) ili analogni ulaz RA1/AN1 I/O (ulaz/izlaz) ili analogni ulaz RA2/AN2 I/O (ulaz/izlaz) ili analogni ulaz RA3/AN3/Vref I/O (ulaz/izlaz) ili analogni ulaz ili referentni napon Vref RA4/T0CKI I/O (ulaz/izlaz) ili eksterni ulazni takt za tajmer TIMER0 RA5/AN4/SS I/O (ulaz/izlaz) ili analogni ulaz ili SS (Slave Select) ulaz za sinhroni serijski port

Page 10: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

10

Port B Port B je 8-bitni bidirekcioni port. Svakom pinu porta korespondira odgovarajući bit u registru TRISB kojim se definiše smer (ulaz ili izlaz). Svi pinovi ovog porta poseduju pull−up otpornike. Ovi otpornici mogu da se uključe jednim kontrolnim bitom. To se postiže postavljanjem odgovarajućeg bita na '0'. Pull-up otpornici se automatski isključuju kada se pin definiše kao izlazni. Otpornoci su isključeni i kod Power-on reseta. Četiri pina ovog porta (RB7 do RB4) imaju mogućnost generisanja prekida. Jedino pinovi definisani kao ulazni imaju mogućnost uzrokovanja prekida. RB0/INT I/O (ulaz/izlaz) ili eksterni ulaz prekida (interupt) RB1 I/O (ulaz/izlaz) RB2 I/O (ulaz/izlaz) RB3/PGM I/O (ulaz/izlaz) ili LVP (Low Voltage Programming) pin za programiranje RB4 I/O (ulaz/izlaz) sa opcijom interrupt-on-change RB5 I/O (ulaz/izlaz) sa opcijom interrupt-on-change RB6/PGC I/O (ulaz/izlaz) sa opcijom interrupt-on-change ili In-Circuit debager pin. Takt za serijsko

programiranje RB7/PGD I/O (ulaz/izlaz) sa opcijom interrupt-on-change ili In-Circuit debager pin. Podaci za serijsko

programiranje Port C Port C je 8-bitni bidirekcioni port. Ovaj port je poseban po tome što ima ugrađen USART modul koji služi za serijsku komunikaciju (sa računarom ili drugim mikrokontro-lerom). Modulu USART se pristupa preko pinova RC7 i RC6. Ove pinove treba softverski konfigurisati da budu u funkciji USART modula. RC0/T1OSO/T1CKI I/O (ulaz/izlaz) ili izlaz oscilatora za TIMER1 ili ulaz takta za TIMER1 RC1/T1OSI/CCP2 I/O (ulaz/izlaz) ili ulaz oscilatora za TIMER1 ili ulaz Capture2/izlaz Compare2/izlaz

PWM2 (Pulse With Modulation) RC2/CCP1 I/O (ulaz/izlaz) ili ulaz Capture1/izlaz Compare1/izlaz PWM1 RC3/SCK/SCL ovaj pin može da služi za sinhroni serijski takt režima rada SPI (Serial Peripheral

Interface) kao i I2C (Inter-Integrated Circuit) RC4/SDI/SDA ovaj pin može da služi kao pin podataka za SPI i I2C modove RC5/SDO I/O (ulaz/izlaz) ili serijski sinhroni izlaz podataka RC6/TX/CK I/O (ulaz/izlaz) ili USART asinhroni transmiter ili sinhroni takt RC7/RX/DT I/O (ulaz/izlaz) ili USART asinhroni risiver ili sinhroni podaci (data) Port D Port D je 8-bitni bidirekcioni port. Ovaj port može da se konfiguriše kao paralelni mikroprocesorski port (parallel slave port – PSP). Port E Port E je 3-bitni bidirekcioni port. Ima mogućnost A/D konverzije. Pinovi mogu da se konfigurišu kao analogni ili digitalni, kao kod porta A. Tajmeri

Ove se periferije koriste za merenje vremena i brojanje eksternih događaja. Ugrađena su tri tajmerska modula (TMR 0,1,2) od kojih svaki ima svoje specifičnosti.

Tajmer0 je jednostavni 8-bitni brojač koji generiše interapt pri prelasku sa 0xFF na 0x00 (overflow). Poseduju ga svi niži PICmicro™ procesori i ovde je zadržana

Page 11: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

11

kompatibilnost s njima. Izvor takta za tajmer 0 može biti bilo interni sistemski sat (Fosc/4), bilo spoljašnji generator takta spojen na pin RA4/T0CKI. Moguće je podesiti da se brojač inkrementira na rastuću ili opadajuću ivicu spoljačnjeg signala.

U sadejstvu sa modulom tajmera 0 može 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 što je veće od maksimalne frekvencije samog mikrokontrolera.

Tajmer 1 je 16-bitni i osposobljen je da radi kao brojač/merač vremena. Ima tri izvora takta: sistemski sat (Fosc/4), spoljašnji takt ili spoljašnji kristal.

Brojač eksternih događaja može da se sinhronizuje sa internim oscilatorom, a postoji i asinhroni način rada koji omogućuje da se brojač inkrementira i u sleep režimu. Preskaliranje je upotrebljivo sa vrednostima deljenja 1:1, 1:2, 1:4 i 1:8.

Tajmer 2 je 8-bitni tajmer sa programabilnim preskalerom i postskalerom. Može da bude tajmer/brojač opšte namene. Međutim, potreban je CCP modulu prilikom generisanja PWM signala, te modulu za sinhronu serijsku komunikaciju (SSP) kao Baud Rate generator. U kooperaciji sa tajmerom 2 koristi se registar PR2 (Period Register). Kada se vrednost brojača izjednači sa vrednošću upisanom u registar PR2, generiše se odgovarajući interapt. CCP moduli

CCP je skraćenica za Compare/Capture/PWM. PIC16F877 poseduje dva ovakva modula koji mu “pomažu” da se lakše nosi sa raznim zahtevima real-time aplikacija.

U modu Capture kada se desi događaj 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 uspešna tajmer1 mora raditi u tajmerskom modu ili modu sinhronizovanog brojanja.

U modu Compare 16-bitna vrednost registra CCPR1 se stalno poredi sa vrednošću para registara tajmera 1. Kada dođe do izjednačenja moguće je da se pin RC2/CCP1 setuje, resetuje ili ostane nepromenjen, što se ranije podesi odgovarajućim konfiguracionim bajtom upisanim u registar CCP1CON. I u ovom slučaju se setuje interapt fleg CCP1IF.

U modu PWM (Pulse Width Modulation) pin RC2/CCP1 proizvodi širinsko-impulsni modulisani signal rezolucije do 10 bita.

Period PWM signala određuje se upisom u PR2 registar po formuli:

PWM_period = [(PR2)+1] · 4 · Tosc · TMR2_preskaler.

Vreme ispune (Duty Cycle Time) menja se upisom u registar CCPR1L i dva bita

registra CCP1CON (bitovi 5 i 4). Time je omogućena maksimalno 10-bitna rezolucija PWM izlaza. Formula za proračun je:

PWM_Duty_Cycle = (CCPR1L:CCP1CON<5:4>) · Tosc · TMR2_preskaler.

Page 12: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

12

Ostale periferije

Ovde će ukratko biti pomenuti još nekoliko periferijskih modula koje PIC16F877 poseduje.

S obzirom na kontinualnost pojava u spoljašnjem svetu, teško je upravljati bilo kojim procesom bez digitalizacije analognih veličina. Na većinu zahteva može odgovoriti 10-bitni, 8-kanalni A/D konvertor konstruisan na principu sukcesivnih aproksimacija.

Mikrokontroler je deo mreže elektronskih sklopova koji međusobno komuniciraju i razmenjuju podatke. U tu svrhu, on je opremljen sa tri hardverska komunikaciona modula.

Prvi među njima je SSP modul (Synchronous Serial Port), koji služi za komunikaciju sa serijskim EEPROM-ima, pomeračkim registrima, displej-drajverima, A/D konvertorima, itd. Ovaj modul može raditi u jednom od dva moda:

• Serial Peripheral Interface (SPI), • Inter-Integrated Circuit (I2C).

Drugi serijski komunikacioni modul je USART (Universal Synchronous

Asynchronous Receiver Transmiter). On uglavnom služi za povezivanje sa personalnim računarom, ali to nije njegova jedina mogućnost primene. USART se može konfigurisati u neki od sledećih modova rada:

• Asinhroni rad (full duplex), • Sinhroni master rad (half duplex), • Sinhroni slave rad (half duplex).

Osim serijskih, postoji i jedan paralelni komunikacioni modul. Reč je o modulu PSP

(Parallel Slave Port). On služi da se PIC16F877 direktno poveže na 8-bitnu magistralu podataka drugog mikroprocesora. Eksterni procesor tada koristeći linije Read (RD) i Write (WR) može da čita i upisuje PORTD registar kao svaki drugi 8-bitni leč.

Page 13: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

13

3. Asembler za PIC mikrokontrolere Asemblerske instrukcije se izvršavaju tokom četiri taktna intervala, izuzev instrukcija grananja čije izvršavanje traje duže. Primera radi, ako interni oscilator mikrokontrolera radi na frekvenciji 4 MHz, izvršenje standardne instrukcije traje 1µs. Instrukcije mikrokontrolera su prikazane u narednoj tabeli.

MNEMONIK OPIS OPERACIJA MARKERI CIK PRIM. UPIS PODATAKA

MOVF f, d MOVWF f MOVLW k CLRF CLRW SWAP f, d

prepiši f u d prepiši W u f upiši konstantu u W upiši 0 u f upiši 0 u W prepiši unakrsno niblove iz f u

d

f ->d W ->f k -> W 0 -> f 0 -> W f(7:4),(3:0)->d(3:0),(7:4)

Z

Z Z

1 1 1 1 1 1

1, 2

2

1, 2

ARITMETIKA I LOGIKA

ADDWF f ADDLW k SUBWF f, d SUBLW k INCF f, d DECF f, d IORWF f, d ANDWF f, d XORWF f, d IORLW k ANDLW k XORLW k COMF f, d

saberi W i f saberi W sa konstantom oduzmi W od f oduzmi W od konstante uvećaj f umanji f logičko ILI W sa f logičko I W sa f logičko isključivo ILI W sa f logičko ILI W sa konstantom logičko I W sa konstantom logičko ILI W sa konstantom komplementiraj f

f + W -> d k + W -> W f - W -> d k - W -> W f + 1 -> d f -1 -> d f v W -> d f ^ W -> d f xor W -> d k v W -> W k ^ W -> W k xor W -> W f -> d

C, DC, Z C, DC, Z C, DC, Z C, DC, Z

Z Z Z Z Z Z Z Z Z

1 1 1 1 1 1 1 1 1 1 1 1 1

1, 2

1, 2

1, 2 1, 2 1, 2 1, 2 1, 2

1, 2

OPERACIJE SA BITOVIMA

BCF f, b BSF f, b RLF f, d RRF f, d

resetuj bit b u f setuj bit b u f rotiraj f nalevo kroz CARRY rotiraj f nadesno kroz CARRY

0 -> f(b) 1 -> f(b)

C C

1 1 1 1

1, 2 1, 2 1, 2 1, 2

UPRAVLJANJE TOKOM PROGRAMA

BTFSC f, b BTFSS f, b INCFSZ f, d DECFSZ f, d GOTO k CALL k RETURN RETLW k RETFIE

test bit b u f, preskoči ako je 0 test bit b u f, preskoči ako je 1 uvećaj f, preskoči ako je 0 umanji f, preskoči ako je 0 skoči na adresu pozovi potprogram povratak iz potprograma povratak sa konstantom u W povratak iz interapta

skip if f(b) = 0 skip if f(b) = 1 f + 1 -> d, skip if Z = 1 f - 1 -> d, skip if Z = 1 k -> PC PC -> TOS, k -> PC TOS -> PC k -> W, TOS -> PC TOS -> PC, 1 -> GIE

1(2) 1(2) 1(2) 1(2)

2 2 2 2 2

3 3

1,2,3 1,2,3 1,2,3

OSTALO

NOP CLRWDT SLEEP

bez operacije inicijalizuj watchdog tajmer prelazak u režim male

potrošne

0 -> WDT, 1 -> -TO, 1-> -PD 0 -> WDT, 1 -> -TO, 0 ->-PD

1 1 1

Page 14: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

14

S obzirom da mikrokontroleri serije PIC16Fxxx imaju RISC arhitekturu, operišu sa svega 35 asemblerskih instrukcija koje možemo podeliti u pet grupa:

• instrukcije koje operišu sa podacima • aritmetičko-logičke instrukcije • instrukcije koje operišu sa bitovima • instrukcije koje upravljaju tokom programa • ostale instrukcije.

Slovom f obeležava se lokacija u RAM-u i, s obzirom da u instrukciji postoji samo 7 bitova za tu adresu, možemo da adresiramo samo 128 lokacija. Zato je potrebno obratiti pažnju na ko-joj adresi se nalazi registar kome pristupamo i odgovarajućim postavljanjem bito RP0 usmeriti se na odgovarajuću banku registara. Slovom d je obeleženo odredište, tj. mesto na koje će biti usmeren rezultat operacije. To nije neki novi registar već jednostavno označava da li će rezultat biti smešten u akumulator (W registar) ili u RAM čija adresa se nalazi u samoj instrukciji, što u tom slučaju znači da se operacija izvršava nad nekom RAM lokacijom (f) i da se rezultat smešta na isto mesto. Ako se za d stavi 0, rezultat se upisuje u W, a za d=1 rezultat se smesta u registar (RAM loakciju). U slučaju da se u naredbi izostavi ova nula ili jedinica, asembler će podrazumevati da rezultat ide u f (znači kao da je upisana jedinica) i istovremeno će generisati upozorenje. Pored sintakse i opisa naredbi, vidite kolone "markeri" i "cik"; flegovi (markeri) su, u stvari, bitovi u određenim registrima koji označavaju stanje nakon neke instrukcije. C, DC, Z, inv.PD (-PD) i inv.TO (-TO) su prvih pet bitova STATUS registra, a iz tabele se vidi tačno koja naredba utiče na koji marker. Kolona cik pokazuje koliko ciklusa traje jedna naredba, a broj u zagradi pokazuje koliko traje ukoliko je uslov ispunjen. Kada pogledamo tabelu, vidimo da naredbe za poređenje ne postoje. Pa kako ćemo onda da uporedimo dva broja? Jedan način je oduzimanjem ta dva broja i proverom stanja markera: ako su ta dva broja jednaka, biće setovan Z marker; ako smo oduzeli manji broj od većeg, C marker će biti setovan, u suprotnom će biti resetovan (zato što se oduzimanje obavlja kao sabiranje sa negativnom vrednošću, pa je C marker invertovan kod oduzimanja). Takođe, ne postoje ni uslovni skokovi – oni su zamenjeni uslovnim preskocima, tj. testira se određeni bit, pa se prva sledeća naredba preskače ako je uslov ispunjen. MICROCHIP-ov asembler MPASM ima već ugrađenje pseudo-naredbe – kojima je moguće izvršiti uslovne skokove (npr. BNZ "branch if not zero" - skoči ako nije nula), ali treba obratiti pažnju da je to u stvari grupa naredbi (tačnije dve), a ne jedna, pa to treba uzeti u obzir kada se računa trajanje takve naredbe. Legenda f bilo koja memorijska lokacija u mikrokontroleru ili registar opšte namene W akumulator b bit pozicija u 'f' registru/lokaciji d odredišni bajt label labela (njima se obeležavaju pojedini delovi programa) TOS vrh magacina (magacin = eng. stack) [] opcija <> bit pozicija unutar registra

Page 15: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

15

Sada ćemo za svaku od sledećih 35 instrukcija prikazati njenu sintaksu, opis i prikazati efekte koja ona proizvodi. Uz svaku instrukciju je priložen primer, kao i broj reči i ciklusa za izvršenje.

• A.1 MOVLW • A.2 MOVWF • A.3 MOVF • A.4 CLRW • A.5 CLRF • A.6 SWAPF • A.7 ADDLW • A.8 ADDWF • A.9 SUBLW • A.10 SUBWF • A.11 ANDLW • A.12 ANDWF • A.13 IORLW • A.14 IORWF • A.15 XORLW • A.16 XORWF • A.17 INCF • A.18 DECF • A.19 RLF • A.20 RRF • A.21 COMF • A.22 BCF • A.23 BSF • A.24 BTFSC • A.25 BTFSS • A.26 INCFSZ • A.27 DECFSZ • A.28 GOTO • A.29 CALL • A.30 RETURN • A.31 RETLW • A.32 RETFIE • A.33 NOP • A.34 CLRWDT • A.35 SLEEP

A.1 MOVLW Konstanta se upisuje u akumulator (Write constant in W register)

Sintaksa: MOVLW k Opis: 8-bitna konstanta k se upisuje u akumulator W Operacija: k →(W) Operand: 0 ≤ k ≤ 255 Marker: - Br. reči: 1 Br. ciklusa: 1 Primer A1 MOVLW 0x2A ;Posle ove instrukcije u akumulatoru W je vrednost 2Ahex.

Page 16: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

16

A.2 MOVWF Sadržaj akumulatora se upisuje u registar/lokaciju (Copy W to f)

Sintaksa: MOVWF f Opis: Sadržaj akumulatora W se upisuje u f registar/lokaciju Operacija: W →(f) Operand: 0≤ f ≤127 Marker: - Br. reči: 1 Br. ciklusa: 1

Primer A2 MOVWF REG ;Na lokaciju REG se upisuje vrednost iz akumulatora W

A.3 MOVF Sadržaj registra f se upisuje u registar/lokaciju d (Copy f to d) Sintaksa: MOVF f,d Opis: Sadržaj registra f se smešta na lokaciju koju određuje operand d Ako je d=0 sadržaj se smešta u akumulator (W) Ako je d=1 lokacija sam registar f Opcija d=1 se koristi sa testiranje sadržaja registra f zbog toga što izvršavanje ove instrukcije utiče na Z marker STATUS registra Operacija: f → (d) Operand: 0 ≤ f ≤ 127 d є [0,1] Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.3:

MOVF FSR,0 ;U akumulator W se smešta sadržaj registra FSR Pre instrukcije: FSR = 0xC2 W = 0x00 Posle instrukcije: W = 0xC2 Z = 0 A.4 CLRW U akumulator W se upisuje 0 (ili sadržaj akumulatora W se briše) Sintaksa: CLRW Opis: Sadržaj akumulatora W se izjednačav a sa 0 (nulom) a Z marker u STATUS registru se postavlja na jedinicu (1) Operacija: 0 → (W) Operand: - Marker: Z Br. reči: 1 Br. ciklusa: 1 PrimerA.4:

CLRW Pre instrukcije: W = 0x55 Posle instrukcije: W = 0x00 Z = 1

Page 17: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

17

A.5 CLRF U registar f se upisuje 0 (ili sadržaj registra f se briše) Sintaksa: CLRF f Opis: Sadržaj registra f se izjednačava sa nulom, a Z marker u STATUS registru se postavlja na jedinicu Operacija: 0 → f Operand: 0 ≤ f ≤ 127 Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.5:

CRLF STATUS ;Briše se sadržaj registra STATUS Pre instrukcije: STATUS=0xC2 Posle instrukcije: STATUS=0x00 Z=1 A.6 SWAPF Menja se mesto podataka u registru Sintaksa: SWAPF f, d Opis: Gornja i donja polovina registra f zamenjuju mesta Ako je d = 0 rezultat se smešta u akumulator W Ako je d = 1 rezultat se smešta u registar f Operacija: f<0:3> → d<4:7> ; f<4:7> → d<0:3> Operand: 0 ≤ f ≤ 127 Marker: - Br. reči: 1 Br. ciklusa: 1 Primer A.6:

SWAP REG,1 ;Gornja i donja polovina registra REG će zameniti mesta i rezultat će biti upisan u isti taj registar REG

Pre instrukcije: REG = 0xF3

Posle instrukcije: REG = 0xF3 W = 0x3F A.7 ADDLW Sadržaj akumulatora W se sabira sa konstantom Sintaksa: ADDLW k Opis: Sadržaj akumulatora W se sabira sa 8-mo bitnom konstantom k i rezultat se smešta u akumulator W Operacija: (W) + k → W Operand: 0≤ k ≤ 255 Marker: C, DC, Z Br. reči: 1 Br. ciklusa: 1 PrimerA.7: ADDLW 0x15 ;Sadržaju akumulatora W dodaj 15

Page 18: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

18

Pre instrukcije: W = 0x10 Posle instrukcije: W = 0x25 A.8 ADDWF Sadržaj akumulatora W dodaj registru f Sintaksa: ADDWF f, d Opis: Sadržaj akumulatora W saberi (dodaj) sa sadržajem registra f Ako je d = 0 rezultat se smešta u akumulator W Ako je d = 1 rezultat se smešta u registar f Operacija: (W) + (f) → d d є [0,1] Operand: 0 ≤ f ≤ 127 Marker: C, DC, Z Br. reči: 1 Br. ciklusa: 1

Primer A.8: ADDWF FSR, 0 ;Sadržaj registra FSR dodaj sadržaju akumulatora W i

smesti rezultat u akumulator W

Pre instrukcije: W = 0x17 FSR = 0xC2

Posle instrukcije: W = 0xD9 FSR = 0xC2

A.9 SUBLW Oduzmi sadržaj akumulatora W od konstante Sintaksa: SUBLW k Opis: Sadržaj akumulatora W se oduzima od konstante k i rezultat se

smešta u akumulator W Operacija: k – (W) → W Operand: 0 ≤ k ≤ 255 Marker: C, DC, Z Br. reči: 1 Br. ciklusa: 1 Primer A.9: SUBLW 0x03 ;Od konstante 3 oduzmi vrednost u akumulatoru W Pre instrukcije: W = 0x01, C = x, Z = x Posle instrukcije: W = 0x02, C = 1, Z = 0 Rezultat > 0 Pre instrukcije: W=0x03, C=x, Z=x Posle instrukcije: W=0x00, C=1, Z=1 Rezultat = 0 Pre instrukcije: W=0x04, C=x, Z=x Posle instrukcije: W=0xFF, C=0, Z=0 Rezultat < 0

Page 19: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

19

A.10 SUBWF Oduzimanje sadržaja akumulatora W od sadržaja registra f Sintaksa: SUBWF f,d

Opis: Sadržaj akumulatora W se oduzima od sadržaja registra f Ako je d = 0 rezultat se smešta u akumulator W Ako je d = 1 rezultat se smešta u registar f

Operacija: (f) – (W) → d Operand: 0 ≤ f ≤ 127 d є [0,1] Marker: C, DC, Z Br. reči: 1 Br. ciklusa: 1 Primer A.10: SUBWF REG, 1 ;Od sadržaja registra REG se oduzima sadržaj

akumulatora W i rezultat se smešta u REG Pre instrukcije: REG = 3, W = 2, C = x, Z = x Posle instrukcije: REG = 1, W = 2, C = 1, Z = 0 Rezultat > 0 Pre instrukcije: REG=2, W=2, C=x, Z=x Posle instrukcije: REG=0, W=2, C=1, Z=1 Rezultat = 0 Pre instrukcije: REG = 1, W = 2, C = x, Z = x Posle instrukcije: REG = 0xFF, W = 2, C = 0, Z = 0 Rezultat < 0 A.11 ANDLW Logička I operacija nad W i konstantom k Sintaksa: ANDLW k Opis: Vrši se operacija logičko I nad sadržajem akumulatora W i konstante k Rezultat se smešta u akumulator W Operacija: (W) .AND. k → W Operand: 0 ≤ k ≤ 255 Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.11:

ANDLW 0x5F ;Izvrši logičku I operaciju nad sadržajem akumulatora W i konstante 5F

Pre instrukcije: W = 0xA3 ; 0101 1111 (0x5F) Posle instrukcije: W = 0x03 ; 1010 0011 (0xA3) 0000 0011 (0x03) A.12 ANDWF Logička I operacija nad W i f registrima Sintaksa: ANDWF f,d Opis: Vrši se logička I operacija nad registrima W (akumulator) i f Ako je d = 0 rezultat se smešta u akumulator W Ako je d = 1 rezultat se smešta u registar f Operacija: (W) .AND. f → d

Page 20: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

20

Operand: 0 ≤ f ≤ 127 d є [0,1] Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.12:

ANDWF FSR, 1 ;Izvrši logičku I operaciju nad sadržajima registara W i FSR i rezultat smesti u FSR Pre instrukcije: W = 0x17, FSR=0xC2 ; 0001 0111 (0x17) Posle instrukcije W = 0x17, FSR=0X02 ; 1100 0010 (0xC2) ; 0000 0010 (0x02) A.13 IORLW Logička ILI operacija nad W i konstantom k Sintaksa: IORLW k Opis: Logička ILI operacija se izvršava nad sadržajem akumulatora W i nad 8-mo bitnom konstantom k i rezultat se smešta u akumulator W Operacij: (W) .OR. k → W Operand: 0 ≤ k ≤ 255 Marker: Z Br. reči: 1 Br. ciklusa: 1

Primer A.13: IORLW 0x35 ;Izvrši logičku ILI operaciju nad sadržajem

akumulatora W i konstantom 35 Pre instrukcije: W = 0x9A Posle instrukcije: W = 0xBF Z = 0 A.14 IORWF Logička ILI operacija nad registrima W i f Sintaksa: IORWF f, d Opis: Logička ILI operacija se izvršava nad sadržajima registara W

(akumulator) i f Ako je d = 0 rezultat se smešta u akumulator W Ako je d = 1 rezultat se smešta u registar f

Operacija: (W) .OR. (f) → d Operand: 0 ≤ f ≤ 127 d є [0,1] Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.14:

IORWF REG,0 ;Izvrši logičku ILI operaciju nad sadržajima W akumulatora i registra REG, rezultat smesti u W

Pre instrukcije: REG = 0x13, W = 0x91 Posle instrukcije: REG = 0x13, W = 0x93 Z = 0

Page 21: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

21

A.15 XORLW Logička XOR (isključivo ILI) operacija nad sadržajem W i konstante Sintaksa: XORLW k Opis: Logička XOR operacija se izvršava nad sadržajem akumulatora W i

konstantom k, rezultat se smešta u akumulator W Operacija: (W) .XOR. k → W Operand: 0 ≤ k ≤ 255

Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.15:

XORLW 0xAF ;izvrši logičku operaciju XOR nad sadržajem akumulatora W i konstantom 0xAF

Pre instrukcije: W = 0xB5 ; 1010 1111 (0xAF) Posle instrukcije: W = 0x1A ; 1011 0101 (0xB5) ; 0001 1010 (0x1A) A.16 XORWF Logička XOR operacija nad sadržajima registara W i f Sintaksa: XORWF f, d Opis: Logička XOR operacija se izvršava nad sadržajima registara W i f

Ako je d = 0 rezultat se smešta u akumulator W Ako je d = 1 rezultat se smešta u registar f

Operacija: (W) .XOR. (f) → d Operand: 0 ≤ f ≤ 127 d є [0,1] Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.16:

XORWF REG, 1 ;Izvrši logičku XOR operaciju nad registrima W iREG, rezultat smesti u registar REG

Pre instrukcije: REG = 0xAF, W = 0xB5 ; 1010 1111 (0xAF) Posle instrukcije: REG = 0x1A, W = 0xB5 ; 1011 0101 (0xB5) ; 0001 1010 (0x1A) A.17 INCF Inkrementiraj (povećaj) sadržaj registra f Sintaksa: INCF f, d Opis: Povećaj saržaj registra f za jedan Ako je d = 0 rezultat smesti u akumulator W Ako je d = 1 rezultat smesti u registar f Operacija: (f) + 1 → d Operand: 0 ≤ f ≤ 127 d є [0,1]

Marker: Z Br. reči: 1

Page 22: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

22

Br. ciklusa: 1 Primer A.17: INCF REG, 1 ;Povećaj sadržaj registra REG za 1 i smesti rezultat u registar

REG Pre instrukcije: REG = 0xFF Z = 0 Posle instrukcije: REG = 0x00 Z = 1 A.18 DECF Dekrementiraj (umanji) sadržaj registra f Sintaksa: DECF f, d Opis: Sadržaj registra f umanji za 1 Ako je d = 0 rezultat smesti u akumulator W Ako je d = 1 rezultat smesti u registar f Operacija: (f) – 1 → d Operand: 0 ≤ f ≤ 127 d є [0,1]

Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.18: DECF REG, 1 ;Umanji sadržaj registra REG za 1 i smesti rezultat u registar

REG

Pre instrukcije: REG = 0x01 Z = 0 Posle instrukcije: REG = 0x00 Z = 1 A.19 RLF Rotiraj sadržaj registra f na levo preko CARRY-a Sintaksa: RLF f, d Opis: Sadržaj registra f se rotira za jedno mesto na levo preko markera (markera) C (CARRY) Ako je d = 0 rezultat smesti u akumulator W Ako je d = 1 rezultat smesti u registar f Operacija: (f<n>) → d<n+1>, f<7> → C, C → d<0> Operand: 0 ≤ f ≤ 127 d є [0,1]

Marker: C Br. reči: 1 Br. ciklusa: 1 Primer A.19: RLF REG, 0 ;Rotiraj sadržaj registra REG u levo za 1 i rezultat smesti u

akumulator W Pre instrukcije: REG = 1110 0110 C = 0

Page 23: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

23

Posle instrukcije: REG = 1110 0110 W = 1100 1101 C = 1 A.20 RRF Rotiraj sadržaj registra f na desno preko CARRY-a Sintaksa: RRF f, d Opis: Sadržaj registra f se rotira za jedno mesto na desno preko markera (markera) C (CARRY) Ako je d = 0 rezultat smesti u akumulator W Ako je d = 1 rezultat smesti u registar f

Operacija: (f<n>) → d<n-1>, f<0> → C, C → d<7> Operand: 0 ≤ f ≤ 127 d є [0,1]

Marker: C Br. reči: 1 Br. ciklusa: 1 Primer A.20: RRF REG, 0 ;Rotiraj sadržaj registra REG za 1 mesto na desno i rezultat

smesti u akumulator W Pre instrukcije: REG = 1110 0110 W = x C = 0 Posle instrukcije: REG = 1110 0110 W = 0111 0011 C = 1 A.21 COMF Komplementiraj sadržaj registra f Sintaksa: COMF f, d Opis: Sadržaj registra f se komplementira Ako je d = 0 rezultat smesti u akumulator W Ako je d = 1 rezultat smesti u registar f Operacija: ) f ( → d Operand: 0 ≤ f ≤ 127 d є [0,1]

Marker: Z Br. reči: 1 Br. ciklusa: 1 Primer A.21: COMF REG, 0 ;Komplementiraj sadržaj registra REG i rezultat smesti u

akumulator W Pre instrukcije: REG = 0x13 ; 0001 0011 (0x13) Posle instrukcije: REG = 0x13 ; komplement W = 0xEC ; 1110 1100 (0xEC)

Page 24: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

24

A.22 BCF Resetuj bit b u registru f Sintaksa: BCF f, b Opis: Resetuje se bit na poziciji b u registru f Operacija: 0 → f<b> Operand: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Marker: - Br. reči: 1 Br. ciklusa: 1 Primer A.22: BCF REG, 7 ;Resetuj bit na poziciji 7 u registru REG Pre instrukcije: REG = 0xC7 ; 1100 0111 (0xC7) Posle instrukcije: REG = 0x47 ; 0100 0111 (0x47) A.23 BSF Postavi bit b u registru f Sintaksa: BSF f, b Opis: Postavi bit na poziciji b u registru f Operacija: 1 → f<b> Operand: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Marker: - Br. reči: 1 Br. ciklusa: 1 Primer A.23: BSF REG, 7 ;Postavi bit na poziciji 7 u registru REG Pre instrukcije: REG = 0x07 ; 0000 0111 (0x07) Posle instrukcije: REG = 0x17 ; 1000 0111 (0x17) A. 24 BTFSC Proveri bit b u registru f, ako je jednak 0 preskoči narednu instrukciju Sintaksa: BTFSC f, b Opis: Ako je bit b u registru f jednak 0, onda se preskače izvršenje naredne instrukcije. Ako je bit b jednak 0, za vreme izvršenja tekuće instrukcije, onda se izvršenje naredne instrukcije stopira,pa se tada izvršava NOP

instrukcija što čini da tekuća instrukcija ima 2 ciklusa Operacija: Preskoči narednu instrukciju ako je (f<b>) = 0 Operand: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Marker: - Br. reči: 1 Br. ciklusa: 1 ili 2 u zavisnosti od bita b Primer A.24: LAB_01 BTFSC REG, 1 ; proveri bit broj 1 u registru REG LAB_02 ......................... ;preskoči ovu liniju ako je bit jednak 0 LAB_03 ......................... ;skoči na ovu liniju ako je bit jednak 1

Page 25: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

25

Pre instrukcije: Programski brojač je bio na adresi LAB_01 Posle instrukcije: Ako je prvi bit u registru REG nula onda programski brojač

pokazuje na adresu LAB_03 Ako je prvi bit u registru REG jedinica onda programski brojač pokazuje na adresu LAB_02

A.25 BTFSS Proveri bit b u registru f, ako je jednak 1 preskoči narednu

instrukciju Sintaksa: BTFSS f, b Opis: Ako je bit b u registru f jednak 1, onda se preskače izvršenje naredne instrukcije. Ako je bit b jednak 1, za vreme izvršenja tekuće instrukcije, onda se izvršenje naredne instrukcije stopira,pa se tada izvršava NOP

instrukcija što čini da tekuća instrukcija ima 2 ciklusa Operacija: Preskoči narednu instrukciju ako je (f<b>) = 1 Operand: 0 ≤ f ≤ 127 0 ≤ b ≤ 7 Marker: - Br. reči: 1 Br. ciklusa: 1 ili 2 u zavisnosti od bita b Primer A.25:

LAB_01 BTFSS REG, 1 ; proveri bit broj 1 u registru REG LAB_02 ......................... ;preskoči ovu liniju ako je bit jednak 1 LAB_03 ......................... ;skoči na ovu liniju ako je bit jednak 0 Pre instrukcije: Programski brojač je bio na adresi LAB_01 Posle instrukcije: Ako je prvi bit u registru REG jedinica onda programski brojač

pokazuje na adresu LAB_03 Ako je prvi bit u registru REG nula onda programski brojač pokazuje na adresu LAB_02

A.26 INCFSZ Inkrementiraj registar f za 1, preskoči narednu instrukciju ako je

rezultat jednak nuli Sintaksa: INCFSZ f, d Opis: Sadržaj registra f se uvećava za 1 Ako je d = 0 rezultat smesti u akumulator W Ako je d = 1 rezultat smesti u registar f Ako je rezultat jednak nuli, sledeća instrukcija se izvršava kao NOP, tako da tekuća instrukcija ima 2 ciklusa Operacija: (f) + 1→ d Operand: 0 ≤ f ≤ 127 d є [0,1]

Marker: - Br. reči: 1 Br. ciklusa: 1 ili 2 u zavisnosti od rezultata Primer A.26: LAB_01 INCFSZ REG, 1 ; uvećaj sadržaj REG za 1 LAB_02 ......................... ;preskoči ovu liniju ako je jednak 0 LAB_03 ......................... ;skoči na ovu liniju ako je jednak 1

Page 26: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

26

Pre instrukcije: Programski brojač je pokazivao na adresu LAB_01 Posle instrukcije: REG = REG + 1, i ako je sada REG=0 programski brojač će pokazivati na adresu LAB_03. U suprotnom će pokazivati na adresu LAB_02 A.27 DECFSZ Dekrementiraj registar f za 1, preskoči narednu instrukciju ako je rezultat jednak nuli Sintaksa: DECFSZ f, d Opis: Sadržaj registra f se umanjuje za 1 Ako je d=0 rezultat smesti u akumulator W Ako je d=1 rezultat smesti u registar f Ako je rezultat jednak nuli, narednainstrukcija se izvršava kao NOP, tako da tekuća instrukcija ima 2 ciklusa

Operacija: (f) - 1→ d Operand: 0 ≤ f ≤ 127 d є [0,1]

Marker: - Br. reči: 1 Br. ciklusa: 1 ili 2 u zavisnosti od rezultata Primer A.27: LAB_01 DECFSZ CNT, 1 ; umanji sadržaj REG za 1 LAB_02 ......................... ;preskoči ovu liniju ako je jednak 0 LAB_03 ......................... ;skoči na ovu liniju ako je jednak 1 Pre instrukcije: Programski brojač je pokazivao na adresu LAB_01 Posle instrukcije: CNT = CNT -1, i ako je sada CNT = 0 programski brojač će pokazivati na adresu LAB_03. U suprotnom će pokazivati na adresu LAB_02. A.28 GOTO Skoči (idi) na adresu Sintaksa: GOTO k Opis: Bezuslovni skok na adresu k Operacija: k → PC<10:0>, (PCLATH<4:3>) → PC<12:11> Operand: 0 ≤ k ≤ 2048 Marker: - Br. reči: 1 Br. ciklusa: 2

Primer A.28: LAB_00 GOTO LAB_01 ; skoči na adresu LAB_01

. . . LAB_01 ....................... Pre instrukcije: Programski brojač pokazuje adresu LAB_00 Posle instrukcije: Programski brojač pokazuje adresu LAB_01

Page 27: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

27

A. 29 CALL Pozovi program Sintaksa: CALL k Opis: Instrukcija poziva potprogram. Prvo se povratna adresa (PC+1)

smešta u magacin, onda se 11-to bitn direktni operand k, koji sadrži adresu potprograma, smešta u programski brojač

Operacija: (PC) + 1→ TOS (Top Of Stack – vrh magacina) k → PC<10:0>, (PCLATH<4:3>) → PC<12:11> Operand: 0 ≤ k ≤ 2048 Marker: - Br. reči: 1 Br. ciklusa: 2 Primer A.29:

LAB_01 CALL LAB_02 ;pozovi potprogram LAB_02 . . . LAB_02 ........................ Pre instrukcije: Programski brojač je pokazivao adresu LAB_01 TOS = x Posle instrukcije: Programski brojač je pokazivao adresu LAB_02 TOS = LAB_01 A.30 RETURN Povratak iz potprograma Sintaksa: RETURN Opis: Sadržaj iz vrha magacina (TOS) se smešta u programski brojač Operacija: TOS → PC (Program Counter – programski brojač) Operand: - Marker: - Br. reči: 1 Br. ciklusa. 2 Primer A.30:

RETURN Pre instrukcije: PC = x TOS = x Posle instrukcije: PC = TOS TOS = TOS – 1 A.31 RETLW Povratak iz potprograma, konstanta se smešta u akumulator W Sintaksa: RETLW k Opis: 8-mo bitna konstanta k se smešta u akumulator W. Vrednost iz vrha magacina (TOS) se smešta u programski brojač Operacija: (k) → W; TOS → PC Operand: 0 ≤ k ≤ 255 Marker: - Br. reči: 1 Br. ciklusa: 2

Page 28: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

28

Primer A.31: RETLW 0x43 Pre instrukcije: W = x PC = x TOS = x Posle instrukcije: W = 0x43 PC = TOS TOS = TOS – 1 A.32 RETFIE Povratak iz interapta (prekida) Sintaksa: RETFIE Opis: Povratak iz potprograma. Vrednost iz vrha magacina (TOS) se smešta

u programski brojač (PC). Interapti (prekidi) su dozvoljeni postavljanjem GIE bita (Global Interrupt Enable).

Operacija: TOS → PC, 1 → GIE Operand: - Marker: - Br. reči: 1 Br. ciklusa. 2 Primer A.32: RETFIE Pre instrukcije: PC = x GIE = 0 Posle instrukcije: PC = TOS GIE = 1 A.33 NOP Bez operacija (instrukcija) Sintaksa: NOP Opis: Ne izvršava nikakvu operaciju i ne utiče na markere Operacija: - Operand: - Marker: - Br. reči: 1 Br. ciklusa. 1

Primer A.33: NOP Pre instrukcije: PC = x Posle instrukcije: PC = x + 1 A.34 CLRWDT Iniciraj Watchdog tajmer Sintaksa: CLRWDT Opis: Watchdog tajmer se resetuje. Preskaler ovog tajmera se takođe

resetuje, takođe se postavljaju i statusni bitovi TO i PD .

Page 29: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

29

Operacija: 0 → WDT 0 → WDT preskaler 1 → TO 1 → PD Operand: - Marker: PD , TO Br. reči: 1 Br. ciklusa. 1

Primer A.34: CLRWDT Pre instrukcije: WDT brojač = x WDT preskaler = 1:128 Posle instrukcije: WDT brojač = 0x00 WDT preskaler broajč = 0 TO = 1 PD = 1 WDT preskaler = 1:128 A.35 SLEEP Stanje pripravnosti (STAND BY mod) Sintaksa: SLEEP Opis: Procesor prelazi u režim niske potrošnje. Oscilator se zaustavlja. PD (Power Down) statusni bit se resetuje. TO (Time Out) bit se postavlja. WDT (Watchdog Timer) tajmer i njegov preskaler se resetuju. Operacija: 0 → WDT 0 → WDT preskaler 1 → TO 0 → PD Operand: - Marker: PD , TO Br. reči: 1 Br. ciklusa. 1 Primer A.35: SLEEP Pre instrukcije: WDT brojač = x WDT preskaler = x Posle instrukcije: WDT brojač = 0x00 WDT preskaler = 0 TO = 1 PD = 0

Page 30: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

30

4. PIC Simulator IDE PIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima, a karakteriše je njena laka upotreba u WINDOWS okruženju. Pomenuta aplikacija ima integrisan simulator (emulator), BASIC kompajler, asembler, disasembler i debager. Glavni aplikacioni prozor prikazuje statuse svih internih registara datog mikrokontrolera, in-strukciju koja je poslednja izvršena i instrukciju koja će se sledeća izvršiti, taktni interval i brojač instrukcija kao i realno vreme trajanja simulacije. Komande u FILE meniju

Clear memory – Ova komanda vrši resetovanje simulatora i postavlja ga u početno stanje (inicijalno stanje), prazni bafere programske FLASH memorije i EEPROM memorije podataka. Load program – Ova komanda učitava programski fajl u bafer FLASH memorije PIC simulatora. Programski fajl mora biti u formatu HEX. Učitani (pokrenuti) programski fajl može ponovo brzo da se učita tako što se selektuje pointerom na njegovom tasteru u glavnom programskom interfejsu (prozoru) ili pritiskom tastera SPACE na tastaturi. Save memory – Ova komanda omogućava da se sačuva sadržaj bafera programske FLASH memorije i podataka EEPROM memorije, i to u fajlu HEX.

Page 31: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

31

Komande menija SIMULATION (Omogućava korisnicima pokretanje i zaustavljanje simulacije) Start – Ovom komandom se pokreće simulacioni mod i počinje izvršenje instrukcija sa početkom u lokaciji 0000H programske memorije.

Step – Ova komanda omogućava da se simulacija izvrši korak po korak, ali se prethodno mora podesiti da će simulacija da se odvija korak po korak. Pritiskom tastera F2 na tastaturi izvršava se naredna instrukcija. Stop – Ovom komandom se zaustavlja simulacija i zatim se prezentuju informacije o ukupnom broju izvršenih instrukcija, trajanju simulacije i ukupnom realnom vremenu simulacije u taktnim intervalima i µs, i sve to na nivou PIC mikrokontolera.

Page 32: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

32

Komande menija RATE (Omogućava korisnicima izbor brzine simulacije. Ova opcija je dostupna i u toku izvršenja simulacije)

Step by step – Ovom komandom se omogućuje korisniku da sam određuje vreme između dve susedne instrukcije. Korisnik pritiskom određenog tastera pokreće izvršenje naredne instrukcije. Kada se simulator nalazi u ovom modu (Step by step), moguće je menjati vrednosti u svim specijalnim funkcijama i registrima opšte upotrebe, programskim brojačima i radnim registrima, tako što se selektuje odgovarajuće ime ili vrednost polja na programskom interfejsu. Vrednost u SFR registrima može da se menja alternativno zamenom pojedinačnih bitova grafičke reprezentacije i ova osobina može da se koristi i pri drugim brzinama simulacije. Kada se odabere ova brzina simulacije (Step by step) na programskom interfejsu će se pojaviti nova stavka u glavnom meniju (Main menu) koja omogućava lak pristup komandi Step iz menija Simulation. Dodatna prednost je omogućena programima generisanim u integrisanom BASIC kompajleru. Komanda 'Run To Next Basic Statement' će pokrenuti simulaciju na brzini Extremely Fast sve dok se ne dostigne sledeća naredba u BASIC-u, a onda se simulacija automatski prebacuje na režim Step by step. Slow – Ovom komandom se zadaje brzina simulacije od 1500 ms između instrukcija. Normal – Ovom komandom se zadaje brzina simulacije od 250 ms između instrukcija. Fast – Ovom komandom se zadaje brzina simulacije od oko 50 ms između instrukcija. Extremely fast – Kada se postavi ova komanda, interval između instrukcija je veoma mali i brzina simulacije linearno zavisi od brzine rada računara. Ultimate (No refresh) – Ovom komandom se glavni prozor simulatora ne osvežava što značajno ubrzava izvršenje simualcije. Ova brzina simulacije treba da se koristi u kombinaciji sa Breakpoint Manager da bi se rutine sa velikim kašnjenjem simulirale što brže.

Page 33: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

33

Komande menija Tools

Program Memory Editor – Ova komanda omogućuje pristup Flash memoriji PIC simulatora. Moguće je ručno uneti operacione kodove instrukcije tako što se selektuje linija na displeju na željenoj lokaciji.

Page 34: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

34

EEPROM Memory Editor – Ova komanda otvara EEPROM memoriju PIC simulatora. Ako je ovaj prozor otvoren, osvežavaće se u toku simulacije. Vrednost na bilo kojoj memorijskoj lokaciji se može izmeniti jednostavnim selektovanjem iste.

Hardware Stack Viewer – Pregled magacina (Stack) mikrokontrolera.

Page 35: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

35

Microcontroller View – Ova komanda otvara prozor sa odabranim PIC mikrokontrolerom i njegovim rasporedom pinova. Grafički su prikazana logička stanja svih pinova i ona se mogu menjati manuelno jednostavnim selektovanjem na interfesju. Moguće je menjati i analogne vrednosti na svim U/I pinovima koji su i konfigurisani kao analogni. Ako je ovaj prozor otvoren on će se osvežavati tokom simulacije.

Alternative SFR Viewer – Ova komanda otvara prozor za specijalne funkcionalne registre (SFR) koji su podložni promenama veličine.

Page 36: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

36

Disassembler – PIC Simulator IDE ima integrisani disasembler koji se pokreće ovom naredbom. Proces disasembliranja se inicira automatski samim otvaranjem ovog prozora. Uvek se poćinje od adrese 0000H. Kada se proces završi disasembler izbacuje izlazni listing. Ovaj listing se može sačuvati na hard disku – korisnik mora uneti ime izlaznog fajla, a ek-stenzija je LST.

Breakpoints Manager – Ovom komandom se aktivira integrisani debager, kojim se nadgleda izvršavanje instrukcija programa. Moguće je definisati do 10 Breakpoint-a (tačak u kojima se zaustavlja izvršenje programa).

Page 37: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

37

Assembler – Ovom opcijom/komandom se aktivira asemblerski prozor u kojem je moguće uneti novi program ili prepraviti već postojeći. Posle procesa asembliranja, generiše se HEX fajl koji je jedini “razumljiv” mikrokontroleru.

BASIC Compiler – Ovom opcijom/komandom se aktivira BASIC kompajler u kojem može da se programira mikrokontroler. Dodatne informacije su date u tekstu BASIC Compiler Refe-rence Manual.

Page 38: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

38

Interactive Assembler Editor – Ovom opcijom se aktivira prozor koji omogućava početnicima da napišu jednostavne asemblerske rutine interaktivno bez pamćenja mnemonika individualnih instrukcija PIC mikrokontrolera.

8 x LED Board – Ovom opcijom se aktivira niz od 8 LED dioda koje je moguće “povezati” na bilo koje pinove. Moguća je promena boje LED (crvena, žuta, zelena).

Page 39: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

39

Keypad Matrix – Ovom opcijom se aktivira tastatura 4x4

LCD Module – Ovom opcijom se aktivira LCD modul (koji prikazuje tekst).

Graphical 128x64 LCD Module – Ovom opcijom se aktivira grafički LCD modul. Pre korišćenja, neophodno je podesiti parametre u Setup-u.

Page 40: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

40

Hardware UART Simulation Interface – Ovom opcijom se aktivira UART interfejs za komunikaciju sa UART modulom mikrokontrolera.

PC's Serial Port Terminal – Ovom opcijom se aktivira softverski alat nezavisan od simulatora i može se koristiti za komunikaciju stvarnih/fizičkih PIC mikrokontrolera i serijskog porta računara.

Page 41: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

41

Software UART Simulation Interface – Ovom opcijom se aktivira UART interfejs za komunikaciju sa emuliranim UART modulom mikrokontrolera koji ne poseduju hardverski UART modul.

Oscilloscope – Ovo je moćan alat u okviru simulatora preko kojeg mogu da se prate promene signala na maksimalno 4 pina mikrokontrolera.

Page 42: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

42

Signal Generator – Ovom opcijom je moguće aktivirati do 4 nezavisna generatora signala.

7-Segment LED Displays Panel – Ovom opcijom se aktivira 7-segmentni displej.

External Modules – Ovom opcijom je moguće “uključiti” do 5 eksternih modula.

Page 43: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

43

Watch Variables – Aktiviranjem ove opcije tokom simulacije se prate promene varijabli koje se koriste u programu.

Komande menija Options: Save Positions – Ukoliko se ova opcija selektuje, pozicije prozora na ekranu biće «zapamćene». Select Microcontroller – Izbor mikrokontrolera sa liste.

Page 44: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

44

Change Clock Frequency – Izbor frekvencije takta Reset Simulation Statistics – Brisanje programskog brojača, brojača instrukcija i vremena simulacije. Change EEPROM Write Time – Ovom opcijom se menja vreme taktnih intervala koji se koriste za upis u EEPROM. Default-na vrednost je 1000 taktnih intervala. Change A/D Conversion Time – Promena vremena A/D konverzije. Default-na vrednost je 100 taktnih intervala. Change UART Transmit/Receive Time – Promena vremena slanja/prijema kod UART modula A/D konverzije. Default-na vrednost je 100 taktnih intervala. Configuration Bits – Promena konfiguracionih bitova mikrokontrolera.

Change FLASH/EEPROM – Ova komanda se koristi za promenu vrednosti neprogramiranih lokacija FLASH i EEPROM memorije mikrokontrolera – sa 1 na 0, ili obrnuto. U prvom slučaju neprogramirane lokacije će uzeri vrednost 3FFFh (kod FLASH-a) i FFh (kod EEPROM-a). U drugom slučaju, neprogramirane vrednosti se postavljaju na nule, za obe memorije. Infinite Loop Stops Simulation – Biranjem ove opcije,, simulator će automatski zaustaviti proces simulacije u slučaju kada brojač beskonačne petlje dostigne krajnju vrednost. Basic Program Tracking – Ukoliko je ova opcija aktivna, moguće je praćenje izvršavanje instrukcija u BASIC-u tokom simulacije (preko markera). Show Confirmation Boxes – Ako je ova opcija aktivna, posle svake akcije će korisnik biti obaveštavan o njenim parametrima i uspešnosti.

Page 45: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

45

Show RAM Memory Usage Information – Ukoliko je ova opcija aktivan, korisnik će biti obavešten o zauzeću RAM memorije posle kompajliranja programa u BASIC-u. Use Simple Editor in Basic Compiler and Assembler – Ako je ova opcija aktivna, koriste se jednostavni editori BASIC i asemblerskog kompajlera. Preserve Input States on Simulation Start – Ako je ova opcija aktivna, stanja na digitalnim i analognim ulazima u prozoru Microcontroller View neće biti resetovana kada simulacija ponovo započne. Change Color Theme – promena boja u prozorima aplikacije.

Lista simuliranih periferala: - Digitalne I/O linije, - EEPROM memorija podataka, - Čitanje programske FLASH memorije, - Prekidi, - Timer0 Modul, - Timer1 Modul (bitovi T1OSCEN i \T1SYNC u T1CON se ignorišu), - Timer2 Modul, - Komparator, - A/D Konvertor, - Izvor referentnog napona, - Hardverski UART Modul, - CCP Moduli. Napomene: - Watchdog tajmer nije simuliran (CLRWDT instrukcija se izvršava kao NOP). - Power-down mod nije simuliran (SLEEP instrukcija zaustavlja simulaciju).

Page 46: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

46

5. Primeri

U ovom odeljku bice dato nekoliko primera na kojima može da se vidi suština rada mikrokontrolera, kao i značaj simulatora koji predstavlja bitan alat za projektante. Primeri će biti dati u nekoliko grupa, od jednostavnijih primera ka složenijim. U poslednjem odeljku mogu se naći i jednostavni zadaci koji služe za proveru znanja studenata u ovoj oblasti. 5.1. Elementarni primeri Ovi primeri su najjednostavnijeg oblika i služe za upoznavanje asemblera. EP1. Treba sabrati brojeve a=22 (16h) i b=111 (6Fh) i rezultat sabiranja smestiti na

memorijsku lokaciju broja a (a + b → a).

a EQU 0x20 ;adresa broja a je 20h

b EQU 0x21 ;adresa broja b je 21h

MOVLW 0x6F ;vrednost broja b se smešta u akumulator

MOVWF 0x21 ;sadržaj akumulatora se smešta na lokaciju 21h

MOVLW 0x16 ;vrednost broja a se smešta u akumulator

MOVWF 0x20 ;sadržaj akumulatora se smešta na lokaciju 20h

ADDWF 0x21,W ;vrsi se sabiranje vrednosti u akumulatoru i broja

;b koji se nalazi na lokaciji 21h

MOVWF 0x20 ;rezultat se smešta na lokaciju 20h

L0001: GOTO L0001

END

Program se izvršava za 36 taktna intervala ili 9µs (nema instrukcija grananja)

Page 47: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

47

EP2. Od broja b=111 (6Fh) oduzeti broj a=22 (16hx). Rezultat oduzimanja smestiti na

memorijsku lokaciju broja a (b - a → a). a EQU 0x20 ;adresa broja a je 20h

b EQU 0x21 ;adresa broja b je 21h

MOVLW 0x6F ;u akumulator se smešta vrednost broja b

MOVWF 0x21 ;sadržaj akumulatroa se smešta na lokaciju 21h

MOVLW 0x16 ;u akumulator se smešta vrednost broja a

MOVWF 0x20 ;sadržaj akumulatora se smešta na lokaciju 20h

SUBWF 0x21,W ;vrsi se oduzimanje vrednosti broja b i vrednosti u

MOVWF 0x20 ;akumulatoru i rezultat smestamo na lokaciju 20h

L0001: GOTO L0001

END

Program se izvršava za 36 taktna intervala ili 9µs (nema instrukcija grananja) EP3. Izvršiti zamenu binarnih vrednosti brojeva a=11110000 i b=01010101 korišćenjem

XOR operacije.

Logički, primer se rešava u sledeća 3 koraka:

1. a = a xor b (a = 11110000 XOR 01010101 = 10100101) 2. b = b xor a (b = 01010101 XOR 10100101 = 11110000) 3. a = a xor b. (a = 10100101 XOR 11110000 = 01010101)

Page 48: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

48

a EQU 0x20 ;adresa broja a je 20h

b EQU 0x21 ;adresa broja b je 21h

MOVLW %11110000 ;upisivanje binarne vrednosti broja a

MOVWF 0x20 ;preko akumulatora

MOVLW %01010101 ;upisivanje binarne vrednosti broja b

MOVWF 0x21 ;preko akumulatora

XORWF 0x20 ;XOR operacija (20h)XOR(W)→ (20h)

MOVF 0x20,W ;upisivanje vrednosti sa (20h) u akumulator

XORWF 0x21 ;XOR operacija (21h)XOR(W)→ (21h)

MOVF 0x21,W ;upisivanje vrednosti sa (20h) u akumulator

XORWF 0x20 ;XOR operacija (20h)XOR(W)→ (20h)

L0001: GOTO L0001

END

Program se izvršava za 48 taktnih intervala ili 12µs (nema instrukcija grananja)

EP4. Kreirati program koji vrši upis broja x = 0x82 na lokaciju registra opšte namene 0x2E.

x EQU 0x2E ;Adresa broja x je 0x2E

MOVLW 0x82 ;Vrednost x je 0x82 i upisuje

MOVWF 0x2E ;se preko akumulatora

L0001 GOTO L0001

END

Page 49: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

49

EP5. Kreirati program koji vrši upis brojeva x = 0x42, y =0xAACC i u =0xB1 sukcesivno počev od lokacije 0x20 u registrima opšte namene.

x EQU 0x20 ;Adresa broja x je 0x20

y EQU 0x21 ;Adrese broja y su 0x21 i 0x22 (u pitanju je rec)

u EQU 0x23 ;Adresa broja u je 0x22

MOVLW 0x42 ;Vrednost x se upisuje preko akumulatora

MOVWF 0x20

MOVLW 0xCC

MOVWF 0x21 ;Vrednost y se upisuje preko akumulatora

MOVLW 0xAA

MOVWF 0x22

MOVLW 0xB1

MOVWF 0x23 ;Vrednost u se upisuje preko akumulatora

L0001: GOTO L0001

END

EP6. Kreirati program koji sukcecivno prikazuje sledeća stanja Porta B: 0x55, 0xAA i

0x00. (Za praćenje stanja Porta B aktivirati opciju Tools→Microcontroler View.)

BSF STATUS,RP0 ;Port B je izlazni

CLRF 0x06

BCF STATUS,RP0

MOVLW 0xAA ;Port B uzima vrednost 0xAA

MOVWF 0x06

MOVLW 0x55 ;Port B uzima vrednost 0x55

MOVWF 0x06

CLRF 0x06 ;Port B uzima vrednost 0x00

L0001: GOTO L0001

END

EP7. Kreirati program koji sukcecivno prikazuje sledeće rezultate:

Port B = PortD – PortC i Port B = PortD + PortC. (Stanja Portova C i D zadati proizvoljno. Za praćenje stanja Porta B i definisanja heksadecimalnih vrednosti Porta C i Porta D treba aktivirati opciju Tools→Microcontroler View.)

BSF STATUS,RP0 ;Port B je izlazni

CLRF 0x06

BCF STATUS,RP0

BSF STATUS,RP0 ;Port C je ulazni

MOVLW 0xFF

MOVWF 0x07

BCF STATUS,RP0

BSF STATUS,RP0 ;Port D je ulazni

MOVLW 0xFF

MOVWF 0x08

BCF STATUS,RP0

MOVF 0x07,W ;Operacija PORTB = PORTD - PORTC

SUBWF 0x08,W

MOVWF 0x06

MOVF 0x08,W ;Operacija PORTB = PORTD + PORTC

ADDWF 0x07,W

MOVWF 0x06

L0001: GOTO L0001

END

Page 50: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

50

EP8. Napisati program koji prikazuje sledeći rezultat: Port B = PortC XOR PortD. (Stanja Portova C i D zadati proizvoljno. Za praćenje stanja Porta B i definisanja heksadecimalnih vrednosti Porta C i Porta D treba aktivirati opciju Tools→Microcontroler View.)

R0L EQU 0x20 ;adresa promenljive R0L je 20h

BSF STATUS,RP0 ;Port B je izlazni

CLRF 0x06

BCF STATUS,RP0

BSF STATUS,RP0 ;Port C je ulazni

MOVLW 0xFF

MOVWF 0x07

BCF STATUS,RP0

BSF STATUS,RP0 ;Port D je ulazni

MOVLW 0xFF

MOVWF 0x08

BCF STATUS,RP0

MOVF 0x07,W ;Operacija PORTB = PORTC Xor PORTD

MOVWF R0L

MOVF 0x08,W

XORWF R0L,W

MOVWF 0x06

L0001: GOTO L0001

END

Page 51: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

51

Program se izvršava za 92 taktnih intervala ili 23µs (nema instrukcija grananja) 5.2. Jednostavni primeri Potrudićemo se da u narednim redovima ilustrujemo proces učitavanja programa i simulaciju nekoliko struktura (brojača, A/D konvertora, memorija). Osnova za navedene strukture biće mikrokontroler PIC16F877. Uz svaki primer priložićemo algoritam i asemblerski program. JP1. Brojač

Preko programa PIC Simulator IDE realizovati brojač koji broji od 0 do 255 (binarno) i od 255 do 0 (binarno). Indikacija treba da budu LED povezane na Port B mikrokontrolera PIC16F877. Listing programa u Basic-u:

Dim a As Byte ;definisanje promenljive a

TRISB = %00000000 ;pinovi Porta B su izlazi

Symbol display = PORTB ;prikaz na Portu B

;Preko sledece dve For petlje formiramo brojanje

;unapred (1.ciklus) i unazad (2.ciklus)

For a = 0 To 255 ;Brojanje unapred

display = a

Next a

For a = 0 To 255 ;Brojanje unazad

display = 255 - a

Next a

Page 52: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

52

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene(od adrese 0x20 do

;adrese 0x2B) PIC Simulator rezervise za 4-bajtne

;promenljive R0-R5

R0H EQU 0x21

R1L EQU 0x22

R1H EQU 0x23

R2L EQU 0x24

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

ORG 0x0000 ;početak programske sekvence

BCF PCLATH,3

BCF PCLATH,4

GOTO L0001

ORG 0x0004

RETFIE

L0001:

;Dim a As Byte 'definisanje promenljive a'

a EQU 0x2C ;adresa promenljive a je 2Ch

BSF STATUS,RP0 ;TRISB = %00000000 'pinovi Porta B su izlazni'

CLRF 0x06

BCF STATUS,RP0

;Symbol display = PORTB 'prikaz na Portu B'

display EQU 0x6 ;adresa 'display'-a je 0x6

; Preko sledece dve For petlje formiramo

; brojanje unapred (1.ciklus) i unazad

; (2.ciklus)

; Brojanje unapred

; For a = 0 To 255

CLRF 0x2C

L0002:

MOVF 0x2C,W

SUBLW 0xFF

BTFSS STATUS,C

GOTO L0003

; display = a

MOVF 0x2C,W

MOVWF 0x06

; Next a

MOVLW 0x01

ADDWF 0x2C,F

BTFSS STATUS,C

GOTO L0002

L0003: MOVLW 0x1F

ANDWF STATUS,F

;Brojanje unazad

;For a = 0 To 255

CLRF 0x2C

L0004:

MOVF 0x2C,W

SUBLW 0xFF

Page 53: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

53

BTFSS STATUS,C

GOTO L0005

; display = 255 - a

MOVF 0x2C,W

SUBLW 0xFF

MOVWF 0x06

; Next a

MOVLW 0x01

ADDWF 0x2C,F

BTFSS STATUS,C

GOTO L0004

L0005: MOVLW 0x1F

ANDWF STATUS,F

; kraj programa

L0006: GOTO L0006

; kraj listinga

END

Page 54: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

54

Algoritam programa Brojac

Page 55: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

55

Slika 1. Osnovni prozor programa PIC Simulator IDE

Prvi korak posle startovanja programa podrazumeva izbor mikrokontrolera, što se ostvaruje aktiviranjem opcije Select microcontroller iz menija Options (Options→ Select microcontroller). To je prikazano na Slici 2. U našrm slučaju je to PIC16F877. Drugi korak podrazumeva podešavanje frekvencije (Options→ Change Clock Frequency). U našem slučaju frekvencija takta mikrokontrolera treba da bude 4MHz (Slika 3).

Slika 2. Izbor mikrokontrolera

Page 56: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

56

Slika 3. Izbor frekvencije takta

Na Slici 4 je prikazano kako je moguće direktno učitati postojeći heksadecimalni fajl u simulator (brojac.hex), ukoliko postoji. Posle ovoga, moguće je odmah preći na korak prikazan na Slici 8. Međutim, radi postupnosti i edukacije studenata, ovde ćemo proces učitavanja fajla uraditi postupno. Naredni korak podrazumeva učitavanje asemblera, a to se ostvaruje aktiviranjem opcije Assembler u okviru menija Tools (Tools→Assembler), što je ilustrovano na Slici 5. U okviru prozora Assembler treba iz menija File aktivirati opciju Open, tj. izvršiti učitavanje asemblerskog fajla Brojac.asm. Ovo je ilustrovano na Slici 6. Napomena: Asemblerski i heksadecimalni fajl već postoje, tj. kreirani su – i treba ih samo učitati. Na kraju ovog poglavlja je dat listing asemblerskog fajla. Sada treba izvršiti postupak prevođenja asemblerskog (asm) fajla u heksadecimalni (hex). Heksadecimalni fajl brojac.hex treba učitati u simulator. Oba procesa se ostvaruju aktivi-ranjem opcije Assemble & Load u okviru menija Tools (Tools → Assemble & Load ). Ilustracija je data na Slici 7. Posle prevođenja i učitavanja treba podesiti brzinu u meniju Rate. Naš predlog je da bude Extremely Fast, mada u zavisnosti od brzine računara i/ili lične procene možete birati brzine Fast ili Ultimate. Ukoliko želite izvršavanje instrukcija korak po korak, birajte opciju Step by Step. Ilustracija je data na Slici 8. Na Slici 9 je prikazano aktiviranje prozora Microcontroller View, iz menija Tools. Na isti način treba aktivirati i prozor 8 x LED Board. Sada treba podesiti da LED budu priključenje na Port B i da budu poređanje u opadajućem nizu (od PB7 do PB0). To se ostvaruje klikom na odgovarajući prozor pridružen LED diodi. Isto tako, moguć je izbor crvene, žute ili zelene LED.

Startovanje procesa simulacije programa brojac.hex ostvaruje se aktiviranjem opcije Start iz menija Simulation (Slika 11). Sada je moguće pratiti na LED promenu stanja Porta B od 0 do 255 i natrag, tj. 00000000→ 00000001...→11111111...→ 00000001→ 00000000. Proces je jednociklusan. Ukoliko se ujedno želi i praćenje izvršenja asemblerskih instrukcija, treba aktivirati opciju Breakpoints Manager iz menija Options (Slika 12).

Page 57: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

57

Slika 4. Učitavanje heksadecimalnog fajla

Slika 5. Učitavanje asemblera

Page 58: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

58

Slika 6. Učitavanje asemblerskog fajla

Page 59: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

59

Slika 7. Prevođenje asemblerskog fajla

Slika 8. Podešavanje brzine simulacije

Page 60: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

60

Slika 9. Aktiviranje prozora Microcontroller View

Slika 10. Izgled aktivnih relevantinh prozora pred početak simulacije

Page 61: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

61

Slika 11. Učitavanje asemblerskog fajla

Slika 12. Praćenje izvršavanja asemblerskog programa (koda)

JP2. Upis podataka u EEPROM mikrokontrolera

Preko programa PIC Simulator IDE realizovati upisivanje podataka u prve 32 adrese/lokacije EEPROM memorije mikrokontrolera PIC16F877. Upis treba da bude takav da se na memorijske lokacije upisuju heksadecimalne vrednosti njihovih adresa (npr. na adresu 0x00 treba upisati vrednost 0x00, na 0x01 vrednost 0x01 itd.). Pratiti upis tokom izvršenja programa u editoru EEPROM memorije (Tools→EEPROM memory editor).

Listing programa u Basic-u: Dim a As Byte ;definisanje promenljive a

For a = 0 To 31 ;Petlja za popunjavanje prvih 32 lokacija EEPROM - a

Write a, a ;na memorijskoj lokaciji a upisati vrednost a

Next a

Listing asemblerskog programa:

; početak

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

;adrese 0x2B) PIC Simulator rezervise za 4-bajtne

R0H EQU 0x21 ;promenljive R0-R5

R1L EQU 0x22

R1H EQU 0x23

Page 62: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

62

R2L EQU 0x24

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

ORG 0x0000

BCF PCLATH,3

BCF PCLATH,4

GOTO L0001

ORG 0x0004 ;početak programske sekvence

RETFIE

L0001:

;Dim a As Byte 'definisanje promenljive a'

a EQU 0x2C ;adresa promenljive a je 0x2C

CLRF 0x2C ;Petlja za popunjavanje prve 32 lokacije EEPROM - a

L0002:

MOVF 0x2C,W

SUBLW 0x1F

BTFSS STATUS,C

GOTO L0003

;Write a, a 'na memorijskoj lokaciji a upisati

;vrednost a

MOVF 0x2C,W

BSF STATUS,RP1

MOVWF EEADR

BCF STATUS,RP1

MOVF 0x2C,W

BSF STATUS,RP1

MOVWF EEDATA

BSF STATUS,RP0

BCF EECON1,EEPGD

BSF EECON1,WREN

MOVLW 0x55

MOVWF EECON2

MOVLW 0xAA

MOVWF EECON2

BSF EECON1,WR

L0004: BTFSC EECON1,WR

GOTO L0004

BCF EECON1,WREN

BCF STATUS,RP1

BCF STATUS,RP0

BCF PIR2,EEIF

;Next a

MOVLW 0x01

ADDWF 0x2C,F

BTFSS STATUS,C

GOTO L0002

L0003: MOVLW 0x1F

ANDWF STATUS,F

; kraj programa

L0005: GOTO L0005

; kraj listinga

END

Page 63: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

63

Algoritam upisa podataka u EEPROM memoriju mikrokontrolera

Kao u Primeru 1, student treba da izabere da li će direktno učitati heksadecimalni fajl (Upis u memoriju.hex) ili će to učiniti preko asemblerskog fajla (Upis u memoriju.asm), njegovog prevođenja i učitavanja u program. Treba izabrati mikrokontroler PIC16F877 i frekvenciju 4MHz (ako je potrebno, tj. ako nije već tako podešeno). Da bi se pratio upis, neophodno je aktivirati editor EEPROM memorije (Tools→EEPROM memory editor) i, ako je potrebno, aktivirati opciju Clear (koja se nalazi unutar prozora) u cilju brisanja prethodnog sadržaja. Treba podesiti brzinu (Rate→Extremely Fast) i pokrenuti simulaciju (Simulation→Start). U okviru editora EEPROM memorije može se pratiti popunjavanje memorijskih lokacija. Kao i u prethodnom primeru, moguće je pratiti izvršavanje asemblerskim instrukcija aktiviranjem opcije Breakpoints Manager iz menija Options.

Page 64: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

64

Slika 13. Praćenje upisa u EEPROM memoriju mikrokontrolera JP3. A/D konverzija napona Preko programa PIC Simulator IDE ostvariti merenje jednosmernog napona na pinu PA0 mikrokontrolera PIC16F877 koji se zadaje preko potenciometra. Indikacija treba da bude na LED diodama koje su povezane na Port B mikrokontrolera. (Napomena: Mikrokontroler PIC16F877 ima integrisan 8-kanalni 10-bitni A/D konvertor, kojem je moguće pristupiti sa 5 pinova Porta A i sva 3 pina Porta E. Ovde je od interesa samo pin PA0, pošto će na njega biti «povezan» potenciometar.) Listing programa u Basic-u: Symbol ad_start = ADCON0.GO_DONE ;Dodeljivanje novog naziva za

;startni bit A/D konverzije

Symbol display = PORTB ;Dodeljivanje novog naziva za Port B, na kome

;ce se prikazivati rezultati A/D konverzije

TRISB = %00000000 ;definisanje Porta B kao izlaznog

TRISA = %111111 ;definisanje Porta A kao ulaznog

ADCON0 = 0xc0 ;postavljanje takta A/D konverzije na interni

;izvor

ADCON1 = 0h ;definisanje pinova Porta A kao analognih

High ADCON0.ADON ;Ukljucivanje ADC modula mikrokontrolera

main: ;Glavni program

Gosub getadresult ;skok na potprogram za konverziju

display = ADRESH ;prikaz rezultata A/D konverzije

Goto main ;ponovi beskonacnu petlju

End

getadresult: ;Potprogram koji vrsi A/D konverziju

High ad_start ;start A/D konverzije

While ad_start ;sacekati dok se konverzija ne zavrsi

Wend

Return

Page 65: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

65

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

R0H EQU 0x21 ;adrese 0x2B) PIC simulator rezerviše za 4-bajtne

R1L EQU 0x22 ;promenljive R0-R5

R1H EQU 0x23

R2L EQU 0x24

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

ORG 0x0000 ;početak programske sekvence

BCF PCLATH,3

BCF PCLATH,4

GOTO L0003

ORG 0x0004

RETFIE

L0003:

;Dodeljivanje novog naziva za startni bit A/D konverzije

;Symbol ad_start = ADCON0.GO_DONE

;adresa'ad_start' je 0x1F,2

;Dodeljivanje novog naziva za Port B, na kome ce se

;prikazivati rezultati A/D konverzije

;Symbol display = PORTB

display EQU 0x6 ;adresa'display' je 0x6

BSF STATUS,RP0 ;TRISB = %00000000 'definisanje Porta B kao

CLRF 0x06 ;izlaznog

BCF STATUS,RP0

BSF STATUS,RP0 ;TRISA = %111111 'definisanje Porta A kao ulaznog

MOVLW 0x3F

MOVWF 0x05

BCF STATUS,RP0

MOVLW 0xC0 ;ADCON0 = 0xc0 postavlj. takta A/D konverzije na

;interni izvor

MOVWF 0x1F

BSF STATUS,RP0 ;ADCON1 = 0h definisanje pinova Porta A kao

;analognih

CLRF 0x1F

BCF STATUS,RP0

BSF 0x1F,0 ;High ADCON0.ADON 'Ukljucivanje ADC modula

;mikrokontrolera

;main: Glavni program

L0001:

CALL L0002 ;Gosub getadresult skok na potprogram za konverziju

;display = ADRESH 'prikaz rezultata A/D konverzije

MOVF 0x1E,W

MOVWF 0x06

GOTO L0001 ;Goto main 'ponovi beskonacnu petlju

;End

L0004: GOTO L0004

;Potprogram koji vrsi A/D konverziju

;getadresult:

L0002:

;High ad_start 'start A/D konverzije

Page 66: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

66

BSF 0x1F,2

;While ad_start sacekati dok se konverzija ne zavrsi

L0005:

BTFSS 0x1F,2

GOTO L0006

;Wend

GOTO L0005

L0006: MOVLW 0x1F

ANDWF STATUS,F

;Return

RETURN

;kraj programa

L0007: GOTO L0007

; kraj listinga

END

Student treba da izabere da li će direktno učitati heksadecimalni fajl (AD konverzija.hex) ili će to učiniti preko asemblerskog fajla (AD konverzija.asm), njegovog prevođenja i učitavanja u program. Treba izabrati mikrokontroler PIC16F877 i frekvenciju 4MHz (ako je potrebno, tj. ako nije već tako podešeno). Sada treba uključiti pregled mikrokontrolera sa rasporedom pinova (Microcontroler View) i LED diode (8 x LED board). Oba grafička interfejsa se biraju u meniju Tools. Zatim treba podesiti brzinu (Rate→Extremely Fast) i pokrenuti simulaciju (Simulation→Start). Klikom na pin PA0 aktivira se potenciometar na kojem se zadaje vrednost napona (0-1023 koraka). Prikaz 8-bitne digitalne reči, koja je rezultat A/D konverzije, prikazuje se na LED diodama (koje treba da budu povezane na Port B u opadajućem nizu – od PB7 do PB0). Naravno, moguće je pratiti izvršavanje asemblerskim instrukcija (aktiviranjem opcije Breakpoints Manager), kao i stanja varijabli (aktiviranjem opcije Watch Variables). Obe opcije su iz menija Options. (Napomena: Iako mikrokontroler PIC16F877 poseduje 10-bitni A/D konvertor, zbog toga što u simulatoru postoji samo 8 LED – dva najniža bita rezultata A/D konverzije se odbacuju, čime se gubi na rezoluciji).

Page 67: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

67

Program i potrpogram za A/D konverziju

Slika 13. Praćenje A/D konverzije

Page 68: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

68

5.3. Napredniji primeri realizovani PIC simulatorom NP1. Izračunavanje izraza Preko programa PIC Simulator IDE realizovati izračunavanje vrednosti izraza y = (a+b) · x, pri čemu su vrednosti članova izraza sledeće: a=224, b=120 i x=48. Koristiti mikrokontroler PIC16F877 na frekvenciji 4MHz. Pratiti stanja varijabli, registara i izvršavanje asemblerskih instrukcija. Naziv fajla je Sabiranje i množenje.

Listing programa u Basic-u:

Dim a As Byte ;definisanje broja a

Dim b As Byte ;definisanje broja b

Dim x As Byte ;definisanje broja x

Dim y As Word ;definisanje rezultata y

a = 224 ;dodeljivanje vrednosti brojevima a, b i c

b = 120

x = 48

y = (a + b) * x ;izracunavanje rezultata

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese

R0H EQU 0x21 ;0x20 do adrese 0x2B) PIC Simulator rezervise

R1L EQU 0x22 ;za 4-bajtne promenljive R0-R5

R1H EQU 0x23

R2L EQU 0x24

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

ORG 0x0000

BCF PCLATH,3

BCF PCLATH,4

GOTO L0001

ORG 0x0004

RETFIE

L0001:

; Dim a As Byte definisanje broja a

a EQU 0x2C ;adresa broja a je 2Ch

;Dim b As Byte definisanje broja b

b EQU 0x2D ;adresa broja b je 2Dh

;Dim x As Byte definisanje broja x

x EQU 0x2E ;adresa broaj x je 2Eh

;Dim y As Word definisanje rezultata y

y EQU 0x2F ;adresa rezultata z je 2Fh

MOVLW 0xE0 ;dodeljivanje vrednosti brojevima a, b i c

;a = 224

MOVWF 0x2C

MOVLW 0x78 ;b = 120

Page 69: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

69

MOVWF 0x2D

MOVLW 0x30 ;x = 48

MOVWF 0x2E

MOVF 0x2C,W ;y = (a + b) * x 'izracunavanje rezultata

ADDWF 0x2D,W

MOVWF 0x2F

CLRW

BTFSC STATUS,C

ADDLW 0x01

ADDLW 0x00

MOVWF 0x30

MOVF 0x2F,W

MOVWF R3L

MOVF 0x30,W

MOVWF R3H

MOVF 0x2E,W

MOVWF R1L

CLRF R1H

CALL M001

MOVWF 0x2F

MOVF R2H,W

MOVWF 0x30

; kraj programa

L0002: GOTO L0002

; rutina množenja

M001: MOVLW 0x10

MOVWF R4L

CLRF R0H

CLRF R0L

M002: RRF R3H,F

RRF R3L,F

BTFSS STATUS,C

GOTO M003

MOVF R1L,W

ADDWF R0L,F

MOVF R1H,W

BTFSC STATUS,C

INCFSZ R1H,W

ADDWF R0H,F

M003: RRF R0H,F

RRF R0L,F

RRF R2H,F

RRF R2L,F

DECFSZ R4L,F

GOTO M002

MOVF R2L,W

RETURN

; kraj listinga

END

Page 70: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

70

Slika 14. Praćenje operacije izračunavanja izraza Student treba da izabere da li će direktno učitati heksadecimalni fajl (Sabiranje i mnozenje. hex) ili će to učiniti preko asemblerskog fajla (Sabiranje i mnozenje.asm), njegovog prevo-đenja i učitavanja u program. Treba izabrati mikrokontroler PIC16F877 i frekvenciju 4MHz (ako je potrebno, tj. ako nije već tako podešeno). Sada treba uključiti posmatranje varijabli, podesiti brzinu (Rate→Step by Step) i pokrenuti simulaciju (Simulation→Start). Moguće je pratiti kako se menjaju varijable i stanja registara. Napomena: Konačan rezultat izraza je 16512DEC, odnosno 4080HEX i on se zapisuje na lokacije GPR-a 024h i 025h.

Page 71: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

71

NP2. Upisivanje i iščitavanje podataka EEPROM-a mikrokontrolera Preko programa PIC Simulator IDE izvršiti upisivanje i čitanje sadržaja EEPROM memorije mikrokontrolera PIC16F877 koji je podešen na frekvenciju 4MHz. Upisati prvih 128 lokacija po modelu b = 128 + a – gde je a vrednost adrese, a b podatak (na primer, na adresi 00h upisuje se podatak 80h=128DEC=10000000BIN). Pratiti upis u EEPROM editoru, a čitanje na LED koje treba da budu povezane na Port B mikrokontrolera. Naziv fajla je Upis u memoriju. Predlog je da brzina simulacije bude Ultimate.

Listing programa u Basic-u:

Dim a As Byte ;eeprom adresa

Dim b As Byte ;eeprom podatak

TRISB = %00000000 ;definisanje pinova Porta B kao izlaznog

Symbol display = PORTB ;prikaz stanja na LED na Portu B

For a = 0 To 127

b = 128 + a ;vrednost koja se upisuje na adresi a

Write a, b ;upis u EEPROM memoriju

Next a

For a = 0 To 127

WaitMs 1 ;pauza 1ms, kako bi se uocio proces

Read a, b ;Citanje podatka b sa adrese a

display = b ; prikaz na Portu B

Next a ;Sledeca adresa

WaitMs 5 ' pauza 5ms

display = 0 ' prikaz 0=(00000000)b na Portu B

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

R0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtne

R1L EQU 0x22 ;promenljive R0-R5

R1H EQU 0x23

R2L EQU 0x24

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

ORG 0x0000

BCF PCLATH,3

BCF PCLATH,4

GOTO L0001

ORG 0x0004

RETFIE

L0001:

;Dim a As Byte eeprom adresa

a EQU 0x2C ;adresa a je 0x2C

;Dim b As Byte 'eeprom podatak

b EQU 0x2D ;adresa b is 0x2D

BSF STATUS,RP0 ;TRISB = %00000000 definisanje pinova Porta B kao

CLRF 0x06 ;izlaznog

Page 72: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

72

BCF STATUS,RP0

;Symbol display = PORTB prikaz stanja na LED na

;Portu B

display EQU 0x6 ;adresa'display' je 0x6

;For a = 0 To 127 prođi kroz celu EEPROM memoriju

CLRF 0x2C

L0002:

MOVF 0x2C,W

SUBLW 0x7F

BTFSS STATUS,C

GOTO L0003

MOVLW 0x80 ;b = 128 + a vrednost koja se upisuje na adresu a

ADDWF 0x2C,W

MOVWF 0x2D

MOVF 0x2C,W ;Write a, b upis u EEPROM memoriju

BSF STATUS,RP1

MOVWF EEADR

BCF STATUS,RP1

MOVF 0x2D,W

BSF STATUS,RP1

MOVWF EEDATA

BSF STATUS,RP0

BCF EECON1,EEPGD

BSF EECON1,WREN

MOVLW 0x55

MOVWF EECON2

MOVLW 0xAA

MOVWF EECON2

BSF EECON1,WR

L0004: BTFSC EECON1,WR

GOTO L0004

BCF EECON1,WREN

BCF STATUS,RP1

BCF STATUS,RP0

BCF PIR2,EEIF

;Next a

MOVLW 0x01

ADDWF 0x2C,F

BTFSS STATUS,C

GOTO L0002

L0003: MOVLW 0x1F

ANDWF STATUS,F

;For a = 0 To 127 upis se vrsi u prvih 128 lokacija

CLRF 0x2C

L0005:

MOVF 0x2C,W

SUBLW 0x7F

BTFSS STATUS,C

GOTO L0006

;WaitMs 1 pauza 1ms, kako bi se uocio proces

MOVLW 0x01

MOVWF R0L

CLRF R0H

CALL W001

MOVF 0x2C,W ;Read a, b Citanje podatka b sa adrese a

BSF STATUS,RP1

MOVWF EEADR

BSF STATUS,RP0

Page 73: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

73

BCF EECON1,EEPGD

BSF EECON1,RD

NOP

BCF STATUS,RP0

MOVF EEDATA,W

BCF STATUS,RP1

MOVWF 0x2D

;display = b prikaz na Portu B

MOVF 0x2D,W

MOVWF 0x06

;Next a Sledeca adresa

MOVLW 0x01

ADDWF 0x2C,F

BTFSS STATUS,C

GOTO L0005

L0006: MOVLW 0x1F

ANDWF STATUS,F

;WaitMs 5 pauza 5ms

MOVLW 0x05

MOVWF R0L

CLRF R0H

CALL W001

;display = 0 prikaz 0=(00000000)b na Portu B

CLRF 0x06

; kraj programa

L0007: GOTO L0007

; rutina kasnjenja

W001: MOVF R0L,F

BTFSC STATUS,Z

GOTO W002

CALL W003

DECF R0L,F

NOP

NOP

NOP

NOP

NOP

GOTO W001

W002: MOVF R0H,F

BTFSC STATUS,Z

RETURN

CALL W003

DECF R0H,F

DECF R0L,F

GOTO W001

W003: MOVLW 0x0C

MOVWF R2H

W004: DECFSZ R2H,F

GOTO W004

NOP

NOP

MOVLW 0x12

MOVWF R1L

W005: DECFSZ R1L,F

GOTO W006

CALL W007

CALL W007

NOP

Page 74: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

74

NOP

RETURN

W006: CALL W007

GOTO W005

W007: MOVLW 0x0D

MOVWF R2L

W008: DECFSZ R2L,F

GOTO W008

NOP

RETURN

; kraj listinga

END

Slika 15. Praćenje operacije upisa u EEPROM mikrokontrolera

Page 75: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

75

Slika 16 Praćenje operacije čitanja iz EEPROM-a mikrokontrolera NP3. Prikazivanje A/D konverzije na LCD modulu Preko programa PIC Simulator IDE izvršiti dvokanalnu A/D konverziju (sa pinova PA0 i PA1 mikrokontrolera PIC16F877), a vrednosti dobijenih napona sa pratećim/odgovarajućim tek-stom («Napon na pinu PAx iznosi _.__ V») prikazivati na LCD modulu, naizmenično. Naziv fajla je LCD prikaz. Predlog je da brzina simulacije bude Ultimate. (Napomena: Na pinovima PA0 i PA1 su povezani posebni potenciometri.)

Listing programa u Basic-u:

Define ADC_CLOCK = 3 ;pocetna vrednost je 3

Define ADC_SAMPLEUS = 10 ;default-na vrednost je 20

Define LCD_BITS = 8 ;dopustene vrednosti su 4 i 8 - broj interfejsnih

;linija za podatke

Define LCD_DREG = PORTB

Define LCD_DBIT = 0 ;0 ili 4 za 4-bitni interfejs

Page 76: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

76

Define LCD_RSREG = PORTD

Define LCD_RSBIT = 1

Define LCD_EREG = PORTD

Define LCD_EBIT = 3

Define LCD_RWREG = PORTD ;postavi na 0, ako se ne koristi, 0 je

;default-na

Define LCD_RWBIT = 2 ;postavi na 0, ako se ne korist; 0 je default-na

Define LCD_COMMANDUS = 2000 ;kasnjenje posle LCDCMDOUT, default-na

;vrednost je 5000

Define LCD_DATAUS = 50 ;kasnjenje posle LCDCOUT, default-na vrednost je

;100

Define LCD_INITMS = 2 ;kasnjenje posle LCDCIN, default-na vrednost je

;100

;posledenje tri Define naredbe postavljaju

;vrednosti pogodne za simulaciju

;one treba da budu izostavljene kada su u

;pitanju realne aplikacije

Dim an0 As Word

Dim an1 As Word

Dim x0 As Word

Dim x1 As Word

Dim x2 As Word

Dim x3 As Word

Dim x4 As Word

Dim x5 As Word

TRISA = 0xff ;definisanje pinova Porta A kao ulaznih

ADCON1 = 0 ;definisanje pinova Porta A kao analognih

Lcdinit ;inicijalizacija LCD modula

loop:

Adcin 0, an0

x0 = (5 * an0) / 1023

x1 = (48 * ((an0 + 2) - (x0 * 205))) / 100

Lcdcmdout LcdClear ;brisanje LCD displeja

Lcdout "Napon na pinu A0" ;tekst prve linije

Lcdcmdout LcdLine2Home ;postavljanje kursora na pocetak 2.linije

Lcdout "iznosi: ", #x0, ".", #x1, "V" ;nacin formatiranja teksta

;2.linije

WaitMs 2 ;kasnjenje 2ms

Adcin 1, an1

x2 = (5 * an1) / 1023

x3 = (48 * ((an1 + 2) - (x2 * 205))) / 100

Lcdcmdout LcdClear ;brisanje LCD displeja

Lcdout "Napon na pinu A1" ;tekst prve linije

Lcdcmdout LcdLine2Home ;postavljanje kursora na pocetak 2.linije

Lcdout "iznosi: ", #x2, ".", #x3, "V" ;nacin formatiranja teksta

;2.linije

WaitMs 2 ;kasnjenje 2ms

Goto loop ;beskonacna petlja

Page 77: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

77

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

R0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtne

R1L EQU 0x22 ;promenljive R0-R5

R1H EQU 0x23

R2L EQU 0x24

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

ORG 0x0000 ;početak programske sekvence

BCF PCLATH,3

BCF PCLATH,4

GOTO L0002

ORG 0x0004

RETFIE

L0002:

;1: Define ADC_CLOCK = 3 'pocetna vrednost je 3

;2: Define ADC_SAMPLEUS = 10 'default-na vrednost

;je 20

;3: Define LCD_BITS = 8 'dopustene vrednosti su 4 i

;8 - broj interfejsnih linija za podatke

;4:Define LCD_DREG = PORTB

;5: Define LCD_DBIT = 0 '0 ili 4 za 4-bitni

;interfejs

;6: Define LCD_RSREG = PORTD

;7: Define LCD_RSBIT = 1

;8: Define LCD_EREG = PORTD

;9: Define LCD_EBIT = 3

;10: Define LCD_RWREG = PORTD 'postavi na 0, ako se

;ne koristi 0 je default-na

;11: Define LCD_RWBIT = 2 'postavi na 0, ako se ne

;korist 0 je default-na

;12: Define LCD_COMMANDUS = 2000 'kasnjenje posle

;LCDCMDOUT, default-na vrednost je 5000

;13: Define LCD_DATAUS = 50 'kasnjenje posle

;LCDCOUT, default-na vrednost je 100

;14: Define LCD_INITMS = 2 'kasnjenje posle

;LCDCIN,default-na vrednost 100

;15: posledenje tri Define naredbe postavljaju

;vrednosti pogodne za sim.

;16: one treba da budu izostavljene kada su u

;pitanju realne aplikacije

;17: Dim an0 As Word

an0 EQU 0x2C ;adresa 'an0' je 0x2C

;18: Dim an1 As Word

an1 EQU 0x2E ;adresa 'an1' je 0x2E

;19: Dim x0 As Word

x0 EQU 0x30 ;adresa 'x0' je 0x30

;20: Dim x1 As Word

x1 EQU 0x32 ;adresa 'x1' je 0x32

;21: Dim x2 As Word

x2 EQU 0x34 ;adresa 'x2' je 0x34

Page 78: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

78

;22: Dim x3 As Word

x3 EQU 0x36 ;adresa 'x3' je 0x36

;23: Dim x4 As Word

x4 EQU 0x38 ;adrsea 'x4' je 0x38

;24: Dim x5 As Word

x5 EQU 0x3A ;adresa 'x5' je 0x3A

;25: TRISA = 0xff 'definisanje pinova Porta A kao

;ulaznih

BSF STATUS,RP0

MOVLW 0xFF

MOVWF 0x05

BCF STATUS,RP0

;26: ADCON1 = 0 'definisanje pinova Porta A kao

;analognih

BSF STATUS,RP0

CLRF 0x1F

BCF STATUS,RP0

;27:

;28: Lcdinit 'inicijalizacija LCD modula

BCF 0x08,3

BCF 0x08,1

BCF 0x08,2

BSF STATUS,RP0

BCF 0x08,3

BCF 0x08,1

BCF 0x08,2

CLRF 0x06

BCF STATUS,RP0

MOVLW 0x02

MOVWF R0L

MOVLW 0x00

MOVWF R0H

CALL W001

MOVLW 0x33

CALL LC02

MOVLW 0x33

CALL LC02

MOVLW 0x33

CALL LC02

MOVLW 0x38

CALL LC02

MOVLW 0x0C

CALL LC02

MOVLW 0x01

CALL LC02

;29: petlja

L0001:

;30:

;31: Adcin 0, an0

BSF STATUS,RP0

BSF ADCON1,ADFM

MOVLW 0x00

BCF STATUS,RP0

MOVWF R0L

CALL A001

BSF STATUS,RP0

MOVF ADRESL,W

Page 79: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

79

BCF STATUS,RP0

MOVWF 0x2C

MOVF ADRESH,W

MOVWF 0x2D

;32: x0 = (5 * an0) / 1023

MOVLW 0x05

MOVWF R3L

CLRF R3H

MOVF 0x2C,W

MOVWF R1L

MOVF 0x2D,W

MOVWF R1H

CALL M001

MOVWF 0x30

MOVF R2H,W

MOVWF 0x31

MOVF 0x30,W

MOVWF R0L

MOVF 0x31,W

MOVWF R0H

MOVLW 0xFF

MOVWF R1L

MOVLW 0x03

MOVWF R1H

CALL D001

MOVWF 0x30

MOVF R0H,W

MOVWF 0x31

;33: x1 = (48 * ((an0 + 2) - (x0 * 205))) / 100

MOVF 0x2C,W

ADDLW 0x02

MOVWF 0x32

MOVF 0x2D,W

BTFSC STATUS,C

ADDLW 0x01

ADDLW 0x00

MOVWF 0x33

MOVF 0x30,W

MOVWF R3L

MOVF 0x31,W

MOVWF R3H

MOVLW 0xCD

MOVWF R1L

CLRF R1H

CALL M001

MOVWF 0x3C

MOVF R2H,W

MOVWF 0x3D

MOVF 0x3C,W

SUBWF 0x32,W

MOVWF 0x32

MOVF 0x3D,W

BTFSS STATUS,C

ADDLW 0x01

SUBWF 0x33,W

MOVWF 0x33

MOVLW 0x30

MOVWF R3L

Page 80: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

80

CLRF R3H

MOVF 0x32,W

MOVWF R1L

MOVF 0x33,W

MOVWF R1H

CALL M001

MOVWF 0x32

MOVF R2H,W

MOVWF 0x33

MOVF 0x32,W

MOVWF R0L

MOVF 0x33,W

MOVWF R0H

MOVLW 0x64

MOVWF R1L

CLRF R1H

CALL D001

MOVWF 0x32

MOVF R0H,W

MOVWF 0x33

;34: Lcdcmdout LcdClear 'brisanje LCD displeja

MOVLW 0x01

CALL LC02

;35: Lcdout "Napon na pinu A0" 'tekst prve linije

MOVLW 0x4E

CALL LC01

MOVLW 0x61

CALL LC01

MOVLW 0x70

CALL LC01

MOVLW 0x6F

CALL LC01

MOVLW 0x6E

CALL LC01

MOVLW 0x20

CALL LC01

MOVLW 0x6E

CALL LC01

MOVLW 0x61

CALL LC01

MOVLW 0x20

CALL LC01

MOVLW 0x70

CALL LC01

MOVLW 0x69

CALL LC01

MOVLW 0x6E

CALL LC01

MOVLW 0x75

CALL LC01

MOVLW 0x20

CALL LC01

MOVLW 0x41

CALL LC01

MOVLW 0x30

CALL LC01

;36: Lcdcmdout LcdLine2Home 'postavljanje kursora

;na pocetak 2.linije

Page 81: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

81

MOVLW 0xC0

CALL LC02

;37: Lcdout "iznosi: ", #x0, ".", #x1, "V" 'nacin

;formatiranja teksta 2.linije

MOVLW 0x69

CALL LC01

MOVLW 0x7A

CALL LC01

MOVLW 0x6E

CALL LC01

MOVLW 0x6F

CALL LC01

MOVLW 0x73

CALL LC01

MOVLW 0x69

CALL LC01

MOVLW 0x3A

CALL LC01

MOVLW 0x20

CALL LC01

MOVF 0x30,W

MOVWF R2L

MOVF 0x31,W

MOVWF R2H

CALL LC21

MOVLW 0x2E

CALL LC01

MOVF 0x32,W

MOVWF R2L

MOVF 0x33,W

MOVWF R2H

CALL LC21

MOVLW 0x56

CALL LC01

;38: WaitMs 2 kasnjenje 2ms

MOVLW 0x02

MOVWF R0L

CLRF R0H

CALL W001

;39: Adcin 1, an1

BSF STATUS,RP0

BSF ADCON1,ADFM

MOVLW 0x01

BCF STATUS,RP0

MOVWF R0L

CALL A001

BSF STATUS,RP0

MOVF ADRESL,W

BCF STATUS,RP0

MOVWF 0x2E

MOVF ADRESH,W

MOVWF 0x2F

;40: x2 = (5 * an1) / 1023

MOVLW 0x05

MOVWF R3L

CLRF R3H

MOVF 0x2E,W

MOVWF R1L

Page 82: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

82

MOVF 0x2F,W

MOVWF R1H

CALL M001

MOVWF 0x34

MOVF R2H,W

MOVWF 0x35

MOVF 0x34,W

MOVWF R0L

MOVF 0x35,W

MOVWF R0H

MOVLW 0xFF

MOVWF R1L

MOVLW 0x03

MOVWF R1H

CALL D001

MOVWF 0x34

MOVF R0H,W

MOVWF 0x35

;41: x3 = (48 * ((an1 + 2) - (x2 * 205))) / 100

MOVF 0x2E,W

ADDLW 0x02

MOVWF 0x36

MOVF 0x2F,W

BTFSC STATUS,C

ADDLW 0x01

ADDLW 0x00

MOVWF 0x37

MOVF 0x34,W

MOVWF R3L

MOVF 0x35,W

MOVWF R3H

MOVLW 0xCD

MOVWF R1L

CLRF R1H

CALL M001

MOVWF 0x3C

MOVF R2H,W

MOVWF 0x3D

MOVF 0x3C,W

SUBWF 0x36,W

MOVWF 0x36

MOVF 0x3D,W

BTFSS STATUS,C

ADDLW 0x01

SUBWF 0x37,W

MOVWF 0x37

MOVLW 0x30

MOVWF R3L

CLRF R3H

MOVF 0x36,W

MOVWF R1L

MOVF 0x37,W

MOVWF R1H

CALL M001

MOVWF 0x36

MOVF R2H,W

MOVWF 0x37

MOVF 0x36,W

Page 83: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

83

MOVWF R0L

MOVF 0x37,W

MOVWF R0H

MOVLW 0x64

MOVWF R1L

CLRF R1H

CALL D001

MOVWF 0x36

MOVF R0H,W

MOVWF 0x37

;42: Lcdcmdout LcdClear 'brisanje LCD displeja

MOVLW 0x01

CALL LC02

;43: Lcdout "Napon na pinu A1" 'tekst prve linije

MOVLW 0x4E

CALL LC01

MOVLW 0x61

CALL LC01

MOVLW 0x70

CALL LC01

MOVLW 0x6F

CALL LC01

MOVLW 0x6E

CALL LC01

MOVLW 0x20

CALL LC01

MOVLW 0x6E

CALL LC01

MOVLW 0x61

CALL LC01

MOVLW 0x20

CALL LC01

MOVLW 0x70

CALL LC01

MOVLW 0x69

CALL LC01

MOVLW 0x6E

CALL LC01

MOVLW 0x75

CALL LC01

MOVLW 0x20

CALL LC01

MOVLW 0x41

CALL LC01

MOVLW 0x31

CALL LC01

;44: Lcdcmdout LcdLine2Home 'postavljanje kursora

;na pocetak 2.linije

MOVLW 0xC0

CALL LC02

;45: Lcdout "iznosi: ", #x2, ".", #x3, "V" 'nacin

;formatiranja teksta 2.linije

MOVLW 0x69

CALL LC01

MOVLW 0x7A

CALL LC01

MOVLW 0x6E

CALL LC01

Page 84: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

84

MOVLW 0x6F

CALL LC01

MOVLW 0x73

CALL LC01

MOVLW 0x69

CALL LC01

MOVLW 0x3A

CALL LC01

MOVLW 0x20

CALL LC01

MOVF 0x34,W

MOVWF R2L

MOVF 0x35,W

MOVWF R2H

CALL LC21

MOVLW 0x2E

CALL LC01

MOVF 0x36,W

MOVWF R2L

MOVF 0x37,W

MOVWF R2H

CALL LC21

MOVLW 0x56

CALL LC01

;46: WaitMs 2 'kasnjenje 2ms

MOVLW 0x02

MOVWF R0L

CLRF R0H

CALL W001

;47:

;48: Goto loop 'beskonacna petlja

GOTO L0001

; kraj programa

L0003: GOTO L0003

; rutina množenja

M001: MOVLW 0x10

MOVWF R4L

CLRF R0H

CLRF R0L

M002: RRF R3H,F

RRF R3L,F

BTFSS STATUS,C

GOTO M003

MOVF R1L,W

ADDWF R0L,F

MOVF R1H,W

BTFSC STATUS,C

INCFSZ R1H,W

ADDWF R0H,F

M003: RRF R0H,F

RRF R0L,F

RRF R2H,F

RRF R2L,F

DECFSZ R4L,F

GOTO M002

MOVF R2L,W

RETURN

Page 85: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

85

D001: MOVLW 0x10 ;rutina deljenja

MOVWF R3L

CLRF R2H

CLRF R2L

D002: RLF R0H,W

RLF R2L,F

RLF R2H,F

MOVF R1L,W

SUBWF R2L,F

MOVF R1H,W

BTFSS STATUS,C

INCFSZ R1H,W

SUBWF R2H,F

BTFSC STATUS,C

GOTO D003

MOVF R1L,W

ADDWF R2L,F

MOVF R1H,W

BTFSC STATUS,C

INCFSZ R1H,W

ADDWF R2H,F

BCF STATUS,C

D003: RLF R0L,F

RLF R0H,F

DECFSZ R3L,F

GOTO D002

MOVF R0L,W

RETURN

; rutina kašnjenja

W001: MOVF R0L,F

BTFSC STATUS,Z

GOTO W002

CALL W003

DECF R0L,F

NOP

NOP

NOP

NOP

NOP

GOTO W001

W002: MOVF R0H,F

BTFSC STATUS,Z

RETURN

CALL W003

DECF R0H,F

DECF R0L,F

GOTO W001

W003: MOVLW 0x0C

MOVWF R2H

W004: DECFSZ R2H,F

GOTO W004

NOP

NOP

MOVLW 0x12

MOVWF R1L

W005: DECFSZ R1L,F

GOTO W006

CALL W007

Page 86: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

86

CALL W007

NOP

NOP

RETURN

W006: CALL W007

GOTO W005

W007: MOVLW 0x0D

MOVWF R2L

W008: DECFSZ R2L,F

GOTO W008

NOP

RETURN

; rutina kašnjenja - Byte Argument

X001: MOVLW 0x0A

SUBWF R4L,F

BTFSS STATUS,C

RETURN

GOTO X002

X002: MOVLW 0x06

SUBWF R4L,F

BTFSS STATUS,C

RETURN

GOTO X002

; rutina kašnjenja - Word Argument

Y001: MOVLW 0x10

SUBWF R4L,F

CLRW

BTFSS STATUS,C

ADDLW 0x01

SUBWF R4H,F

BTFSS STATUS,C

RETURN

GOTO Y002

Y002: MOVLW 0x0A

SUBWF R4L,F

CLRW

BTFSS STATUS,C

ADDLW 0x01

SUBWF R4H,F

BTFSS STATUS,C

RETURN

GOTO Y002

; Adcin rutina

A001: RLF R0L,F

RLF R0L,F

RLF R0L,F

MOVLW 0x38

ANDWF R0L,F

MOVLW 0xC1

IORWF R0L,W

MOVWF ADCON0

MOVLW 0x0A

MOVWF R4L

CALL X001

BSF ADCON0,GO

A002: BTFSC ADCON0,GO

GOTO A002

BCF PIR1,ADIF

Page 87: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

87

BCF ADCON0,ADON

RETURN

LC01: BSF 0x08,1 ; Lcdout rutina

BCF 0x08,2

MOVWF 0x06

BSF 0x08,3

NOP

BCF 0x08,3

MOVLW 0x32

MOVWF R4L

CALL X001

RETURN

LC02: BCF 0x08,1 ; Lcdcmdout rutina

BCF 0x08,2

MOVWF 0x06

BSF 0x08,3

NOP

BCF 0x08,3

MOVLW 0xD0

MOVWF R4L

MOVLW 0x07

MOVWF R4H

CALL Y001

RETURN

LC21: BSF R3H,7 ; Lcdout Decimal Conversion rutina

MOVLW 0x27

MOVWF R1H

MOVLW 0x10

CALL LC22

MOVLW 0x03

MOVWF R1H

MOVLW 0xE8

CALL LC22

CLRF R1H

MOVLW 0x64

CALL LC22

CLRF R1H

MOVLW 0x0A

CALL LC22

MOVF R2L,W

GOTO LC23

LC22: MOVWF R1L

MOVF R2H,W

MOVWF R0H

MOVF R2L,W

MOVWF R0L

CALL D001

MOVF R0L,W

BTFSS STATUS,Z

BCF R3H,7

BTFSC R3H,7

RETURN

LC23: ADDLW 0x30

CALL LC01

RETURN

; kraj listinga

END

Page 88: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

88

Slika 17. Praćenje A/D konverzije preko LCD modula

Page 89: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

89

5.4. Dopunski primeri Naredni primeri pokazuju kako se realizuju IF i FOR petlje. DP1. Biće prikazan primer koji demonstrira primenu IF i FOR petlje – varijabla j uzima vrednost 0 ako je 0 < i ≤ 2, odnosno 5-i ako je i >2.

BASIC:

Dim i As Byte ;Definisanje i kao bajta (8-bitna rec)

Dim j As Byte ;Definisanje j kao bajta (8-bitna rec)

;FOR i IF petlja

For i = 0 To 5

If i > 2 Then

j = 5 - i

Else

j = 0

Endif

Next i

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene(od adrese 0x20 do

R0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtne

R1L EQU 0x22 ;promenljive R0-R5. Konkretno, u ovom primeru nema

R1H EQU 0x23 ;potrebe za koriscenjem ovih promenljivih, ali

R2L EQU 0x24 ;programer softvera je predvideo «rezervisanje»

R2H EQU 0x25 ;prvih 12 registara za smestanje medjurezultata

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

BCF PCLATH,3 ;Resetovanje bitova 3 i 4 u PCLATH-u

BCF PCLATH,4

GOTO L0001

ORG 0x0004

RETFIE ;Povratak iz prekida

;Povratak iz interapta

L0001:

;1: Dim i As Byte 'Definisanje i kao bajta (8-bitna

;rec)

i EQU 0x2C ;adresa promenljive i je 0x2C

;2: Dim j As Byte 'Definisanje j kao bajta (8-bitna

;rec)

j EQU 0x2D ;adresa promenljive j je 0x2D

;3: 'FOR i IF petlja

;4: For i = 0 To 5

CLRF 0x2C ;Vrednost na adresi 2Ch je “obrisana”, tj. 0

L0002:

;Kao sto je napomenuto, poredjenje da li je

; promenljiva i dostigla vrednost 5 postize se

; oduzimanjem

MOVF 0x2C,W ;U akumulator se smesta vrednost sa adrese 2Ch (to

;je promenljiva i)

SUBLW 0x05 ;Od vrednosti 05h (to je 5DEC)oduzima se vrednost

Page 90: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

90

;koja je u akumulatoru. Rezultat se smešta u W

BTFSS STATUS,C ;Ispituje se status C flega koji ima vrednost 1

;dok je i≤5

GOTO L0003

;5: If i > 2 Then

;Ispituje da li je i>5 na isti nacin kao prethodno

;ispitivanje

MOVF 0x2C,W

SUBLW 0x02

BTFSC STATUS,C

GOTO L0004

; 6: j = 5 - i

MOVF 0x2C,W ;U akumulator se smesta vrednost sa adrese 2Ch

;(to je promenljiva i)

SUBLW 0x05 ;Od vrednosti 02h (to je 2DEC)oduzima se vrednost

;koja je u akumulatoru

; Rezultat se smesta u akumulator

MOVWF 0x2D ;Rezultat iz akumulatora se smesta na adresu 2Dh

; (to je adresa promenljive j)

; 7: Else

GOTO L0005

L0004: MOVLW 0x1F

ANDWF STATUS,F

; 8: j = 0

CLRF 0x2D ;U suprotnom, stanje na adresi 2Dh (to je promen-

;ljiva j) je 0

; 9: Endif

L0005: MOVLW 0x1F

ANDWF STATUS,F

; 10: Next i

; Inkrementiranje promenljive

MOVLW 0x01 ; U akumulator se smesta vrednost 1

ADDWF 0x2C,F ; Vrednost sa adrese 2Ch (adresa promenljive i)

;se sabira sa stanjem akumulatora smesta se na

;adresu 2Ch

BTFSS STATUS,C ; Test bit C u STATUS, preskoči ako je 1

GOTO L0002

L0003: MOVLW 0x1F

ANDWF STATUS,F ;logička I operacija nad sadržajem akumulatora

;(to je 0x1F) i STATUS registrom

L0006: GOTO L0006

END ; Kraj programa

Na narednoj slici je prikazan izgled osnovnog prozora u toku izvršenja programa. Kako bi se posmatrala izmena promenjivih/varijabli i i j, potrebno je aktivirati opcije Watch Variables i Breakpoints Manager iz menija Options. Može da se primeti kako se vrednosti varijabli i i j smeštaju na adresama 02Ch i 02Dh, respektivno. Predlog je da se simulacija izvršava korak po korak (Step by step). Programi u BASIC-u i asembleru su smešteni u fajlovima DP1.bas i DP1.asm,respektivno.

Page 91: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

91

Slika 20 Praćenje izvršenja primera DP1 DP2. Biće prikazan primer koji demonstrira primenu FOR petlje – vrši se sabiranje vrednosti i € {0,1,2,3,4,5,6,7,8,9} sa brojem 3. Rezultat je promenljiva j.

BASIC:

Dim i As Byte ;Definisanje i kao bajta (8-bitna rec)

Dim j As Byte ;Definisanje j kao bajta (8-bitna rec)

;FOR petlja

For i = 0 To 9 ;Brojanje od 0 do 9

j = i + 3 ;Uvecanje vrednosti i za 3

Next i

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

R0H EQU 0x21 ;adrese 0x2B)PIC Simulator rezervise za 4-bajtne

R1L EQU 0x22 ;promenljive R0-R5. Konkretno, u ovom primeru nema

R1H EQU 0x23 ;potrebe za koriscenjem ovih promenljivih, ali

R2L EQU 0x24 ;programer softvera je predvideo «rezervisanje»

R2H EQU 0x25 ;prvih 12 registara za smestanje medjurezultata

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

BCF PCLATH,3 ;Resetovanje bitova 3 i 4 u PCLATH-u

BCF PCLATH,4

GOTO L0001

ORG 0x0004

Page 92: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

92

RETFIE ; Povratak iz prekida

L0001:

;1: Dim i As Byte 'Definisanje i kao bajta (8-bitna rec)

i EQU 0x2C ;adrsa promenljive i je 0x2C

;2: Dim j As Byte 'Definisanje j kao bajta (8-bitna rec)

j EQU 0x2D ;adrsa promenljive j je 0x2D

;3: 'FOR petlja

;4: For i = 0 To 9 'Brojanje od 0 do 9

CLRF 0x2C ;Brisanje sadrzaja adrese 0x2C

L0002:

;Provera da li je promenljiva i dostigla vrednost 9

MOVF 0x2C,W

SUBLW 0x09

BTFSS STATUS,C

GOTO L0003

;5: j = i + 3 'Uvecanje vrednosti i za 3

MOVF 0x2C,W

;j = i + 3 'Uvecanje vrednosti i za 3

ADDLW 0x03

MOVWF 0x2D

; 6: Next i

MOVLW 0x01

;Inkrementiranje i tako sto se u akumulator

ADDWF 0x2C,F ;pribavi vrednost 1, a zatim sabere sa vrednošću

; na lokaciji 0x2C

BTFSS STATUS,C ;Test bit C u STATUS, preskoči ako je 1

GOTO L0002

L0003: MOVLW 0x1F

ANDWF STATUS,F ;logička I operacija vrši se nad sadržajem

;akumulatora (to je 0x1F) i registra STATUS

; Kraj programa

L0004: GOTO L0004

END

Na sledećoj slici je prikazan izgled osnovnog prozora na kraju izvršenja programa. Kako bi se posmatrala izmena promenjivih/varijabli i i j, potrebno je aktivirati opciju Watch Variables iz menija Options. Može da se primeti kako se vrednosti varijabli i i j smeštaju na adresama 02Ch i 02Dh, respektivno. Predlog je da se simulacija izvršava korak-po-korak (Step by step). Za izvršenje programa treba da se izvrši 111 instrukcija koje se izvrše za 135 µs. Programi u BASIC-u i asembleru su smešteni u fajlovima DP2.bas i DP2.asm, res-pektivno.

Page 93: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

93

Slika 18 Praćenje izvršenja primera 2 DP3. Biće prikazan primer koji demonstrira primenu 2 FOR petlje – vrši se izračunavanje vrednost izraza u = x + 2·y, gde je x € {10,9,8} i y € {220,221,222,...300}. BASIC:

Dim x As Byte

Dim y As Word

Dim u As Word

For x = 10 To 8 Step -1 ;Prva FOR petlja

For y = 220 To 300 ;Druga FOR petlja

u = x + 2*y

Next y

Next x

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

R0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtne

R1L EQU 0x22 ;promenljive R0-R5

R1H EQU 0x23

R2L EQU 0x24

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

Page 94: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

94

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

ORG 0x0000

BCF PCLATH,3

BCF PCLATH,4

GOTO L0001

ORG 0x0004

RETFIE

L0001:

;1: Dim x As Byte 'Definisanje x kao bajta (8-bitna rec)

x EQU 0x2C ;Za promenljivu x dodeljuje se adresa 0x2C

;2: Dim y As Word 'Definisanje y kao reci (16-bitna rec)

y EQU 0x2D ;Za promenljivu y dodeljuje se adrese 0x2D i 0x2E

;3: Dim u As Word 'Definisanje rezultata u kao reci (16-

;bitna rec)

u EQU 0x2F ;Za promenljivu u dodeljuje se adresa 0x2F

; 4:

;5: Prva FOR petlja

;6: For x = 10 To 8 Step -1

MOVLW 0x0A

MOVWF 0x2C

L0002:

MOVLW 0x08

SUBWF 0x2C,W

BTFSS STATUS,C

GOTO L0003

; 7: 'Druga FOR petlja

; 8: For y = 220 To 300

MOVLW 0xDC

MOVWF 0x2D

CLRF 0x2E

L0004:

MOVF 0x2D,W

MOVWF R0L

MOVF 0x2E,W

MOVWF R0H

MOVLW 0x01

MOVWF R1H

MOVLW 0x2C

CALL C006

BTFSS STATUS,Z

GOTO L0005

; 9: u = x + 2 * y

MOVLW 0x02

MOVWF R3L

CLRF R3H

MOVF 0x2D,W

MOVWF R1L

MOVF 0x2E,W

MOVWF R1H

CALL M001

MOVWF 0x2F

MOVF R2H,W

MOVWF 0x30

MOVF 0x2C,W

ADDWF 0x2F,W

Page 95: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

95

MOVWF 0x2F

CLRW

BTFSC STATUS,C

ADDLW 0x01

ADDWF 0x30,W

MOVWF 0x30

; 10: Next y

MOVLW 0x01

ADDWF 0x2D,F

MOVLW 0x00

BTFSC STATUS,C

ADDLW 0x01

BTFSC STATUS,C

GOTO L0005

ADDWF 0x2E,F

BTFSS STATUS,C

GOTO L0004

L0005: MOVLW 0x1F

ANDWF STATUS,F

; 11: Next x

MOVLW 0x01

SUBWF 0x2C,F

BTFSC STATUS,C

GOTO L0002

L0003: MOVLW 0x1F

ANDWF STATUS,F

; Kraj programa

L0006: GOTO L0006

; Rutina za mnozenje

M001: MOVLW 0x10

MOVWF R4L

CLRF R0H

CLRF R0L

M002: RRF R3H,F

RRF R3L,F

BTFSS STATUS,C

GOTO M003

MOVF R1L,W

ADDWF R0L,F

MOVF R1H,W

BTFSC STATUS,C

INCFSZ R1H,W

ADDWF R0H,F

M003: RRF R0H,F

RRF R0L,F

RRF R2H,F

RRF R2L,F

DECFSZ R4L,F

GOTO M002

MOVF R2L,W

RETURN

; Rutina za poredjenje

C001: MOVWF R1L

MOVLW 0x05

GOTO C007

C002: MOVWF R1L

MOVLW 0x02

GOTO C007

Page 96: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

96

C003: MOVWF R1L

MOVLW 0x06

GOTO C007

C004: MOVWF R1L

MOVLW 0x03

GOTO C007

C005: MOVWF R1L

MOVLW 0x04

GOTO C007

C006: MOVWF R1L

MOVLW 0x01

GOTO C007

C007: MOVWF R4L

MOVF R1H,W

SUBWF R0H,W

BTFSS STATUS,Z

GOTO C008

MOVF R1L,W

SUBWF R0L,W

C008: MOVLW 0x04

BTFSC STATUS,C

MOVLW 0x01

BTFSC STATUS,Z

MOVLW 0x02

ANDWF R4L,W

BTFSS STATUS,Z

MOVLW 0xFF

RETURN

END

Na sledećoj slici je prikazan izgled osnovnog prozora u toku izvršenja programa. Kako bi se posmatrala izmena promenjivih/varijabli x, y i u, potrebno je aktivirati opciju Watch Variables iz menija Options. Može da se primeti kako se vrednost varijabli x smešta na adresu 02Ch, dok su za varijable z i u po-trebne 4 naredne adrese (po dve za svaku), jer su iste definisane kao reči. Međurezultati izračunavanja se smeštaju na rezervisanim adresama (020h-02Bh). Predlog je da se simulacija izvršava Extremely Fast. Programi u BASIC-u i asembleru su smešteni u fajlovima DP3.bas i DP3.asm, respektivno.

Page 97: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

97

Slika 18 Praćenje izvršenja primera 3

DP4. Biće prikazan primer koji demonstrira primenu kašnjenja. Port B mikrokontrolera PIC16F877 treba definisati kao izlazni. Početno stanje Porta B treba da bude 10101010, posle 50 µs treba da se promeni u 010101010, a posle dodatnih 50 µs treba da je 00000000. BASIC:

TRISB = %00000000 ;svi pinovi PORTA B su izlazni

PORTB = %10101010 ;pocetno stanje

WaitUs 50

PORTB = %01010101 ;stanje posle 50us

WaitUs 50

PORTB = %00000000 ;konacno stanje

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

R0H EQU 0x21 ;adrese 0x2B)PIC Simulator rezervise za 4-bajtne

R1L EQU 0x22 ;promenljive R0-R5. Konkretno, u ovom primeru postoji

R1H EQU 0x23 ;potreba za koriscenjem R4L koji sadrzi informaciju

R2L EQU 0x24 ;o kasnjenju (50 us)

R2H EQU 0x25

R3L EQU 0x26

R3H EQU 0x27

R4L EQU 0x28

R4H EQU 0x29

R5L EQU 0x2A

R5H EQU 0x2B

BCF PCLATH,3 ;Resetovanje bitova 3 i 4 u PCLATH-u

BCF PCLATH,4

GOTO L0001

ORG 0x0004

RETFIE ;Povratak iz prekida

L0001:

BSF STATUS,RP0 ;1: TRISB = %00000000 'svi pinovi PORTA B su izlazni

CLRF 0x06 ;Brisanje (resetovanje) Porta B koji ima adresu 0x06

BCF STATUS,RP0

; 2:

;3: PORTB = %10101010 'pocetno stanje (10101010bin=0xAA)

MOVLW 0xAA ;Vrednost 0xAA se upisuje na Port B, cija je adresa 0x06

MOVWF 0x06

;4: WaitUs 50

MOVLW 0x32 (0x32=50DEC)

MOVWF R4L ;Informacija o kasnjenju se «cuva» u R4L

CALL X001 ;Pozivanje rutine koja definise kasnjenje od 50us

;5: PORTB = %01010101 'stanje posle 50us (01010101bin=0x55)

MOVLW 0x55

MOVWF 0x06

;6: WaitUs 50 (0x32=50DEC)

MOVLW 0x32

MOVWF R4L ;Informacija o kasnjenju se «cuva» u R4L

CALL X001 ;Pozivanje rutine koja definise kasnjenje od 50us

;7: PORTB = %00000000 'konacno stanje (00000000bin=0x00)

CLRF 0x06 ; Brisanje (resetovanje) Porta B

;KRAJ PROGRAMA

L0002: GOTO L0002

;Rutina kojom se definise kasnjenje

;Osnovno kasnjenje iznosi 1us tako da

;se 50us implementira preko dve FOR

;petlje obelezene labelama X001 i X002

X001: MOVLW 0x0A

Page 98: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

98

SUBWF R4L,F

BTFSS STATUS,C ;Test bit C u STATUS, preskoči ako je 1

RETURN ;Povratak iz potprograma

GOTO X002

X002: MOVLW 0x06

;Povratak iz potprograma

SUBWF R4L,F

BTFSS STATUS,C ;Test bit C u STATUS registru, preskoči ako je 1

RETURN ; Povratak iz potprograma

GOTO X002

END

Na sledećoj slici je prikazan izgled osnovnog prozora u toku izvršenja programa. Predlog je da se simulacija izvršava korak-po-korak (Step by step). Kako bi se posmatrala izmena stanja Porta B, treba aktivirati opciju 8 x Led Board iz menija Options. Pinovi Porta B treba da budu složeni u opadajućem redosledu kao na slici. Može da se primeti kako se vrednosti varijabli i i j smeštaju na adresama 02Ch i 02Dh, respektivno. Za izvršenje programa treba da se izvrši 82 instrukcija za 117 µs. (Potrebno je vreme od nekoliko µs za inicijalizaciju mikrokontrolera). Programi u BASIC-u i asembleru su smešteni u fajlovima DP4.bas i DP4.asm, respektivno.

Slika 21 Praćenje izvršenja primera 4

Page 99: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

99

6. Laboratorijske vežbe 1. Napisati program koji vrši upis broja a=52h na lokaciju registra opšte namene 0x2F.

2. Treba sabrati brojeve a=21 (15h), b=96 (60h) i c = 34 (22h) rezultat sabiranja smestiti na memorijsku lokaciju broja b (a + b + c → b).

3. Od broja b=100 (64h) oduzeti a=20 (14h). Rezultat oduzimanja smestiti na

memorijsku lokaciju broja a (b - a → b). 4. Izvršiti zamenu binarnih vrednosti brojeva x=11110011 i y=01111101 korišćenjem

XOR operacije.

5. Napisati program koji sukcecivno prikazuje sledeća stanja Porta C: 0x22, 0xF4 i

0x00. (Za praćenje stanja Porta C aktivirati opciju Tools→Microcontroler View.) 6. Napisati program koji sukcecivno prikazuje sledeće rezultate:

Port C = PortD – PortB i Port C = PortD + PortB. (Stanja Portova C i D zadati proizvoljno. Za praćenje stanja Porta B i definisanja heksadecimalnih vrednosti Porta C i Porta D treba aktivirati opciju Tools→Microcontroler View.)

7. Napisati program koji prikazuje sledeći rezultat: Port C = PortB OR PortD.

(Stanja Portova B i D zadati proizvoljno. Za praćenje stanja Porta C definisanja heksadecimalnih vrednosti Porta C i Porta D treba aktivirati opciju Tools→Microcontroler View.)

8. Napisati program koji demonstrira IF petlju – promenljive x i y uneti proizvoljno a

zatim veću od te dve vrednosti smestiti na lokaciju 0x2C 9. Napisati program koji demonstrira primenu IF i FOR petlje – varijabla j uzima

vrednost 0 ako je 0 < i ≤ 2, odnosno 4+i ako je i >2. 10. Napisati program koji vrši resetovanje bita na poziciji 6 u 8-mo bitnom broju koji se

proizvoljno unese

Page 100: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

100

7. Zaključak U prethodnom tekstu ovog seminarskog rada je opisan softver PIC Simulator IDE, koji služi za simulaciju većeg broja PIC mikrokontrolera 12F i 16F serija. Najpre je detaljno opisano 8 primera u asembleru, da bi kasnije bilo detaljno opisano i ilustrovano 6 primera sa mikrokontrolerom PIC16F877:

• brojač, • upis u EEPROM mikrokontrolera, • A/D konverzija preko mikrokontrolera, • izračunavanje izraza, • upis i čitanje podataka u/iz EEPROM-a mikrokontrolera, • prikaz dvokanalne A/D konverzije na LCD modulu.

Mikrokontroler PIC16F877 je izabran zbog kontinuiteta, odnosno – najveći deo studentskih projekata (seminarskih radova) je realizovan korišćenjem ovog mikrokontrolera. Primeri su savim dovoljni da se savlada suština programiranja i simulacije mikrokontrolera korišćenjem softvera PIC Simulator IDE.

Page 101: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

101

8. Literatura PIC16F877, Microchip, sajt http://www.microchip.com PIC Simulator IDE, sajt http://www.oshonsoft.com/pic.html Instrukcije u PIC BASIC-u, sajt http://milan.milanovic.org/skola Instrukcije u asembleru za PIC, sajt http://mikroe.com

Page 102: PIC Sim IDE - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/RProkopovic - PIC Sim IDE.pdf · Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri ... PIC16F877 mikrokontroleri

102

9. CV

Prezime: Prokopović

Ime: Ranko

Adresa stanovanja: Moše Pijade 5/11, Vladičin Han

E-mail adresa: [email protected]

Bračno stanje: Neoženjen

Datum rođenja: 08.01.1982. godine

Nacionalnost:

Obrazovanje: Gimnazija „Jovan Skerlić“ – Vladičin Han

Kompletna ili stepenovana diploma: IV stepen

Vozačka dozvola: B kategorija

Poznavanje jezika Engleski (dobro)

Poznavanje operativnih sistema i

programskih paketa

WINDOWS XP, PIC Simulator IDE

Posebna interesovanja

Pretraživanje Interneta, čitanje stručne

literature, automobili i tehnika

Sposobnosti Radoznalost, preduzimljivost, snalažljivost

Napomene Nosilac Vukove diplome u osnovnoj i srednjoj

školi.