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.