Laby2.c
/* Funktioiden prototyypit
*/
/************************************************************************/
/* Asettaa ledin kerrallaan palamaan halutulta riviltä ja sarakkeelta */
void setLed(unsigned char row, unsigned char col);
/* Äänimerkki */
void beep(void);
/* Näyttää virhepisteet näytöllä */
void dspScore(void);
/* Aloittaa uuden pelin */
void startNewGame(void);
/************************************************************************/
/* Pääohjelma
*/
/************************************************************************/
int main(void)
{
PORTA = 0x1F;
// xxx1 1111
DDRA = 0x1F;
// xxxo oooo
PORTB = 0x1F;
// ppp1 1111
DDRB = 0x1F;
// iiio oooo
PORTC = 0x00;
// x000 0000
DDRC = 0x7F;
// xooo oooo
PORTD = 0x78;
// 0ppp pxxx
DDRD = 0x80;
// oiii ixxx
startNewGame(); // Aloitetaan uusi peli
while(1)
{
/* Painettu ylöspäin */
if(UP)
{
_delay_ms(10);
// Kytkin värähtelyn
poistoa
if((row > 0) && (labyrintti[row][col] & MOVE_UP))
// Jos emme ole ylimmällä rivillä ja -
{
// on mahdollista liikkua ylöspäin
row--;
// Vähennetään
riviä (noustaan)
setLed(row,col);
// Uusi ledi palamaan
}
else
// Jos ei ole
mahdollista edetä ylöspäin
{
beep();
// PIIP! ja
+;
// virhepiste
}
while(UP)
// Odotellaan
että nappi
asm("nop");
// päästetään
ylös (askel kerrallaan)
_delay_ms(10);
// Kytkin värähtelyn
poistoa
Sivu 2