06. maj 2003 - 21:13Der er
3 kommentarer og 1 løsning
Pascal kode
Hey derude...jeg er i øjeblikket i gang med et projekt i skolen noget elektrinisk, i denne forbindelse har jeg et afsender program som giver med elektroniske del noget at arbejde med. Men eftersom jeg ikke selv programmere men bare låner koden og ikke helt forstår den så ville jeg lige se om der var nogen som kunne skrive kommentar til hvad de forskellige dele af koden gør. Hvis muligt også lige fortælle lidt om NS-diagram, måske lavet et eksempel med koden...
Hvad jeg ved om koden er at den generere et tal til 8 forskellige ID'er som hver tilhøre en kanal hvorefter denne laver det hele om til 2-3 byte og sender det gennem seriel porten...
var ch : char; gemt : array[0..7] of integer; n : Byte;
Procedure send(ID:Byte; vaerdi:integer); var tal, temp, n : Byte; begin tal := (ID AND 7) shl 4; tal := tal OR 128; for n := 1 to 3 do begin temp := (vaerdi shr 8) AND 15; tal := temp or tal; writech(chr(tal)); tal := 0; vaerdi := vaerdi shl 4; end; end; begin clrscr; for n := 0 to 7 do gemt[n] := 2048; randomize; writeln('Random testprogram til simulering af vejrstation......nix pille'); writeln; repeat for n := 0 to 7 do begin gemt[n] := gemt[n] + random(6) - 2; if gemt[n] < 0 then gemt[n] := 2048; if gemt[n] > 4095 then gemt[n] := 2048; send(n, gemt[n]); write(n:3, gemt[n]:5); end; writeln; delay(5000); until keypressed; end.
Der er proceduren 'send'. Den bliver kaldt med parametrene ID (en 8-bit byte) og vaerdi (en mindst 16-bit integer). Den vil afsende 3 8-bit-bytes ved hjælp af operationen 'writech', jeg må antage at 'writech' sender disse data ud af seriel-porten.
Herunder angiver jeg for hver af de 3 bytes hvor hver eneste bit kommer fra. Notationen 'vaerdi.bit5' betyder 'bit5 fra vaerdi' hvor bittene nummereres med bit0 = mindst betydende bit.
I hovedprogrammet arbejdes med 8 parallelle ID'er, fra 0 til 7. Der startes med værdien 2048 for dem allesammen. For hver af de 8 ID'er adderes et tilfældigt tal, hvis resultatet blev negativt eller større end 4095 sættes værdien til 2048. Herefter kaldes 'send' med den aktuelle ID og værdi. Alt dette gentages sandsynligvis hvert 5'te sekund (delay(5000) venter nok 5 sekunder), indtil der trykkes en tilfældig tast på tastaturet (repeat ... until keypressed).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.