Laby2.c
Jos emme ole oikeassa reunassa ja -
{
// on mahdollista mennä oikealle
col++;
// Lisätään
saraketta
setLed(row,col);
// Uusi ledi palamaan
}
else
// Jos ei ole
mahdollista mennä oikealle
{
beep();
// PIIP! ja
+;
// virhepiste
}
while(RIGHT)
// Odotellaan että nappi
asm("nop");
// päästetään
ylös (askel kerrallaan)
_delay_ms(10);
// Kytkin värähtelyn
poistoa
}
/* Päästy labyrintin loppuun */
if((row ==0) && (col == 9))
// Ollaanko lopetus pisteessä?
{
dspScore();
// Näytä
virhepisteiden määrä
while(!ANY_KEY)
// Odotellaan ANY KEY:tä
asm("nop");
while(ANY_KEY)
asm("nop");
_delay_ms(10);
startNewGame();
// Uusi peli käyntiin
}
}
}
/************************************************************************/
/* Funktio joka sytyttää yhden ledin kerrallaan näytöllä
*/
/************************************************************************/
void setLed(unsigned char row, unsigned char col)
{
unsigned char mask = 0x01;
//
Apumuuttuja jota tarvitaan -
// rivien ja sarakkeiden käyttöön.
if((row <= 6) && (col <= 9))
// Löytyvätkö
annetut arvot näytöltä?
{
col = 9 - col;
// Sarakkeet ovat "väärinpäin" porteissa, -
// joten joudutaan laskemaan lopusta päin.
COLHIGH |= 0xFF;
// "Sammutetaan" -
COLLOW
|= 0x1F;
// kaikki sarakkeet
ROWS = mask << row;
// Asetetaan haluttu rivi päälle
mask = 0x01;
// Uudelleen asetetaan apumaski.
if(col < 5)
Sivu 4