Takaisin PIC16F877 sivulle  

TESTIOHJELMA  (kopioi oikealla napilla ja tallenna nimellä jonka pääte on .asm)
Tätä ohjelman pohjaa voi käyttää ihan vapaasti omiin kokeiluihin. Siinä on aika paljon kommentteja ohjelman toiminnasta, ja tarpeellisimmat osat ovat ohjelman alkupuolella, ja varsinainen ohjelma on lopussa. Kun kirjoittaa omaa ohjelmaa voi ne esimerkit sieltä lopusta poistaa. Seuraavassa hiukan mitä tämä tiedosto sisältää.

Ohjelmaa aloitettaessa voidaan käyttää valmista ohjelmointipohjaa joita tulee MPLAB ohjelman mukana. Siitä on hyvä aloittaa, kunhan muistaa ennen aloitusta kopioida se toiselle nimelle. Sen jälkeen sitä voi muokata mielin määrin, jättää jotain osia pois ja lisätä oma ohjelma. Kun sitten jossain vaiheessa huomaa ettei siitä mitään tulekaan, voi aloittaa alusta taas kopioimalla sen tiedoston uudelleen.
Tiedoston alussa siinä on puolipisteellä alkavat rivit joilla ei ole varsinaisen ohjelman kannalta mitään merkitystä. 
Alkuun voi kirjoitella tiedoston nimen, aloituspäivämäärän, ohjelmaversion ja ohjelmoijan tai paremminkin muokkaajan nimen ja yrityksen nimen.
Seuraavaksi vaikka kuvaus ohjelmasta ja siitä mitä sen pitäisi tehdä. Mihin sitä on tarkoitus käyttää yms. huomautuksia.  

Ensimmäinen varsinainen kääntäjäohjelmalle tarkoitettu rivi määrittää prosessoripiirin. ( list   p=16f877 )
Seuraava rivi sisällyttää kääntäjäohjelmalle tiedot jotka on määritetty toisessa tiedostossa ( #include   <p16f877.inc> )
Tiedosto sisältää rekisterien paikat ohjainpiirin muistissa ja niille kaikille nimet ja myös jokaiselle rekisterin bitille nimet. Eikä ainakaan ihan suosiolla ole syytä mennä muuttamaan näitä määrityksiä.
Seuraava rivi määrittää piirin käytetyt ominaisuudet oskillaattorin valvontapiirit ja suojaukset yms.
Jokaiseen väliin kannattaa lisätä omia kommenttejaan ohjelman toiminnasta ja mitä mikin osa tekee. Kunhan muistaa aloittaa jokaisen kommenttirivin puolipisteellä. ;-) Tai kirjoittaa vitsin alkuun ja merkitsee sen että tässä kuuluu nauraa. Se helpottaa huomattavasti ohjelman seuraamista kun sitä seuraavan kerran ihmettelee että miten tuotakin voisi muuttaa paremmaksi. Tai toimintaa toisenlaiseksi.

Ei se ohjelmointi ole lainkaan sen vaikeampaa kuin mikään muukaan. Eikä kannata ottaa ihan kuoleman vakavasti kaikkea mitä jotkut ohjelmoinnin ammattilaiset suustaan päästävät, ohjelmoinnista ja sen tyylistä tai ohjelmointi tavasta. JOSTAIN NUOKIN OVAT ALOITTANEET. Eikä varmaan kukaan vielä ole syntynyt valmiina ohjelmaa kirjoittamaan. 

Tähän väliin suuri totuus: 
JOKAINEN OHJELMA, JOKA TEKEE SEN, MITÄ SEN ODOTETAAN TEKEVÄN, ON OIKEIN KIRJOITETTU. OLI SE SITTEN KIRJOITETTU VAIKKA SORMELLA HIEKKAAN, MILLÄ TAHANSA KIELELLÄ, TAI MERKEILLÄ. JOS SE TOIMII ODOTETULLA TAVALLA, NIIN SE ON OIKEIN. 

Tällä vain halusin sanoa sen että ohjelmoinnissa on monta tapaa ja kieltä joilla voidaan toteuttaa sama lopputulos. Kukaan ei pysty sanomaan että, juuri tämä, tai tuo on se ehdottomasti ainoa ja oikea tapa jolla jokin tehtävä tulee suorittaa. Monesti käy niin että kokeilee jonkun tekemää koodia, jossa muutamaa riviä muuttamalla saisi paremmin toimivan. Mutta, mutta, onko se oikein ?? Silloinhan loukataan tekijänoikeuksia, eli sen koodin kirjoittajan oikeuksia. Tämä kaikki johtaa siihen että pyörä on keksittävä uudelleen joka kerta kun sitä tarvitsee. Kokeiluja se ei haittaa, mutta kaupan olevia ohjelman pätkiä kyllä. 

No tämä meni nyt filosofoinniksi, palataan asiaan.

Tuossa ohjelmassa määritetään seuraavana porteille nimet ja samoin kaikille muuttujille annetaan nimet ja paikka osoitteineen. Kaikkien nimien tulee olla erilaisia, muuten kääntäjä ohjelma lopettaa kääntämisen ja antaa virheilmoituksen, eikä suorita käännöstä loppuun. Ohjelma ei silloin toimisi oikein.

Kun kaikki tarpeelliset määritykset on tehty alkaa ohjelma, ohjelmalaskijan nollauksella ja hyppykäskyllä paikkaan josta itse kirjoitettu ohjelma alkaa.

Seuraavaksi tulee keskeytyksessä suoritettava ohjelman osa. Jossa täytyy tallettaa STATUS ja W-rekisterin tiedot johonkin paikkaan, josta ne noudetaan taas keskeytyksen ohjelman jälkeen ja palataan takaisin siihen kohtaan ohjelmaa jossa keskeytys tapahtui.

Testiohjelmassa tässä välissä on numeroiden ASCII taulukko, jota voidaan käyttää jossain myöhemmin, mutta sillä ei ole mitään käyttöä tässä testiohjelmassa. Sen olisi voinut jättää myös pois, ja ohjelma toimisi siitä huolimatta.

Ohjelma alkaa yleensä rekistereiden sisällön asettamisella. Sillä saavutetaan esimerkiksi se että, releet lähtöportissa ei ole satunnaisessa tilassa, vaan määrätään niille tila, mistä aloitetaan. Samoin määrätään mitkä portit ovat tuloja ja mitkä lähtöjä.

Tässä varmaankin oli tärkeimmät aloitustoimet, seuraavaksi onkin ohjelmassa muutama aliohjelma käsky ja sitten seuraa ohjelmakoodia jota jokainen voi tutkia mielenkiintonsa mukaan, ja keksiä uusia variaatioita valojen vilkutteluun. 

Jossain alempana ovat myös LCD modulin ohjauskäskyt kommentteineen. Samoin ajan kulutukseen tarvittavat silmukat. Olen jotenkin niitä yrittänyt myös kommentoida. Osa koodista on jostain lainattua ja muutettu tähän sopivaksi, omilla kommenteilla.

Tässä on valmis TESTIOHJELMA (voi kopioida oikealla napilla ja tallenna nimellä) jolla voi testata näppäimet ja valot sekä LCD modulin. Ohjelmaan lisätty myös PWM osan kokeilua varten jonkinlainen ohjelman osa. Ohjelmaa voi muuttaa vaikka oman nimensä tulemaan LCD näytölle, tai jotain muuta tekstiä. Testiohjelman voi muuttaa suoraan TXT päätteisestä ASM päätteiseksi, jolloin se sopii suoraan MPLAB ohjelman tiedostoksi, ja sen voi suoraan kääntää ohjelmassa. 
Tuon MPLAB ohjelman saa noudettua Microchip. PIC valmistajan kotisivulta.  Ohjelman käyttö on oma maailmansa johon saa perehtyä ihan omin päin.

Takaisin PIC16F877 sivulle