Arkitektur og operativsystem (dArkOS)


Besvarelse af ugeopgave, uge 44

Per Abrahamsen, 20001358, 3,
Søren S Munk, 20001614, 3,
Mads Peter Lindberg, 20001990, 3.

www.daimi.au.dk/~smunk/dArkOS/uge44/


Programmet RCX_Download.c er oversæt og gjort klar til brug. Som UNIX navn på den serielle port brugte vi /dev/ttyd2.

Programmet RCX_Reset.c er blevet oversæt og kørt. RCX'en talte op til 18, bippede 2 gang og sagde wwwaaaaaaa.

Største fælles divisor er inkluderet i et program til RCX:

#include "RCX_RTE.h" int16 gcd(int16 x, int16 y) { while ( x != y ) { if ( x < y ) { y=y-x; } else { x=x-y; } } return x; } void _start(void) { lcd_show_int16(gcd(9,4))\; }
Resultatet var som ventet i LCD.

I rutinen delay.c skal man bruge konstanten: 100, vi har teste med forskellige værdier og fandt at 100 var bedst .

Følgende program får LEGO manden til at gå.

#include "RCX_RTE.h" #define port7_addr 0xffbe #define port7 *((volatile byte *) port7_addr) #define Prgm ! ( port7 & ( 1 << 7 ) ) #define msCount 100 void delay(int16 ms) { int16 i; while( ms > 0){ for(i=0; i<msCount; i++); ms--; } } void Walk() { while( ! Prgm ){ lcd_show_icon(LCD_WALKING); delay(1000); lcd_show_icon(LCD_STANDING); delay(1000); } RCX_Reset(); } void _start(void) { Walk(); }
Her kan I skrive, hvad I ellers har lavet eller fundet ud af.