127
Elektronski fakultet u Nišu Katedra za elektroniku Predmet: Mikroprocesorski sistemi prof. dr Mile Stojčev SIMULACIJA PIC MIKROKONTROLERA PREKO SOFTVERA PIC SIMULATOR IDE

Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Embed Size (px)

Citation preview

Page 1: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Elektronski fakultet u NišuKatedra za elektronikuPredmet: Mikroprocesorski sistemiprof. dr Mile Stojčev

SIMULACIJA PIC MIKROKONTROLERA PREKO SOFTVERA PIC SIMULATOR IDE

Student:

Ranko Prokopović 10609

Page 2: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

SADRŽAJ

1. Uvod.........................................................................................32. Opis mikrokontrolera PIC16F877.............................................43. Asembler za PIC mikrokontrolere...........................................134. PIC simulator IDE...................................................................305. Primeri....................................................................................466. Laboratorijske vežbe..............................................................997. Zaključak...............................................................................1008. Literatura...............................................................................1019. CV.........................................................................................102

2

Page 3: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

3

Page 4: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

4

Page 5: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

5

Page 6: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

6

Page 7: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

7

Page 8: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

8

Page 9: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 ulazRA1/AN1 I/O (ulaz/izlaz) ili analogni ulazRA2/AN2 I/O (ulaz/izlaz) ili analogni ulazRA3/AN3/Vref I/O (ulaz/izlaz) ili analogni ulaz ili referentni napon VrefRA4/T0CKI I/O (ulaz/izlaz) ili eksterni ulazni takt za tajmer TIMER0RA5/AN4/SS I/O (ulaz/izlaz) ili analogni ulaz ili SS (Slave Select) ulaz za sinhroni serijski port

9

Page 10: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 programiranjeRB4 I/O (ulaz/izlaz) sa opcijom interrupt-on-changeRB5 I/O (ulaz/izlaz) sa opcijom interrupt-on-changeRB6/PGC I/O (ulaz/izlaz) sa opcijom interrupt-on-change ili In-Circuit debager pin. Takt za serijsko

programiranjeRB7/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 TIMER1RC1/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 PWM1RC3/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 modoveRC5/SDO I/O (ulaz/izlaz) ili serijski sinhroni izlaz podatakaRC6/TX/CK I/O (ulaz/izlaz) ili USART asinhroni transmiter ili sinhroni taktRC7/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

10

Page 11: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

11

Page 12: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

12

Page 13: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

ZZ

111111

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, ZC, DC, ZC, DC, ZC, DC, Z

ZZZZZZZZZ

1111111111111

1, 2

1, 2

1, 21, 21, 21, 21, 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)

CC

1111

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)

22222

33

1,2,31,2,31,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

  111

 

13

Page 14: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 nameneW     akumulatorb      bit pozicija u 'f' registru/lokacijid      odredišni bajtlabel  labela (njima se obeležavaju pojedini delovi programa)TOS  vrh magacina (magacin = eng. stack)[]      opcija<>   bit pozicija unutar registra

14

Page 15: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 kOpis: 8-bitna konstanta k se upisuje u akumulator WOperacija: k →(W)Operand: 0 ≤ k ≤ 255Marker: -Br. reči: 1Br. ciklusa: 1Primer A1MOVLW 0x2A ;Posle ove instrukcije u akumulatoru W je vrednost 2Ahex.

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

15

Page 16: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

Primer A2MOVWF 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,dOpis: 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 fOpcija d=1 se koristi sa testiranje sadržaja registra f zbog toga štoizvršavanje ove instrukcije utiče na Z marker STATUS registra

Operacija: f → (d)Operand: 0 ≤ f ≤ 127

d є [0,1]Marker: ZBr. reči: 1Br. ciklusa: 1

Primer A.3: MOVF FSR,0 ;U akumulator W se smešta sadržaj registra FSR

Pre instrukcije: FSR = 0xC2W = 0x00

Posle instrukcije: W = 0xC2Z = 0

A.4 CLRW U akumulator W se upisuje 0 (ili sadržaj akumulatora W se briše)

Sintaksa: CLRWOpis: 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: ZBr. reči: 1Br. ciklusa: 1PrimerA.4:CLRWPre instrukcije: W = 0x55Posle instrukcije: W = 0x00

Z = 1A.5 CLRF U registar f se upisuje 0 (ili sadržaj registra f se briše)

16

Page 17: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Sintaksa: CLRF fOpis: Sadržaj registra f se izjednačava sa nulom, a Z marker u STATUS

registru se postavlja na jedinicuOperacija: 0 → fOperand: 0 ≤ f ≤ 127Marker: ZBr. reči: 1Br. ciklusa: 1

Primer A.5:CRLF STATUS ;Briše se sadržaj registra STATUS

Pre instrukcije: STATUS=0xC2Posle instrukcije: STATUS=0x00

Z=1

A.6 SWAPF Menja se mesto podataka u registru

Sintaksa: SWAPF f, dOpis: Gornja i donja polovina registra f zamenjuju mesta

Ako je d = 0 rezultat se smešta u akumulator WAko 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 ≤ 127Marker: -Br. reči: 1Br. 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 = 0xF3Posle instrukcije: REG = 0xF3

W = 0x3F

A.7 ADDLW Sadržaj akumulatora W se sabira sa konstantom

Sintaksa: ADDLW kOpis: Sadržaj akumulatora W se sabira sa 8-mo bitnom konstantom k i

rezultat se smešta u akumulator WOperacija: (W) + k → WOperand: 0≤ k ≤ 255Marker: C, DC, ZBr. reči: 1Br. ciklusa: 1

PrimerA.7:ADDLW 0x15 ;Sadržaju akumulatora W dodaj 15

17

Page 18: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Pre instrukcije: W = 0x10Posle instrukcije: W = 0x25

A.8 ADDWF Sadržaj akumulatora W dodaj registru f

Sintaksa: ADDWF f, dOpis: Sadržaj akumulatora W saberi (dodaj) sa sadržajem registra f

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

Operacija: (W) + (f) → dd є [0,1]

Operand: 0 ≤ f ≤ 127Marker: C, DC, ZBr. reči: 1Br. 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 = 0x17FSR = 0xC2

Posle instrukcije: W = 0xD9 FSR = 0xC2

A.9 SUBLW Oduzmi sadržaj akumulatora W od konstante

Sintaksa: SUBLW kOpis: Sadržaj akumulatora W se oduzima od konstante k i rezultat se

smešta u akumulator WOperacija: k – (W) → WOperand: 0 ≤ k ≤ 255Marker: C, DC, ZBr. reči: 1Br. ciklusa: 1

Primer A.9:SUBLW 0x03 ;Od konstante 3 oduzmi vrednost u akumulatoru W

Pre instrukcije: W = 0x01, C = x, Z = xPosle instrukcije: W = 0x02, C = 1, Z = 0 Rezultat > 0

Pre instrukcije: W=0x03, C=x, Z=xPosle instrukcije: W=0x00, C=1, Z=1 Rezultat = 0

Pre instrukcije: W=0x04, C=x, Z=xPosle instrukcije: W=0xFF, C=0, Z=0 Rezultat < 0

A.10 SUBWF Oduzimanje sadržaja akumulatora W od sadržaja registra f

18

Page 19: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Sintaksa: SUBWF f,dOpis: Sadržaj akumulatora W se oduzima od sadržaja registra f

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

Operacija: (f) – (W) → dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: C, DC, ZBr. reči: 1Br. 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 = xPosle instrukcije: REG = 1, W = 2, C = 1, Z = 0 Rezultat > 0

Pre instrukcije: REG=2, W=2, C=x, Z=xPosle instrukcije: REG=0, W=2, C=1, Z=1 Rezultat = 0

Pre instrukcije: REG = 1, W = 2, C = x, Z = xPosle 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 kOpis: Vrši se operacija logičko I nad sadržajem akumulatora W i konstante k

Rezultat se smešta u akumulator WOperacija: (W) .AND. k → WOperand: 0 ≤ k ≤ 255Marker: ZBr. reči: 1Br. ciklusa: 1Primer 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,dOpis: Vrši se logička I operacija nad registrima W (akumulator) i f

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

Operacija: (W) .AND. f → dOperand: 0 ≤ f ≤ 127

19

Page 20: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

d є [0,1]Marker: ZBr. reči: 1Br. 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 kOpis: 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 WOperacij: (W) .OR. k → WOperand: 0 ≤ k ≤ 255Marker: ZBr. reči: 1Br. ciklusa: 1

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

akumulatora W i konstantom 35

Pre instrukcije: W = 0x9APosle instrukcije: W = 0xBF

Z = 0

A.14 IORWF Logička ILI operacija nad registrima W i f

Sintaksa: IORWF f, dOpis: Logička ILI operacija se izvršava nad sadržajima registara W

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

Operacija: (W) .OR. (f) → dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: ZBr. reči: 1Br. ciklusa: 1Primer A.14:IORWF REG,0 ;Izvrši logičku ILI operaciju nad sadržajima W akumulatora i

registra REG, rezultat smesti u WPre instrukcije: REG = 0x13, W = 0x91Posle instrukcije: REG = 0x13, W = 0x93

Z = 0A.15 XORLW Logička XOR (isključivo ILI) operacija nad sadržajem W i konstante

20

Page 21: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Sintaksa: XORLW kOpis: Logička XOR operacija se izvršava nad sadržajem akumulatora W i

konstantom k, rezultat se smešta u akumulator WOperacija: (W) .XOR. k → WOperand: 0 ≤ k ≤ 255Marker: ZBr. reči: 1Br. 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 WAko je d = 1 rezultat se smešta u registar f

Operacija: (W) .XOR. (f) → dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: ZBr. reči: 1Br. 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, dOpis: Povećaj saržaj registra f za jedan

Ako je d = 0 rezultat smesti u akumulator WAko je d = 1 rezultat smesti u registar f

Operacija: (f) + 1 → dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: ZBr. reči: 1Br. ciklusa: 1

21

Page 22: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

REG

Pre instrukcije: REG = 0xFFZ = 0

Posle instrukcije: REG = 0x00Z = 1

A.18 DECF Dekrementiraj (umanji) sadržaj registra f

Sintaksa: DECF f, dOpis: Sadržaj registra f umanji za 1

Ako je d = 0 rezultat smesti u akumulator WAko je d = 1 rezultat smesti u registar f

Operacija: (f) – 1 → dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: ZBr. reči: 1Br. ciklusa: 1

Primer A.18:DECF REG, 1 ;Umanji sadržaj registra REG za 1 i smesti rezultat u registar

REG

Pre instrukcije: REG = 0x01Z = 0

Posle instrukcije: REG = 0x00Z = 1

A.19 RLF Rotiraj sadržaj registra f na levo preko CARRY-a

Sintaksa: RLF f, dOpis: Sadržaj registra f se rotira za jedno mesto na levo preko markera

(markera) C (CARRY)Ako je d = 0 rezultat smesti u akumulator WAko 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: CBr. reči: 1Br. 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 0110C = 0

Posle instrukcije: REG = 1110 0110

22

Page 23: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

W = 1100 1101C = 1

A.20 RRF Rotiraj sadržaj registra f na desno preko CARRY-a

Sintaksa: RRF f, dOpis: Sadržaj registra f se rotira za jedno mesto na desno preko markera

(markera) C (CARRY) Ako je d = 0 rezultat smesti u akumulator WAko 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: CBr. reči: 1Br. 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 0110W = xC = 0

Posle instrukcije: REG = 1110 0110W = 0111 0011C = 1

A.21 COMF Komplementiraj sadržaj registra f

Sintaksa: COMF f, dOpis: Sadržaj registra f se komplementira

Ako je d = 0 rezultat smesti u akumulator WAko je d = 1 rezultat smesti u registar f

Operacija: → dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: ZBr. reči: 1Br. 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)

A.22 BCF Resetuj bit b u registru f

23

Page 24: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Sintaksa: BCF f, bOpis: Resetuje se bit na poziciji b u registru fOperacija: 0 → f<b>Operand: 0 ≤ f ≤ 127

0 ≤ b ≤ 7Marker: -Br. reči: 1Br. 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, bOpis: Postavi bit na poziciji b u registru fOperacija: 1 → f<b>Operand: 0 ≤ f ≤ 127

0 ≤ b ≤ 7Marker: -Br. reči: 1Br. 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, bOpis: 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>) = 0Operand: 0 ≤ f ≤ 127

0 ≤ b ≤ 7Marker: -Br. reči: 1Br. ciklusa: 1 ili 2 u zavisnosti od bita bPrimer A.24:

LAB_01 BTFSC REG, 1 ; proveri bit broj 1 u registru REGLAB_02 ......................... ;preskoči ovu liniju ako je bit jednak 0LAB_03 ......................... ;skoči na ovu liniju ako je bit jednak 1

24

Page 25: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

pokazuje na adresu LAB_03Ako 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, bOpis: 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>) = 1Operand: 0 ≤ f ≤ 127

0 ≤ b ≤ 7Marker: -Br. reči: 1Br. ciklusa: 1 ili 2 u zavisnosti od bita b

Primer A.25:LAB_01 BTFSS REG, 1 ; proveri bit broj 1 u registru REGLAB_02 ......................... ;preskoči ovu liniju ako je bit jednak 1LAB_03 ......................... ;skoči na ovu liniju ako je bit jednak 0

Pre instrukcije: Programski brojač je bio na adresi LAB_01Posle instrukcije: Ako je prvi bit u registru REG jedinica onda programski brojač

pokazuje na adresu LAB_03Ako 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, dOpis: Sadržaj registra f se uvećava za 1

Ako je d = 0 rezultat smesti u akumulator WAko je d = 1 rezultat smesti u registar fAko je rezultat jednak nuli, sledeća instrukcija se izvršava kao NOP, tako da tekuća instrukcija ima 2 ciklusa

Operacija: (f) + 1→ dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: -Br. reči: 1Br. ciklusa: 1 ili 2 u zavisnosti od rezultataPrimer A.26:

LAB_01 INCFSZ REG, 1 ; uvećaj sadržaj REG za 1LAB_02 ......................... ;preskoči ovu liniju ako je jednak 0LAB_03 ......................... ;skoči na ovu liniju ako je jednak 1

Pre instrukcije: Programski brojač je pokazivao na adresu LAB_01

25

Page 26: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Posle instrukcije: REG = REG + 1, i ako je sada REG=0 programski brojač će pokazivati na adresu LAB_03. U suprotnom će pokazivati naadresu LAB_02

A.27 DECFSZ Dekrementiraj registar f za 1, preskoči narednu instrukciju ako jerezultat jednak nuli

Sintaksa: DECFSZ f, dOpis: Sadržaj registra f se umanjuje za 1

Ako je d=0 rezultat smesti u akumulator WAko je d=1 rezultat smesti u registar fAko je rezultat jednak nuli, narednainstrukcija se izvršava kao NOP,tako da tekuća instrukcija ima 2 ciklusa

Operacija: (f) - 1→ dOperand: 0 ≤ f ≤ 127

d є [0,1]Marker: -Br. reči: 1Br. ciklusa: 1 ili 2 u zavisnosti od rezultata

Primer A.27:LAB_01 DECFSZ CNT, 1 ; umanji sadržaj REG za 1LAB_02 ......................... ;preskoči ovu liniju ako je jednak 0LAB_03 ......................... ;skoči na ovu liniju ako je jednak 1

Pre instrukcije: Programski brojač je pokazivao na adresu LAB_01Posle instrukcije: CNT = CNT -1, i ako je sada CNT = 0 programski brojač će

pokazivati na adresu LAB_03. U suprotnom će pokazivati naadresu LAB_02.

A.28 GOTO Skoči (idi) na adresu

Sintaksa: GOTO kOpis: Bezuslovni skok na adresu kOperacija: k → PC<10:0>, (PCLATH<4:3>) → PC<12:11>Operand: 0 ≤ k ≤ 2048Marker: -Br. reči: 1Br. 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_00Posle instrukcije: Programski brojač pokazuje adresu LAB_01

A. 29 CALL Pozovi program

26

Page 27: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Sintaksa: CALL kOpis: 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 ≤ 2048Marker: -Br. reči: 1Br. ciklusa: 2

Primer A.29:LAB_01 CALL LAB_02 ;pozovi potprogram LAB_02. ..LAB_02 ........................

Pre instrukcije: Programski brojač je pokazivao adresu LAB_01TOS = x

Posle instrukcije: Programski brojač je pokazivao adresu LAB_02TOS = 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: 1Br. ciklusa. 2

Primer A.30:RETURNPre instrukcije: PC = x

TOS = xPosle instrukcije: PC = TOS

TOS = TOS – 1

A.31 RETLW Povratak iz potprograma, konstanta se smešta u akumulator W

Sintaksa: RETLW kOpis: 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 → PCOperand: 0 ≤ k ≤ 255Marker: -Br. reči: 1Br. ciklusa: 2

Primer A.31:

27

Page 28: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

RETLW 0x43

Pre instrukcije: W = xPC = xTOS = x

Posle instrukcije: W = 0x43PC = TOSTOS = TOS – 1

A.32 RETFIE Povratak iz interapta (prekida)

Sintaksa: RETFIEOpis: 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 → GIEOperand: -Marker: -Br. reči: 1Br. ciklusa. 2

Primer A.32:RETFIE

Pre instrukcije: PC = xGIE = 0

Posle instrukcije: PC = TOSGIE = 1

A.33 NOP Bez operacija (instrukcija)

Sintaksa: NOPOpis: Ne izvršava nikakvu operaciju i ne utiče na markere Operacija: -Operand: -Marker: -Br. reči: 1Br. ciklusa. 1Primer A.33:NOP

Pre instrukcije: PC = xPosle instrukcije: PC = x + 1

A.34 CLRWDT Iniciraj Watchdog tajmer

Sintaksa: CLRWDTOpis: Watchdog tajmer se resetuje. Preskaler ovog tajmera se takođe

resetuje, takođe se postavljaju i statusni bitovi TO i PD .Operacija: 0 → WDT

28

Page 29: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

0 → WDT preskaler1 → TO1 → PD

Operand: -Marker: PD , TOBr. reči: 1Br. ciklusa. 1Primer A.34:CLRWDT

Pre instrukcije: WDT brojač = xWDT preskaler = 1:128

Posle instrukcije: WDT brojač = 0x00WDT preskaler broajč = 0 TO = 1PD = 1WDT preskaler = 1:128

A.35 SLEEP Stanje pripravnosti (STAND BY mod)

Sintaksa: SLEEPOpis: 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 seresetuju.

Operacija: 0 → WDT0 → WDT preskaler1 → TO0 → PD

Operand: -Marker: PD , TOBr. reči: 1Br. ciklusa. 1Primer A.35:SLEEP

Pre instrukcije: WDT brojač = xWDT preskaler = x

Posle instrukcije: WDT brojač = 0x00WDT preskaler = 0TO = 1PD = 0

4. PIC Simulator IDE 29

Page 30: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

Komande menija SIMULATION

30

Page 31: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

Komande menija RATE

31

Page 32: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

Komande menija Tools

32

Page 33: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

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.

33

Page 34: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Hardware Stack Viewer – Pregled magacina (Stack) mikrokontrolera.

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

34

Page 35: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

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

35

Page 36: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

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.

36

Page 37: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

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.

37

Page 38: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

Keypad Matrix – Ovom opcijom se aktivira tastatura 4x4

38

Page 39: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

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

39

Page 40: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

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

40

Page 41: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

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

41

Page 42: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

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

42

Page 43: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Komande menija Options:

Save Positions – Ukoliko se ova opcija selektuje, pozicije prozora na ekranu biće «zapamćene».

Select Microcontroller – Izbor mikrokontrolera sa liste.

Change Clock Frequency – Izbor frekvencije takta

43

Page 44: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

44

Page 45: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

5. Primeri

45

Page 46: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 20hb EQU 0x21 ;adresa broja b je 21hMOVLW 0x6F ;vrednost broja b se smešta u akumulator MOVWF 0x21 ;sadržaj akumulatora se smešta na lokaciju 21hMOVLW 0x16 ;vrednost broja a se smešta u akumulatorMOVWF 0x20 ;sadržaj akumulatora se smešta na lokaciju 20hADDWF 0x21,W ;vrsi se sabiranje vrednosti u akumulatoru i

broja ;b koji se nalazi na lokaciji 21hMOVWF 0x20 ;rezultat se smešta na lokaciju 20h

L0001: GOTO L0001END

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

46

Page 47: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 20hb EQU 0x21 ;adresa broja b je 21hMOVLW 0x6F ;u akumulator se smešta vrednost broja bMOVWF 0x21 ;sadržaj akumulatroa se smešta na lokaciju 21hMOVLW 0x16 ;u akumulator se smešta vrednost broja a MOVWF 0x20 ;sadržaj akumulatora se smešta na lokaciju 20hSUBWF 0x21,W ;vrsi se oduzimanje vrednosti broja b i vrednosti u MOVWF 0x20 ;akumulatoru i rezultat smestamo na lokaciju 20h

L0001: GOTO L0001END

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)

47

Page 48: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

a EQU 0x20 ;adresa broja a je 20hb EQU 0x21 ;adresa broja b je 21hMOVLW %11110000 ;upisivanje binarne vrednosti broja a MOVWF 0x20 ;preko akumulatoraMOVLW %01010101 ;upisivanje binarne vrednosti broja bMOVWF 0x21 ;preko akumulatoraXORWF 0x20 ;XOR operacija (20h)XOR(W)→ (20h)MOVF 0x20,W ;upisivanje vrednosti sa (20h) u akumulatorXORWF 0x21 ;XOR operacija (21h)XOR(W)→ (21h)MOVF 0x21,W ;upisivanje vrednosti sa (20h) u akumulatorXORWF 0x20 ;XOR operacija (20h)XOR(W)→ (20h)

L0001: GOTO L0001END

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 akumulatoraL0001 GOTO L0001

END

EP5. Kreirati program koji vrši upis brojeva x = 0x42, y =0xAACC i u =0xB1 sukcesivno

48

Page 49: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

počev od lokacije 0x20 u registrima opšte namene.

x EQU 0x20 ;Adresa broja x je 0x20y EQU 0x21 ;Adrese broja y su 0x21 i 0x22 (u pitanju je rec)u EQU 0x23 ;Adresa broja u je 0x22MOVLW 0x42 ;Vrednost x se upisuje preko akumulatoraMOVWF 0x20MOVLW 0xCCMOVWF 0x21 ;Vrednost y se upisuje preko akumulatoraMOVLW 0xAAMOVWF 0x22MOVLW 0xB1MOVWF 0x23 ;Vrednost u se upisuje preko akumulatora

L0001: GOTO L0001END

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 izlazniCLRF 0x06BCF STATUS,RP0MOVLW 0xAA ;Port B uzima vrednost 0xAAMOVWF 0x06MOVLW 0x55 ;Port B uzima vrednost 0x55MOVWF 0x06CLRF 0x06 ;Port B uzima vrednost 0x00

L0001: GOTO L0001END

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 izlazniCLRF 0x06BCF STATUS,RP0BSF STATUS,RP0 ;Port C je ulazniMOVLW 0xFFMOVWF 0x07BCF STATUS,RP0BSF STATUS,RP0 ;Port D je ulazniMOVLW 0xFFMOVWF 0x08BCF STATUS,RP0MOVF 0x07,W ;Operacija PORTB = PORTD - PORTCSUBWF 0x08,WMOVWF 0x06MOVF 0x08,W ;Operacija PORTB = PORTD + PORTCADDWF 0x07,WMOVWF 0x06

L0001: GOTO L0001 END

49

Page 50: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 20hBSF STATUS,RP0 ;Port B je izlazniCLRF 0x06BCF STATUS,RP0BSF STATUS,RP0 ;Port C je ulazniMOVLW 0xFFMOVWF 0x07BCF STATUS,RP0BSF STATUS,RP0 ;Port D je ulazniMOVLW 0xFFMOVWF 0x08BCF STATUS,RP0MOVF 0x07,W ;Operacija PORTB = PORTC Xor PORTDMOVWF R0LMOVF 0x08,WXORWF R0L,WMOVWF 0x06

L0001: GOTO L0001END

50

Page 51: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 aTRISB = %00000000 ;pinovi Porta B su izlaziSymbol 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 unapreddisplay = aNext a

For a = 0 To 255 ;Brojanje unazaddisplay = 255 - aNext a

51

Page 52: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 0x21R1L EQU 0x22R1H EQU 0x23R2L EQU 0x24R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BORG 0x0000 ;početak programske sekvenceBCF PCLATH,3BCF PCLATH,4GOTO L0001ORG 0x0004RETFIE

L0001:;Dim a As Byte 'definisanje promenljive a'

a EQU 0x2C ;adresa promenljive a je 2ChBSF STATUS,RP0 ;TRISB = %00000000 'pinovi Porta B su izlazni'CLRF 0x06BCF 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 0x2CL0002:

MOVF 0x2C,WSUBLW 0xFFBTFSS STATUS,CGOTO L0003

; display = aMOVF 0x2C,WMOVWF 0x06

; Next aMOVLW 0x01ADDWF 0x2C,FBTFSS STATUS,CGOTO L0002

L0003: MOVLW 0x1FANDWF STATUS,F

;Brojanje unazad;For a = 0 To 255

CLRF 0x2CL0004:

MOVF 0x2C,WSUBLW 0xFF

52

Page 53: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

BTFSS STATUS,CGOTO L0005

; display = 255 - aMOVF 0x2C,WSUBLW 0xFFMOVWF 0x06

; Next aMOVLW 0x01ADDWF 0x2C,FBTFSS STATUS,CGOTO L0004

L0005: MOVLW 0x1FANDWF STATUS,F

; kraj programaL0006: GOTO L0006

; kraj listingaEND

53

Page 54: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Algoritam programa Brojac

54

Page 55: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

55

Page 56: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

56

Page 57: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Slika 4. Učitavanje heksadecimalnog fajla

Slika 5. Učitavanje asemblera

57

Page 58: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Slika 6. Učitavanje asemblerskog fajla

58

Page 59: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Slika 7. Prevođenje asemblerskog fajla

Slika 8. Podešavanje brzine simulacije

59

Page 60: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Slika 9. Aktiviranje prozora Microcontroller View

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

60

Page 61: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 aFor a = 0 To 31 ;Petlja za popunjavanje prvih 32 lokacija EEPROM - aWrite a, a ;na memorijskoj lokaciji a upisati vrednost aNext a

Listing asemblerskog programa:

; početakR0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 do

;adrese 0x2B) PIC Simulator rezervise za 4-bajtneR0H EQU 0x21 ;promenljive R0-R5R1L EQU 0x22R1H EQU 0x23

61

Page 62: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

R2L EQU 0x24R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BORG 0x0000BCF PCLATH,3BCF PCLATH,4GOTO L0001ORG 0x0004 ;početak programske sekvenceRETFIE

L0001:;Dim a As Byte 'definisanje promenljive a'

a EQU 0x2C ;adresa promenljive a je 0x2CCLRF 0x2C ;Petlja za popunjavanje prve 32 lokacije EEPROM - a

L0002:MOVF 0x2C,WSUBLW 0x1FBTFSS STATUS,CGOTO L0003

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

MOVF 0x2C,WBSF STATUS,RP1MOVWF EEADRBCF STATUS,RP1MOVF 0x2C,WBSF STATUS,RP1MOVWF EEDATABSF STATUS,RP0BCF EECON1,EEPGDBSF EECON1,WRENMOVLW 0x55MOVWF EECON2MOVLW 0xAAMOVWF EECON2BSF EECON1,WR

L0004: BTFSC EECON1,WRGOTO L0004BCF EECON1,WRENBCF STATUS,RP1BCF STATUS,RP0BCF PIR2,EEIF

;Next aMOVLW 0x01ADDWF 0x2C,FBTFSS STATUS,CGOTO L0002

L0003: MOVLW 0x1FANDWF STATUS,F

; kraj programaL0005: GOTO L0005

; kraj listingaEND

62

Page 63: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

63

Page 64: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 izlaznogTRISA = %111111 ;definisanje Porta A kao ulaznogADCON0 = 0xc0 ;postavljanje takta A/D konverzije na interni

;izvorADCON1 = 0h ;definisanje pinova Porta A kao analognihHigh ADCON0.ADON ;Ukljucivanje ADC modula mikrokontrolera

main: ;Glavni programGosub getadresult ;skok na potprogram za konverzijudisplay = ADRESH ;prikaz rezultata A/D konverzijeGoto main ;ponovi beskonacnu petljuEndgetadresult: ;Potprogram koji vrsi A/D konverzijuHigh ad_start ;start A/D konverzijeWhile ad_start ;sacekati dok se konverzija ne zavrsiWend

64

Page 65: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

ReturnListing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 doR0H EQU 0x21 ;adrese 0x2B) PIC simulator rezerviše za 4-bajtneR1L EQU 0x22 ;promenljive R0-R5R1H EQU 0x23R2L EQU 0x24R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BORG 0x0000 ;početak programske sekvenceBCF PCLATH,3BCF PCLATH,4GOTO L0003ORG 0x0004RETFIE

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 0x6BSF STATUS,RP0 ;TRISB = %00000000 'definisanje Porta B kaoCLRF 0x06 ;izlaznogBCF STATUS,RP0BSF STATUS,RP0 ;TRISA = %111111 'definisanje Porta A kao ulaznogMOVLW 0x3FMOVWF 0x05BCF STATUS,RP0MOVLW 0xC0 ;ADCON0 = 0xc0 postavlj. takta A/D konverzije na

;interni izvorMOVWF 0x1FBSF STATUS,RP0 ;ADCON1 = 0h definisanje pinova Porta A kao

;analognihCLRF 0x1FBCF STATUS,RP0BSF 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 konverzijeMOVF 0x1E,WMOVWF 0x06GOTO L0001 ;Goto main 'ponovi beskonacnu petlju

;EndL0004: GOTO L0004

;Potprogram koji vrsi A/D konverziju;getadresult:

L0002:

65

Page 66: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

;High ad_start 'start A/D konverzijeBSF 0x1F,2

;While ad_start sacekati dok se konverzija ne zavrsiL0005:

BTFSS 0x1F,2GOTO L0006

;WendGOTO L0005

L0006: MOVLW 0x1FANDWF STATUS,F

;ReturnRETURN

;kraj programaL0007: GOTO L0007

; kraj listingaEND

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

66

Page 67: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Program i potrpogram za A/D konverziju

Slika 13. Praćenje A/D konverzije

67

Page 68: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 aDim b As Byte ;definisanje broja bDim x As Byte ;definisanje broja xDim y As Word ;definisanje rezultata y

a = 224 ;dodeljivanje vrednosti brojevima a, b i cb = 120x = 48y = (a + b) * x ;izracunavanje rezultata

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adreseR0H EQU 0x21 ;0x20 do adrese 0x2B) PIC Simulator rezerviseR1L EQU 0x22 ;za 4-bajtne promenljive R0-R5R1H EQU 0x23R2L EQU 0x24R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BORG 0x0000BCF PCLATH,3BCF PCLATH,4GOTO L0001ORG 0x0004RETFIE

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 2FhMOVLW 0xE0 ;dodeljivanje vrednosti brojevima a, b i c

;a = 224MOVWF 0x2CMOVLW 0x78 ;b = 120

68

Page 69: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

MOVWF 0x2DMOVLW 0x30 ;x = 48MOVWF 0x2EMOVF 0x2C,W ;y = (a + b) * x 'izracunavanje rezultataADDWF 0x2D,WMOVWF 0x2FCLRWBTFSC STATUS,CADDLW 0x01ADDLW 0x00MOVWF 0x30MOVF 0x2F,WMOVWF R3LMOVF 0x30,WMOVWF R3HMOVF 0x2E,WMOVWF R1LCLRF R1HCALL M001MOVWF 0x2FMOVF R2H,WMOVWF 0x30

; kraj programaL0002: GOTO L0002

; rutina množenjaM001: MOVLW 0x10

MOVWF R4LCLRF R0HCLRF R0L

M002: RRF R3H,FRRF R3L,FBTFSS STATUS,CGOTO M003MOVF R1L,WADDWF R0L,FMOVF R1H,WBTFSC STATUS,CINCFSZ R1H,WADDWF R0H,F

M003: RRF R0H,FRRF R0L,FRRF R2H,FRRF R2L,FDECFSZ R4L,FGOTO M002MOVF R2L,WRETURN

; kraj listingaEND

69

Page 70: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

70

Page 71: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 adresaDim b As Byte ;eeprom podatakTRISB = %00000000 ;definisanje pinova Porta B kao izlaznogSymbol display = PORTB ;prikaz stanja na LED na Portu B

For a = 0 To 127 b = 128 + a ;vrednost koja se upisuje na adresi aWrite a, b ;upis u EEPROM memorijuNext a

For a = 0 To 127 WaitMs 1 ;pauza 1ms, kako bi se uocio procesRead a, b ;Citanje podatka b sa adrese adisplay = b ; prikaz na Portu BNext a ;Sledeca adresaWaitMs 5 ' pauza 5msdisplay = 0 ' prikaz 0=(00000000)b na Portu B

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 doR0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtneR1L EQU 0x22 ;promenljive R0-R5R1H EQU 0x23R2L EQU 0x24R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BORG 0x0000BCF PCLATH,3BCF PCLATH,4GOTO L0001ORG 0x0004RETFIE

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 0x2DBSF STATUS,RP0 ;TRISB = %00000000 definisanje pinova Porta B kaoCLRF 0x06 ;izlaznog

71

Page 72: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 0x2CL0002:

MOVF 0x2C,WSUBLW 0x7FBTFSS STATUS,CGOTO L0003MOVLW 0x80 ;b = 128 + a vrednost koja se upisuje na adresu aADDWF 0x2C,WMOVWF 0x2DMOVF 0x2C,W ;Write a, b upis u EEPROM memorijuBSF STATUS,RP1MOVWF EEADRBCF STATUS,RP1MOVF 0x2D,WBSF STATUS,RP1MOVWF EEDATABSF STATUS,RP0BCF EECON1,EEPGDBSF EECON1,WRENMOVLW 0x55MOVWF EECON2MOVLW 0xAAMOVWF EECON2BSF EECON1,WR

L0004: BTFSC EECON1,WRGOTO L0004BCF EECON1,WRENBCF STATUS,RP1BCF STATUS,RP0BCF PIR2,EEIF

;Next aMOVLW 0x01ADDWF 0x2C,FBTFSS STATUS,CGOTO L0002

L0003: MOVLW 0x1FANDWF STATUS,F

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

L0005:MOVF 0x2C,WSUBLW 0x7FBTFSS STATUS,CGOTO L0006

;WaitMs 1 pauza 1ms, kako bi se uocio procesMOVLW 0x01MOVWF R0LCLRF R0HCALL W001MOVF 0x2C,W ;Read a, b Citanje podatka b sa adrese aBSF STATUS,RP1MOVWF EEADRBSF STATUS,RP0

72

Page 73: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

BCF EECON1,EEPGDBSF EECON1,RDNOPBCF STATUS,RP0MOVF EEDATA,WBCF STATUS,RP1MOVWF 0x2D

;display = b prikaz na Portu BMOVF 0x2D,WMOVWF 0x06

;Next a Sledeca adresaMOVLW 0x01ADDWF 0x2C,FBTFSS STATUS,CGOTO L0005

L0006: MOVLW 0x1FANDWF STATUS,F

;WaitMs 5 pauza 5msMOVLW 0x05MOVWF R0LCLRF R0HCALL W001

;display = 0 prikaz 0=(00000000)b na Portu BCLRF 0x06

; kraj programaL0007: GOTO L0007

; rutina kasnjenjaW001: MOVF R0L,F

BTFSC STATUS,ZGOTO W002CALL W003DECF R0L,FNOPNOPNOPNOPNOPGOTO W001

W002: MOVF R0H,FBTFSC STATUS,ZRETURNCALL W003DECF R0H,FDECF R0L,FGOTO W001

W003: MOVLW 0x0CMOVWF R2H

W004: DECFSZ R2H,FGOTO W004NOPNOPMOVLW 0x12MOVWF R1L

W005: DECFSZ R1L,FGOTO W006CALL W007CALL W007NOP

73

Page 74: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

NOPRETURN

W006: CALL W007GOTO W005

W007: MOVLW 0x0DMOVWF R2L

W008: DECFSZ R2L,FGOTO W008NOPRETURN

; kraj listingaEND

Slika 15. Praćenje operacije upisa u EEPROM mikrokontrolera

74

Page 75: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 3Define ADC_SAMPLEUS = 10 ;default-na vrednost je 20Define LCD_BITS = 8 ;dopustene vrednosti su 4 i 8 - broj interfejsnih

;linija za podatkeDefine LCD_DREG = PORTBDefine LCD_DBIT = 0 ;0 ili 4 za 4-bitni interfejs

75

Page 76: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Define LCD_RSREG = PORTDDefine LCD_RSBIT = 1Define LCD_EREG = PORTDDefine LCD_EBIT = 3Define LCD_RWREG = PORTD ;postavi na 0, ako se ne koristi, 0 je

;default-naDefine LCD_RWBIT = 2 ;postavi na 0, ako se ne korist; 0 je default-naDefine LCD_COMMANDUS = 2000 ;kasnjenje posle LCDCMDOUT, default-na

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

;100Define 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 WordDim an1 As WordDim x0 As WordDim x1 As WordDim x2 As WordDim x3 As WordDim x4 As WordDim x5 As WordTRISA = 0xff ;definisanje pinova Porta A kao ulaznihADCON1 = 0 ;definisanje pinova Porta A kao analognih

Lcdinit ;inicijalizacija LCD modulaloop:

Adcin 0, an0x0 = (5 * an0) / 1023x1 = (48 * ((an0 + 2) - (x0 * 205))) / 100Lcdcmdout LcdClear ;brisanje LCD displeja

Lcdout "Napon na pinu A0" ;tekst prve linijeLcdcmdout LcdLine2Home ;postavljanje kursora na pocetak 2.linijeLcdout "iznosi: ", #x0, ".", #x1, "V" ;nacin formatiranja teksta

;2.linijeWaitMs 2 ;kasnjenje 2msAdcin 1, an1x2 = (5 * an1) / 1023x3 = (48 * ((an1 + 2) - (x2 * 205))) / 100Lcdcmdout LcdClear ;brisanje LCD displejaLcdout "Napon na pinu A1" ;tekst prve linijeLcdcmdout LcdLine2Home ;postavljanje kursora na pocetak 2.linijeLcdout "iznosi: ", #x2, ".", #x3, "V" ;nacin formatiranja teksta

;2.linijeWaitMs 2 ;kasnjenje 2msGoto loop ;beskonacna petlja

76

Page 77: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

Listing asemblerskog programa:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 doR0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtneR1L EQU 0x22 ;promenljive R0-R5R1H EQU 0x23R2L EQU 0x24R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BORG 0x0000 ;početak programske sekvenceBCF PCLATH,3BCF PCLATH,4GOTO L0002ORG 0x0004RETFIE

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

77

Page 78: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

;22: Dim x3 As Wordx3 EQU 0x36 ;adresa 'x3' je 0x36

;23: Dim x4 As Wordx4 EQU 0x38 ;adrsea 'x4' je 0x38

;24: Dim x5 As Wordx5 EQU 0x3A ;adresa 'x5' je 0x3A

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

BSF STATUS,RP0MOVLW 0xFFMOVWF 0x05BCF STATUS,RP0

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

BSF STATUS,RP0CLRF 0x1FBCF STATUS,RP0

;27: ;28: Lcdinit 'inicijalizacija LCD modula

BCF 0x08,3BCF 0x08,1BCF 0x08,2BSF STATUS,RP0BCF 0x08,3BCF 0x08,1BCF 0x08,2CLRF 0x06BCF STATUS,RP0MOVLW 0x02MOVWF R0LMOVLW 0x00MOVWF R0HCALL W001MOVLW 0x33CALL LC02MOVLW 0x33CALL LC02MOVLW 0x33CALL LC02MOVLW 0x38CALL LC02MOVLW 0x0CCALL LC02MOVLW 0x01CALL LC02

;29: petlja L0001:

;30: ;31: Adcin 0, an0

BSF STATUS,RP0BSF ADCON1,ADFMMOVLW 0x00BCF STATUS,RP0MOVWF R0LCALL A001BSF STATUS,RP0MOVF ADRESL,WBCF STATUS,RP0

78

Page 79: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

MOVWF 0x2CMOVF ADRESH,WMOVWF 0x2D

;32: x0 = (5 * an0) / 1023MOVLW 0x05MOVWF R3LCLRF R3HMOVF 0x2C,WMOVWF R1LMOVF 0x2D,WMOVWF R1HCALL M001MOVWF 0x30MOVF R2H,WMOVWF 0x31MOVF 0x30,WMOVWF R0LMOVF 0x31,WMOVWF R0HMOVLW 0xFFMOVWF R1LMOVLW 0x03MOVWF R1HCALL D001MOVWF 0x30MOVF R0H,WMOVWF 0x31

;33: x1 = (48 * ((an0 + 2) - (x0 * 205))) / 100MOVF 0x2C,WADDLW 0x02MOVWF 0x32MOVF 0x2D,WBTFSC STATUS,CADDLW 0x01ADDLW 0x00MOVWF 0x33MOVF 0x30,WMOVWF R3LMOVF 0x31,WMOVWF R3HMOVLW 0xCDMOVWF R1LCLRF R1HCALL M001MOVWF 0x3CMOVF R2H,WMOVWF 0x3DMOVF 0x3C,WSUBWF 0x32,WMOVWF 0x32MOVF 0x3D,WBTFSS STATUS,CADDLW 0x01SUBWF 0x33,WMOVWF 0x33MOVLW 0x30MOVWF R3LCLRF R3H

79

Page 80: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

MOVF 0x32,WMOVWF R1LMOVF 0x33,WMOVWF R1HCALL M001MOVWF 0x32MOVF R2H,WMOVWF 0x33MOVF 0x32,WMOVWF R0LMOVF 0x33,WMOVWF R0HMOVLW 0x64MOVWF R1LCLRF R1HCALL D001MOVWF 0x32MOVF R0H,WMOVWF 0x33

;34: Lcdcmdout LcdClear 'brisanje LCD displejaMOVLW 0x01CALL LC02

;35: Lcdout "Napon na pinu A0" 'tekst prve linijeMOVLW 0x4ECALL LC01MOVLW 0x61CALL LC01MOVLW 0x70CALL LC01MOVLW 0x6FCALL LC01MOVLW 0x6ECALL LC01MOVLW 0x20CALL LC01MOVLW 0x6ECALL LC01MOVLW 0x61CALL LC01MOVLW 0x20CALL LC01MOVLW 0x70CALL LC01MOVLW 0x69CALL LC01MOVLW 0x6ECALL LC01MOVLW 0x75CALL LC01MOVLW 0x20CALL LC01MOVLW 0x41CALL LC01MOVLW 0x30CALL LC01

;36: Lcdcmdout LcdLine2Home 'postavljanje kursora ;na pocetak 2.linije

MOVLW 0xC0

80

Page 81: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

CALL LC02;37: Lcdout "iznosi: ", #x0, ".", #x1, "V" 'nacin ;formatiranja teksta 2.linije

MOVLW 0x69CALL LC01MOVLW 0x7ACALL LC01MOVLW 0x6ECALL LC01MOVLW 0x6FCALL LC01MOVLW 0x73CALL LC01MOVLW 0x69CALL LC01MOVLW 0x3ACALL LC01MOVLW 0x20CALL LC01MOVF 0x30,WMOVWF R2LMOVF 0x31,WMOVWF R2HCALL LC21MOVLW 0x2ECALL LC01MOVF 0x32,WMOVWF R2LMOVF 0x33,WMOVWF R2HCALL LC21MOVLW 0x56CALL LC01

;38: WaitMs 2 kasnjenje 2msMOVLW 0x02MOVWF R0LCLRF R0HCALL W001

;39: Adcin 1, an1BSF STATUS,RP0BSF ADCON1,ADFMMOVLW 0x01BCF STATUS,RP0MOVWF R0LCALL A001BSF STATUS,RP0MOVF ADRESL,WBCF STATUS,RP0MOVWF 0x2EMOVF ADRESH,WMOVWF 0x2F

;40: x2 = (5 * an1) / 1023MOVLW 0x05MOVWF R3LCLRF R3HMOVF 0x2E,WMOVWF R1LMOVF 0x2F,W

81

Page 82: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

MOVWF R1HCALL M001MOVWF 0x34MOVF R2H,WMOVWF 0x35MOVF 0x34,WMOVWF R0LMOVF 0x35,WMOVWF R0HMOVLW 0xFFMOVWF R1LMOVLW 0x03MOVWF R1HCALL D001MOVWF 0x34MOVF R0H,WMOVWF 0x35

;41: x3 = (48 * ((an1 + 2) - (x2 * 205))) / 100MOVF 0x2E,WADDLW 0x02MOVWF 0x36MOVF 0x2F,WBTFSC STATUS,CADDLW 0x01ADDLW 0x00MOVWF 0x37MOVF 0x34,WMOVWF R3LMOVF 0x35,WMOVWF R3HMOVLW 0xCDMOVWF R1LCLRF R1HCALL M001MOVWF 0x3CMOVF R2H,WMOVWF 0x3DMOVF 0x3C,WSUBWF 0x36,WMOVWF 0x36MOVF 0x3D,WBTFSS STATUS,CADDLW 0x01SUBWF 0x37,WMOVWF 0x37MOVLW 0x30MOVWF R3LCLRF R3HMOVF 0x36,WMOVWF R1LMOVF 0x37,WMOVWF R1HCALL M001MOVWF 0x36MOVF R2H,WMOVWF 0x37MOVF 0x36,WMOVWF R0L

82

Page 83: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

MOVF 0x37,WMOVWF R0HMOVLW 0x64MOVWF R1LCLRF R1HCALL D001MOVWF 0x36MOVF R0H,WMOVWF 0x37

;42: Lcdcmdout LcdClear 'brisanje LCD displejaMOVLW 0x01CALL LC02

;43: Lcdout "Napon na pinu A1" 'tekst prve linijeMOVLW 0x4ECALL LC01MOVLW 0x61CALL LC01MOVLW 0x70CALL LC01MOVLW 0x6FCALL LC01MOVLW 0x6ECALL LC01MOVLW 0x20CALL LC01MOVLW 0x6ECALL LC01MOVLW 0x61CALL LC01MOVLW 0x20CALL LC01MOVLW 0x70CALL LC01MOVLW 0x69CALL LC01MOVLW 0x6ECALL LC01MOVLW 0x75CALL LC01MOVLW 0x20CALL LC01MOVLW 0x41CALL LC01MOVLW 0x31CALL LC01

;44: Lcdcmdout LcdLine2Home 'postavljanje kursora ;na pocetak 2.linije

MOVLW 0xC0CALL LC02

;45: Lcdout "iznosi: ", #x2, ".", #x3, "V" 'nacin ;formatiranja teksta 2.linije

MOVLW 0x69CALL LC01MOVLW 0x7ACALL LC01MOVLW 0x6ECALL LC01MOVLW 0x6F

83

Page 84: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

CALL LC01MOVLW 0x73CALL LC01MOVLW 0x69CALL LC01MOVLW 0x3ACALL LC01MOVLW 0x20CALL LC01MOVF 0x34,WMOVWF R2LMOVF 0x35,WMOVWF R2HCALL LC21MOVLW 0x2ECALL LC01MOVF 0x36,WMOVWF R2LMOVF 0x37,WMOVWF R2HCALL LC21MOVLW 0x56CALL LC01

;46: WaitMs 2 'kasnjenje 2msMOVLW 0x02MOVWF R0LCLRF R0HCALL W001

;47: ;48: Goto loop 'beskonacna petlja

GOTO L0001; kraj programa

L0003: GOTO L0003; rutina množenja

M001: MOVLW 0x10MOVWF R4LCLRF R0HCLRF R0L

M002: RRF R3H,FRRF R3L,FBTFSS STATUS,CGOTO M003MOVF R1L,WADDWF R0L,FMOVF R1H,WBTFSC STATUS,CINCFSZ R1H,WADDWF R0H,F

M003: RRF R0H,FRRF R0L,FRRF R2H,FRRF R2L,FDECFSZ R4L,FGOTO M002MOVF R2L,WRETURN

D001: MOVLW 0x10 ;rutina deljenja

84

Page 85: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

MOVWF R3LCLRF R2HCLRF R2L

D002: RLF R0H,WRLF R2L,FRLF R2H,FMOVF R1L,WSUBWF R2L,FMOVF R1H,WBTFSS STATUS,CINCFSZ R1H,WSUBWF R2H,FBTFSC STATUS,CGOTO D003MOVF R1L,WADDWF R2L,FMOVF R1H,WBTFSC STATUS,CINCFSZ R1H,WADDWF R2H,FBCF STATUS,C

D003: RLF R0L,FRLF R0H,FDECFSZ R3L,FGOTO D002MOVF R0L,WRETURN

; rutina kašnjenjaW001: MOVF R0L,F

BTFSC STATUS,ZGOTO W002CALL W003DECF R0L,FNOPNOPNOPNOPNOPGOTO W001

W002: MOVF R0H,FBTFSC STATUS,ZRETURNCALL W003DECF R0H,FDECF R0L,FGOTO W001

W003: MOVLW 0x0CMOVWF R2H

W004: DECFSZ R2H,FGOTO W004NOPNOPMOVLW 0x12MOVWF R1L

W005: DECFSZ R1L,FGOTO W006CALL W007CALL W007

85

Page 86: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

NOPNOPRETURN

W006: CALL W007GOTO W005

W007: MOVLW 0x0DMOVWF R2L

W008: DECFSZ R2L,FGOTO W008NOPRETURN

; rutina kašnjenja - Byte ArgumentX001: MOVLW 0x0A

SUBWF R4L,FBTFSS STATUS,CRETURNGOTO X002

X002: MOVLW 0x06SUBWF R4L,FBTFSS STATUS,CRETURNGOTO X002

; rutina kašnjenja - Word ArgumentY001: MOVLW 0x10

SUBWF R4L,FCLRWBTFSS STATUS,CADDLW 0x01SUBWF R4H,FBTFSS STATUS,CRETURNGOTO Y002

Y002: MOVLW 0x0ASUBWF R4L,FCLRWBTFSS STATUS,CADDLW 0x01SUBWF R4H,FBTFSS STATUS,CRETURNGOTO Y002

; Adcin rutinaA001: RLF R0L,F

RLF R0L,FRLF R0L,FMOVLW 0x38ANDWF R0L,FMOVLW 0xC1IORWF R0L,WMOVWF ADCON0MOVLW 0x0AMOVWF R4LCALL X001BSF ADCON0,GO

A002: BTFSC ADCON0,GOGOTO A002BCF PIR1,ADIFBCF ADCON0,ADON

86

Page 87: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

RETURNLC01: BSF 0x08,1 ; Lcdout rutinaBCF 0x08,2MOVWF 0x06BSF 0x08,3NOPBCF 0x08,3MOVLW 0x32MOVWF R4LCALL X001RETURN

LC02: BCF 0x08,1 ; Lcdcmdout rutinaBCF 0x08,2MOVWF 0x06BSF 0x08,3NOPBCF 0x08,3MOVLW 0xD0MOVWF R4LMOVLW 0x07MOVWF R4HCALL Y001RETURN

LC21: BSF R3H,7 ; Lcdout Decimal Conversion rutinaMOVLW 0x27MOVWF R1HMOVLW 0x10CALL LC22MOVLW 0x03MOVWF R1HMOVLW 0xE8CALL LC22CLRF R1HMOVLW 0x64CALL LC22CLRF R1HMOVLW 0x0ACALL LC22MOVF R2L,WGOTO LC23

LC22: MOVWF R1LMOVF R2H,WMOVWF R0HMOVF R2L,WMOVWF R0LCALL D001MOVF R0L,WBTFSS STATUS,ZBCF R3H,7BTFSC R3H,7RETURN

LC23: ADDLW 0x30CALL LC01RETURN

; kraj listingaEND

87

Page 88: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

88

Page 89: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 petljaFor i = 0 To 5If i > 2 Then

j = 5 - iElse

j = 0EndifNext i

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene(od adrese 0x20 doR0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtneR1L EQU 0x22 ;promenljive R0-R5. Konkretno, u ovom primeru nemaR1H EQU 0x23 ;potrebe za koriscenjem ovih promenljivih, aliR2L EQU 0x24 ;programer softvera je predvideo «rezervisanje»R2H EQU 0x25 ;prvih 12 registara za smestanje medjurezultataR3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BBCF PCLATH,3 ;Resetovanje bitova 3 i 4 u PCLATH-uBCF PCLATH,4GOTO L0001ORG 0x0004RETFIE ;Povratak iz prekida

;Povratak iz interaptaL0001:

;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. 0L0002:

;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

89

Page 90: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

;koja je u akumulatoru. Rezultat se smešta u WBTFSS STATUS,C ;Ispituje se status C flega koji ima vrednost 1

;dok je i≤5GOTO L0003

;5: If i > 2 Then;Ispituje da li je i>5 na isti nacin kao prethodno ;ispitivanje

MOVF 0x2C,WSUBLW 0x02BTFSC STATUS,CGOTO L0004

; 6: j = 5 - iMOVF 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 L0005L0004: 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 0x1FANDWF STATUS,F

; 10: Next i; Inkrementiranje promenljive

MOVLW 0x01 ; U akumulator se smesta vrednost 1ADDWF 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 1GOTO L0002

L0003: MOVLW 0x1FANDWF STATUS,F ;logička I operacija nad sadržajem akumulatora

;(to je 0x1F) i STATUS registromL0006: 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.

90

Page 91: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 petljaFor i = 0 To 9 ;Brojanje od 0 do 9j = i + 3 ;Uvecanje vrednosti i za 3Next i

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 doR0H EQU 0x21 ;adrese 0x2B)PIC Simulator rezervise za 4-bajtneR1L EQU 0x22 ;promenljive R0-R5. Konkretno, u ovom primeru nemaR1H EQU 0x23 ;potrebe za koriscenjem ovih promenljivih, aliR2L EQU 0x24 ;programer softvera je predvideo «rezervisanje»R2H EQU 0x25 ;prvih 12 registara za smestanje medjurezultataR3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BBCF PCLATH,3 ;Resetovanje bitova 3 i 4 u PCLATH-uBCF PCLATH,4GOTO L0001ORG 0x0004

91

Page 92: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

RETFIE ; Povratak iz prekidaL0001:

;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 0x2CL0002:

;Provera da li je promenljiva i dostigla vrednost 9 MOVF 0x2C,WSUBLW 0x09BTFSS STATUS,CGOTO L0003

;5: j = i + 3 'Uvecanje vrednosti i za 3MOVF 0x2C,W

;j = i + 3 'Uvecanje vrednosti i za 3ADDLW 0x03MOVWF 0x2D

; 6: Next iMOVLW 0x01

;Inkrementiranje i tako sto se u akumulator ADDWF 0x2C,F ;pribavi vrednost 1, a zatim sabere sa vrednošću

; na lokaciji 0x2CBTFSS STATUS,C ;Test bit C u STATUS, preskoči ako je 1

GOTO L0002L0003: 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 L0004END

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.

92

Page 93: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 ByteDim y As WordDim u As WordFor x = 10 To 8 Step -1 ;Prva FOR petljaFor y = 220 To 300 ;Druga FOR petljau = x + 2*y Next yNext x

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 doR0H EQU 0x21 ;adrese 0x2B) PIC Simulator rezervise za 4-bajtneR1L EQU 0x22 ;promenljive R0-R5R1H EQU 0x23R2L EQU 0x24R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27

93

Page 94: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BORG 0x0000BCF PCLATH,3BCF PCLATH,4GOTO L0001ORG 0x0004RETFIE

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 0x0AMOVWF 0x2C

L0002:MOVLW 0x08SUBWF 0x2C,WBTFSS STATUS,CGOTO L0003

; 7: 'Druga FOR petlja; 8: For y = 220 To 300

MOVLW 0xDCMOVWF 0x2DCLRF 0x2E

L0004:MOVF 0x2D,WMOVWF R0LMOVF 0x2E,WMOVWF R0HMOVLW 0x01MOVWF R1HMOVLW 0x2CCALL C006BTFSS STATUS,ZGOTO L0005

; 9: u = x + 2 * yMOVLW 0x02MOVWF R3LCLRF R3HMOVF 0x2D,WMOVWF R1LMOVF 0x2E,WMOVWF R1HCALL M001MOVWF 0x2FMOVF R2H,WMOVWF 0x30MOVF 0x2C,WADDWF 0x2F,W

94

Page 95: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

MOVWF 0x2FCLRWBTFSC STATUS,CADDLW 0x01ADDWF 0x30,WMOVWF 0x30

; 10: Next yMOVLW 0x01ADDWF 0x2D,FMOVLW 0x00BTFSC STATUS,CADDLW 0x01BTFSC STATUS,CGOTO L0005ADDWF 0x2E,FBTFSS STATUS,CGOTO L0004

L0005: MOVLW 0x1FANDWF STATUS,F

; 11: Next xMOVLW 0x01SUBWF 0x2C,FBTFSC STATUS,CGOTO L0002

L0003: MOVLW 0x1FANDWF STATUS,F

; Kraj programaL0006: GOTO L0006

; Rutina za mnozenjeM001: MOVLW 0x10

MOVWF R4LCLRF R0HCLRF R0L

M002: RRF R3H,FRRF R3L,FBTFSS STATUS,CGOTO M003MOVF R1L,WADDWF R0L,FMOVF R1H,WBTFSC STATUS,CINCFSZ R1H,WADDWF R0H,F

M003: RRF R0H,FRRF R0L,FRRF R2H,FRRF R2L,FDECFSZ R4L,FGOTO M002MOVF R2L,WRETURN

; Rutina za poredjenjeC001: MOVWF R1L

MOVLW 0x05GOTO C007

C002: MOVWF R1LMOVLW 0x02GOTO C007

95

Page 96: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

C003: MOVWF R1LMOVLW 0x06GOTO C007

C004: MOVWF R1LMOVLW 0x03GOTO C007

C005: MOVWF R1LMOVLW 0x04GOTO C007

C006: MOVWF R1LMOVLW 0x01GOTO C007

C007: MOVWF R4LMOVF R1H,WSUBWF R0H,WBTFSS STATUS,ZGOTO C008MOVF R1L,WSUBWF R0L,W

C008: MOVLW 0x04BTFSC STATUS,CMOVLW 0x01BTFSC STATUS,ZMOVLW 0x02ANDWF R4L,WBTFSS STATUS,ZMOVLW 0xFFRETURNEND

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.

96

Page 97: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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 izlazniPORTB = %10101010 ;pocetno stanjeWaitUs 50PORTB = %01010101 ;stanje posle 50usWaitUs 50PORTB = %00000000 ;konacno stanje

ASEMBLER:

R0L EQU 0x20 ;Prvih 12 registara opste namene (od adrese 0x20 doR0H 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 informacijuR2L EQU 0x24 ;o kasnjenju (50 us)R2H EQU 0x25R3L EQU 0x26R3H EQU 0x27R4L EQU 0x28R4H EQU 0x29R5L EQU 0x2AR5H EQU 0x2BBCF PCLATH,3 ;Resetovanje bitova 3 i 4 u PCLATH-uBCF PCLATH,4GOTO L0001ORG 0x0004RETFIE ;Povratak iz prekida

L0001:BSF STATUS,RP0 ;1: TRISB = %00000000 'svi pinovi PORTA B su izlazniCLRF 0x06 ;Brisanje (resetovanje) Porta B koji ima adresu 0x06BCF STATUS,RP0

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

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

;4: WaitUs 50MOVLW 0x32 (0x32=50DEC)MOVWF R4L ;Informacija o kasnjenju se «cuva» u R4LCALL X001 ;Pozivanje rutine koja definise kasnjenje od 50us

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

;6: WaitUs 50 (0x32=50DEC)MOVLW 0x32MOVWF R4L ;Informacija o kasnjenju se «cuva» u R4LCALL X001 ;Pozivanje rutine koja definise kasnjenje od 50us

;7: PORTB = %00000000 'konacno stanje (00000000bin=0x00)CLRF 0x06 ; Brisanje (resetovanje) Porta B

;KRAJ PROGRAMAL0002: 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

97

Page 98: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

SUBWF R4L,FBTFSS STATUS,C ;Test bit C u STATUS, preskoči ako je 1

RETURN ;Povratak iz potprogramaGOTO X002

X002: MOVLW 0x06;Povratak iz potprograma

SUBWF R4L,FBTFSS STATUS,C ;Test bit C u STATUS registru, preskoči ako je 1RETURN ; Povratak iz potprogramaGOTO X002END

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

98

Page 99: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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

99

Page 100: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

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.

100

Page 101: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

8. Literatura

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

101

Page 102: Elektronski fakultet u Nišues.elfak.ni.ac.rs/Files/RProkopovic - PIC Sim IDE.doc · Web viewPIC Simulator IDE je aplikacija koju koriste projektanti u razvoju sistema sa PIC mikrokontro-lerima,

9. CV

Prezime: ProkopovićIme: RankoAdresa stanovanja: Moše Pijade 5/11, Vladičin HanE-mail adresa: [email protected]čno stanje: NeoženjenDatum rođenja: 08.01.1982. godineNacionalnost:Obrazovanje: Gimnazija „Jovan Skerlić“ – Vladičin Han Kompletna ili stepenovana diploma: IV stepenVozačka dozvola: B kategorijaPoznavanje 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žljivostNapomene Nosilac Vukove diplome u osnovnoj i srednjoj

školi.

102